Не могу отфильтровать в структуре - C (СИ)
Формулировка задачи:
Все привет. Так как я только учусь, прошу помочь с заданием. Звучит оно так:"По каждой игрушке в магазине есть следующая информация: название игрушки, название категории игрушки, стоимость, возрастные границы детей, для которых предназначена игрушка. Ввести информацию по каждой игрушке в магазине. Напечатать информацию о тех игрушках , которые находятся в определенной категории, название которой вводиться с клавиатуры. Общее количество игрушек вводиться с клавиатуры." Вот код :
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int a) { setlocale(LC_ALL, "rus"); printf("Введите общее кол-во игрушек : "); for(int i=scanf("%d", &a);i!=1;scanf("%d",&a)){ printf("Неверно. Введите целое число"); } struct toy { char name[30]; char category[30]; char price[15]; char age[30]; }; struct toy *m[a]; int i=0; for(i=0;i<a;i++){ m[i] = (struct toy*) malloc(sizeof(struct toy)); } struct toy t[a]; for(i=0;i<a;i++){ printf("Введите название игрушки : "); gets(m[i]->name); printf("Введите категорию игрушки : "); gets(m[i]->category); printf("Введите цену : "); gets(m[i]->price); printf("Введите возрастные границы детей для которых предназначена игрушка : "); gets(m[i]->age); } char otvet[30]; printf("Вы ввели всё количество игрушек\n"); printf("Введите категории , по которой вам предоставится информация по игрушкам: "); scanf("%s", &otvet[30]); for(i=0;i<a;i++){ if(otvet[30]==m[i]->category){ printf("Название игрушки : %s\n Цена игрушки : %s\n Возрастные границы : %s\n---------------------------\n", m[i]->name, m[i]->price, m[i]->age); } } }
Решение задачи: «Не могу отфильтровать в структуре»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #define LENGTH 16 struct Toy { char name[LENGTH], category[LENGTH], borders[LENGTH]; unsigned int cost; }; int main() { unsigned int number_of_toys = 0; char category[LENGTH]; printf("Number of toys: "); scanf("%u", &number_of_toys); struct Toy *toys = malloc(sizeof(struct Toy) * number_of_toys); for (size_t i = 0; i < number_of_toys; ++i) { printf("Name, category, borders, cost: "); scanf("%s%s%s%u", &toys[i].name, &toys[i].category, &toys[i].borders, &toys[i].cost); } printf("Category: "); scanf("%s", &category); printf("Result: \n"); for (size_t i = 0; i < number_of_toys; ++i) if (!strcmp(category, toys[i].category)) printf("%s %s %s %u \n", toys[i].name, toys[i].category, toys[i].borders, toys[i].cost); }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки
- Определяется длина поля в структуре Toy
- Создается структура Toy с полями name, category, borders и cost
- Инициализируется переменная number_of_toys, которая будет хранить количество игрушек
- Выводится запрос на ввод количества игрушек
- Выделяется память под массив структур Toy с помощью malloc
- В цикле запрашиваются и сохраняются данные об игрушках
- Выводится запрос на ввод категории
- В цикле выводятся данные об игрушках, соответствующих введенной категории
- Программа заканчивается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д