Язык программирования Си !Написать программу для работы с массивом структур .

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

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

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

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

Задать свой вопрос
1 ответ

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

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

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

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

include lt;stdio.hgt;

include lt;string.hgt;

include lt;ctype.hgt;

include lt;windows.hgt;

template lt;typename Tgt;

struct PRICE

   char prod_name[20];

   char shop_name[20];

   T price;

;

template lt;typename Tgt;

void sortByShop(PRICElt;Tgt;* arr, int size)

   PRICElt;Tgt; tmp;

   bool check=true;

   while(check)

   

       check=false;

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

       

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

           

               tmp = arr[i];

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

               arr[i+1]=tmp;

               check=true;

           

       

   

template lt;typename Tgt;

void show(PRICElt;Tgt;* arr, int size)

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

   

       printf("\nshop name -gt; %s\n",arr[i].shop_name);

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

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

   

int main()

   const int size = 5;

   PRICElt;doublegt; arr[size];

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

   

       printf("Enter shop name -gt; ");

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

       printf("Enter poduct name -gt; ");

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

       printf("Enter poduct price -gt; ");

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

   

   show(arr,size);

   sortByShop(arr,size);

   printf("\nSorted array.\n");

   show(arr,size);

   char target[20];

   printf("Enter shop name -gt; ");

   scanf("%s",amp;target);

   bool check=false;

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

   

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

       

           printf("\nFounded products:\n");

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

           check=true;

       

   

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

   system("pause");

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт