Не могу отфильтровать в структуре - 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);
}

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

  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
Похожие ответы