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