• Язык программирования Си !
    Написать программу для работы с массивом структур . Программа требует:
    1. Создайте шаблон структуры с полями, которые соответствуют предметной области задачи.
    2. Определите тип конструкции.
    3. Определите размер массива из пяти элементов, каждый из которых является определенной структурой.

    Программа должна выполнять следующие функции:
    1. Ввод данных структуры с клавиатуры.
    2. выполнение работы с массивом конструкций в соответствии с требованиями задачи.
    3. вывод результата на экран, при необходимости, в виде таблицы.

    Данные внутри структуры должны совпадать с темой задачи:
    1. Опишите структуру с именем PRICE, содержащее следующие поля:
    • Наименование продукта;
    • Наименование магазина, в котором продаются товары;
    • Стоимость товара .

    2. Напишите программу, которая выполняет следующие действия:
    • ввод данных с клавиатуры в массив из 5 структур типа PRICE;
    • Организовывать записи в алфавитном порядке по названиям магазинов;
    • Вывод информации о товарах, продаваемых в магазине, который был введен с клавиатуры; Если элементов нет, отобразите соответствующее сообщение на экране.

Ответы 1

  • Сортировал массив пузырьком (сравнивал первый символ в названии магазина).

    Пробегался циклом через массив и функцией strcmp, сравнивал названия магазинов и строку с названием того магазина, который мы ищем.

    Если вкратце, strcmp возвращает нам -1 когда строка которая передаётся в качестве первого параметра больше, 0 когда они равны (по содержимому тоже), и 1 если строка которая передаётся 2 параметром больше.

    Вот мой вариант:

    #include <stdio.h>

    #include <string.h>

    #include <ctype.h>

    #include <windows.h>

    template <typename T>

    struct PRICE

    {

       char prod_name[20];

       char shop_name[20];

       T price;

    };

    template <typename T>

    void sortByShop(PRICE<T>* arr, int size)

    {

       PRICE<T> tmp;

       bool check=true;

       while(check)

       {

           check=false;

           for(int i=0; i < size-1; ++i)

           {

               if(toupper(arr[i].shop_name[0])>toupper(arr[i+1].shop_name[0]))

               {

                   tmp = arr[i];

                   arr[i]=arr[i+1];

                   arr[i+1]=tmp;

                   check=true;

               }

           }

       }

    }

    template <typename T>

    void show(PRICE<T>* arr, int size)

    {

       for(int i = 0; i < size; ++i)

       {

           printf("shop name -> %s",arr[i].shop_name);

           printf("poduct name -> %s",arr[i].prod_name);

           printf("poduct price -> %d",arr[i].price);

       }

    }

    int main()

    {

       const int size = 5;

       PRICE<double> arr[size];

       for(int i = 0; i < size; ++i)

       {

           printf("Enter shop name -> ");

           scanf("%s",&arr[i].shop_name);

           printf("Enter poduct name -> ");

           scanf("%s",&arr[i].prod_name);

           printf("Enter poduct price -> ");

           scanf("%d",&arr[i].price);

       }

       show(arr,size);

       sortByShop(arr,size);

       printf("Sorted array.");

       show(arr,size);

       char target[20];

       printf("Enter shop name -> ");

       scanf("%s",&target);

       bool check=false;

       for(int i = 0; i < size; ++i)

       {

           if(strcmp(arr[i].shop_name,target)==0)

           {

               printf("Founded products:");

               printf("poduct name -> %s",arr[i].prod_name);

               check=true;

           }

       }

       if(!check) printf("Shop is not founded.");

       system("pause");

    }

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years