Разработать программу учета покупок ювелирного магазина - 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); } }
Объяснение кода листинга программы
- В функции объявлен массив объектов типа
shopping
с размеромsize
. - Функция открывает файл
filename.txt
для чтения. - Если файл успешно открыт, то происходит цикл по всем элементам массива
sh
. - В каждой итерации цикла происходит чтение данных из файла в соответствующие поля объекта
sh
. - После окончания цикла, файл закрывается.
- Если файл не удалось открыть, то программа продолжает работу, как будто файл был успешно открыт.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д