Разработать программу учета покупок ювелирного магазина - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите исправить программу!!!

Задание:

Разработать программу учета покупок ювелирного магазина. данные о покупках хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по стоимости ювелирного изделия.
#include <iostream>
#include <stdio.h>
 
const int n = 10;
int size = 0;
typedef struct YuShop{
        char name[n];// наименование изделия
        double cena;// цена
        char prod[n];// продавец
        char pokup[n];// покупатель
        int data[3];// дата покупки
        }SHOP;
 
SHOP sh[100]; // Оглашение масива структур
 
void input(int size) {
    for(int i = 0; i < size; i++) {
        do {
            printf("\n№%d Nazvanie tovara: ", i + 1);
            scanf("%s", &sh[i].name);
        }while(!strcmp(sh[i].name, ""));// выполняется  пока строчка не пуста
        printf("\nCena: ");
        scanf("%lf", &sh[i].cena);
        do {
            printf("\nProdavec: ");
            scanf("%s", &sh[i].prod);
        }while(!strcmp(sh[i].prod, ""));
        do {
            printf("\nPokupatel: ");
            scanf("%s", &sh[i].pokup);
        }while(!strcmp(sh[i].pokup, ""));
        printf("\nDen\' prodagu: ");
        scanf("%d", &sh[i].data[0]);
        printf("\nMуsac prodagu: ");
        scanf("%d", &sh[i].data[1]);
        printf("\nGod prodagu: ");
        scanf("%d", &sh[i].data[2]);   
    }
}
 
void show(int size){
    printf("+---------------+--------+---------------+---------------+----------+\n");
    printf("+-----Tovar-----+--Cena--+---Prodavec----+---Pokupatel---+---Data---+\n");
    printf("+               +        +               +               +          +\n");
    for(int i = 0; i < size; i++) {
    printf("+%-15s|%-8.2lf|%-15s|%-15s|%-2d.%-2d.%-2d  +\n", 
            sh[i].name, sh[i].cena, sh[i].prod, sh[i].pokup, sh[i].data[0], sh[i].data[1], sh[i].data[2]);}
    printf("+---------------+--------+---------------+---------------+----------+\n");
    }
 
void sortByPrice(int size) { //Сортировка методом выбора
    double tmp;
    int i, j, pos;
    for(i = 0; i < size; ++i) 
    { 
        pos = i; 
        tmp = sh[i].cena;
        for(j = i + 1; j < size; ++j) 
        {
            if (sh[j].cena < tmp) 
            {
               pos = j; 
               tmp = sh[j].cena; 
            }
        }
        sh[pos].cena = sh[i].cena; 
        sh[i].cena = tmp; 
    }      
}  
 
int main (void){
printf("Skolko adresov budet v strukture? ");
scanf("%d", &size);
input(size);
show(size);
sortByPrice(size);
printf("\n\n Posle sortirovki:\n");
show(size);
 
getchar ();
getchar ();
return 0;
}

Как модифицировать данную программу, чтобы данные могли загружаться и считываться с файла?

Решение задачи: «Разработать программу учета покупок ювелирного магазина»

textual
Листинг программы
void inputFromFile(int size) 
{
     FILE *ff;
     ff=fopen("filename.txt","rt");
     if(ff!=NULL)
     {
        for(int i = 0; i < size; i++) 
        {
           fscanf(ff,"%s", &sh[i].name);
           fscanf(ff,"%lf", &sh[i].cena);
           fscanf(ff,"%s", &sh[i].prod);
           fscanf(ff,"%s", &sh[i].pokup);
           fscanf(ff,"%d", &sh[i].data[0]);
           fscanf(ff,"%d", &sh[i].data[1]);
           fscanf(ff,"%d", &sh[i].data[2]);   
       }
       fclose(ff);
    }
}

Объяснение кода листинга программы

  1. В функции объявлен массив объектов типа shopping с размером size.
  2. Функция открывает файл filename.txt для чтения.
  3. Если файл успешно открыт, то происходит цикл по всем элементам массива sh.
  4. В каждой итерации цикла происходит чтение данных из файла в соответствующие поля объекта sh.
  5. После окончания цикла, файл закрывается.
  6. Если файл не удалось открыть, то программа продолжает работу, как будто файл был успешно открыт.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы