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

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

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

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

Задание:

Разработать программу учета покупок ювелирного магазина. данные о покупках хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по стоимости ювелирного изделия.
Листинг программы
  1. #include <iostream>
  2. #include <stdio.h>
  3. const int n = 10;
  4. int size = 0;
  5. typedef struct YuShop{
  6. char name[n];// наименование изделия
  7. double cena;// цена
  8. char prod[n];// продавец
  9. char pokup[n];// покупатель
  10. int data[3];// дата покупки
  11. }SHOP;
  12. SHOP sh[100]; // Оглашение масива структур
  13. void input(int size) {
  14. for(int i = 0; i < size; i++) {
  15. do {
  16. printf("\n№%d Nazvanie tovara: ", i + 1);
  17. scanf("%s", &sh[i].name);
  18. }while(!strcmp(sh[i].name, ""));// выполняется пока строчка не пуста
  19. printf("\nCena: ");
  20. scanf("%lf", &sh[i].cena);
  21. do {
  22. printf("\nProdavec: ");
  23. scanf("%s", &sh[i].prod);
  24. }while(!strcmp(sh[i].prod, ""));
  25. do {
  26. printf("\nPokupatel: ");
  27. scanf("%s", &sh[i].pokup);
  28. }while(!strcmp(sh[i].pokup, ""));
  29. printf("\nDen\' prodagu: ");
  30. scanf("%d", &sh[i].data[0]);
  31. printf("\nMуsac prodagu: ");
  32. scanf("%d", &sh[i].data[1]);
  33. printf("\nGod prodagu: ");
  34. scanf("%d", &sh[i].data[2]);
  35. }
  36. }
  37. void show(int size){
  38. printf("+---------------+--------+---------------+---------------+----------+\n");
  39. printf("+-----Tovar-----+--Cena--+---Prodavec----+---Pokupatel---+---Data---+\n");
  40. printf("+ + + + + +\n");
  41. for(int i = 0; i < size; i++) {
  42. printf("+%-15s|%-8.2lf|%-15s|%-15s|%-2d.%-2d.%-2d +\n",
  43. sh[i].name, sh[i].cena, sh[i].prod, sh[i].pokup, sh[i].data[0], sh[i].data[1], sh[i].data[2]);}
  44. printf("+---------------+--------+---------------+---------------+----------+\n");
  45. }
  46. void sortByPrice(int size) { //Сортировка методом выбора
  47. double tmp;
  48. int i, j, pos;
  49. for(i = 0; i < size; ++i)
  50. {
  51. pos = i;
  52. tmp = sh[i].cena;
  53. for(j = i + 1; j < size; ++j)
  54. {
  55. if (sh[j].cena < tmp)
  56. {
  57. pos = j;
  58. tmp = sh[j].cena;
  59. }
  60. }
  61. sh[pos].cena = sh[i].cena;
  62. sh[i].cena = tmp;
  63. }
  64. }
  65. int main (void){
  66. printf("Skolko adresov budet v strukture? ");
  67. scanf("%d", &size);
  68. input(size);
  69. show(size);
  70. sortByPrice(size);
  71. printf("\n\n Posle sortirovki:\n");
  72. show(size);
  73. getchar ();
  74. getchar ();
  75. return 0;
  76. }

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

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

textual
Листинг программы
  1. void inputFromFile(int size)
  2. {
  3.      FILE *ff;
  4.      ff=fopen("filename.txt","rt");
  5.      if(ff!=NULL)
  6.      {
  7.         for(int i = 0; i < size; i++)
  8.         {
  9.            fscanf(ff,"%s", &sh[i].name);
  10.            fscanf(ff,"%lf", &sh[i].cena);
  11.            fscanf(ff,"%s", &sh[i].prod);
  12.            fscanf(ff,"%s", &sh[i].pokup);
  13.            fscanf(ff,"%d", &sh[i].data[0]);
  14.            fscanf(ff,"%d", &sh[i].data[1]);
  15.            fscanf(ff,"%d", &sh[i].data[2]);  
  16.        }
  17.        fclose(ff);
  18.     }
  19. }

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

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

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы