Разработать программу учета покупок ювелирного магазина - 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
. - После окончания цикла, файл закрывается.
- Если файл не удалось открыть, то программа продолжает работу, как будто файл был успешно открыт.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д