Язык программирования Си !Написать программу для работы с массивом структур .
Язык программирования Си !
Написать программку для работы с массивом структур . Программка просит:
1. Сделайте шаблон структуры с полями, которые соответствуют предметной области задачки.
2. Определите тип конструкции.
3. Обусловьте размер массива из 5 элементов, каждый из которых является определенной структурой.
Программка обязана исполнять следующие функции:
1. Ввод данных структуры с клавиатуры.
2. исполненье работы с массивом конструкций в согласовании с требованиями задачки.
3. вывод результата на экран, при необходимости, в виде таблицы.
Данные снутри структуры обязаны совпадать с темой задачки:
1. Опишите структуру с именем PRICE, содержащее последующие поля:
Названье продукта;
Названье магазина, в котором продаются продукты;
Цена товара .
2. Напишите программку, которая выполняет последующие деянья:
ввод данных с клавиатуры в массив из 5 структур типа PRICE;
Организовывать записи в алфавитном порядке по заглавиям магазинов;
Вывод инфы о товарах, продаваемых в магазине, который был введен с клавиатуры; Если частей нет, отобразите соответствующее известье на экране.
Сортировал массив пузырьком (сопоставлял 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");
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.