Не могу отфильтровать в структуре - C (СИ)

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

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

Все привет. Так как я только учусь, прошу помочь с заданием. Звучит оно так:"По каждой игрушке в магазине есть следующая информация: название игрушки, название категории игрушки, стоимость, возрастные границы детей, для которых предназначена игрушка. Ввести информацию по каждой игрушке в магазине. Напечатать информацию о тех игрушках , которые находятся в определенной категории, название которой вводиться с клавиатуры. Общее количество игрушек вводиться с клавиатуры." Вот код :
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. int main(int a)
  5. {
  6. setlocale(LC_ALL, "rus");
  7. printf("Введите общее кол-во игрушек : ");
  8. for(int i=scanf("%d", &a);i!=1;scanf("%d",&a)){
  9. printf("Неверно. Введите целое число"); }
  10. struct toy {
  11. char name[30];
  12. char category[30];
  13. char price[15];
  14. char age[30];
  15. };
  16. struct toy *m[a];
  17. int i=0;
  18. for(i=0;i<a;i++){
  19. m[i] = (struct toy*) malloc(sizeof(struct toy));
  20. }
  21. struct toy t[a];
  22. for(i=0;i<a;i++){
  23. printf("Введите название игрушки : ");
  24. gets(m[i]->name);
  25. printf("Введите категорию игрушки : ");
  26. gets(m[i]->category);
  27. printf("Введите цену : ");
  28. gets(m[i]->price);
  29. printf("Введите возрастные границы детей для которых предназначена игрушка : ");
  30. gets(m[i]->age);
  31. }
  32. char otvet[30];
  33. printf("Вы ввели всё количество игрушек\n");
  34. printf("Введите категории , по которой вам предоставится информация по игрушкам: ");
  35. scanf("%s", &otvet[30]);
  36. for(i=0;i<a;i++){
  37. if(otvet[30]==m[i]->category){
  38. printf("Название игрушки : %s\n Цена игрушки : %s\n Возрастные границы : %s\n---------------------------\n", m[i]->name, m[i]->price, m[i]->age);
  39. }
  40. }
  41. }

Решение задачи: «Не могу отфильтровать в структуре»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define LENGTH 16
  6.  
  7. struct Toy
  8. {
  9.   char name[LENGTH], category[LENGTH], borders[LENGTH];
  10.   unsigned int cost;
  11. };
  12.  
  13. int main()
  14. {
  15.   unsigned int number_of_toys = 0;
  16.   char category[LENGTH];
  17.  
  18.   printf("Number of toys: ");
  19.   scanf("%u", &number_of_toys);
  20.  
  21.   struct Toy *toys = malloc(sizeof(struct Toy) * number_of_toys);
  22.  
  23.   for (size_t i = 0; i < number_of_toys; ++i) {
  24.     printf("Name, category, borders, cost: ");
  25.     scanf("%s%s%s%u", &toys[i].name, &toys[i].category, &toys[i].borders, &toys[i].cost);
  26.   }
  27.  
  28.   printf("Category: ");
  29.   scanf("%s", &category);
  30.  
  31.   printf("Result: \n");
  32.   for (size_t i = 0; i < number_of_toys; ++i)
  33.     if (!strcmp(category, toys[i].category))
  34.       printf("%s %s %s %u \n", toys[i].name, toys[i].category, toys[i].borders, toys[i].cost);
  35. }

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

  1. Подключаются необходимые библиотеки
  2. Определяется длина поля в структуре Toy
  3. Создается структура Toy с полями name, category, borders и cost
  4. Инициализируется переменная number_of_toys, которая будет хранить количество игрушек
  5. Выводится запрос на ввод количества игрушек
  6. Выделяется память под массив структур Toy с помощью malloc
  7. В цикле запрашиваются и сохраняются данные об игрушках
  8. Выводится запрос на ввод категории
  9. В цикле выводятся данные об игрушках, соответствующих введенной категории
  10. Программа заканчивается

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


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

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

12   голосов , оценка 3.833 из 5

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

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

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