Структуры: известен рост каждого из 25 учеников класса - C (СИ)
Формулировка задачи:
Известен рост каждого из 25 учеников класса. Ни одна пара учеников не имеет одинакового роста.
а) Определить фамилии самого высокого и самого низкого учеников класса.
б) Определить фамилии двух учеников, являющихся самыми высокими, без учета самого высокого ученика класса.
в) Определить фамилии двух учеников, являющихся самыми высокими в классе, не используя при этом два оператора цикла (два прохода по массиву).
В пункте 'а' я не знаю как мне вывести именно фамилию учеников,а не просто самый высокий и низкий рост. Остальные пункты я вообще не знаю как мне сделать, помогите решить.
#include <stdio.h> #include <conio.h> #include <string.h> #define n 25 int main() { int i=0,k=0,min=0,max=0,niskiy=0, vysokiy=0; struct uch { char family[10]; int rost } u; struct uch com[n]; printf("\n VVedite informaziy ob uchaschihsy \n"); for (i=0;i<n;i++) { printf("\n family, rost : "); scanf("%s%d",&u.family,&u.rost); com[i]=u; } min=com[i].rost; max=com[i].rost; for (i=0;i<n;i++){ if(com[i].rost<min) { min=com[i].rost; niskiy=i; } else if(com[i].rost>max) { max=com[i].rost; vysokiy=i; } } printf("%Samyi niskiy %d\nSamyi vysokiy %d", niskiy, vysokiy ); getch(); return 0; }
Решение задачи: «Структуры: известен рост каждого из 25 учеников класса»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> #define n 25 int main() { int i=0,k=0,min=0,max=0,vysokiy=0,niskiy=0; struct uch { char family[10]; int rost } u; struct uch com[n]; printf("\n VVedite informaziy ob uchsschihsy \n"); for (i=0;i<n;i++) { printf("\n family, rost : "); scanf("%s%d",&u.family,&u.rost); com[i]=u; } min = com[0].rost; niskiy = 0; max = com[0].rost; vysokiy = 0; for (i=0;i<n;i++) { if(com[i].rost<min) { min=com[i].rost; niskiy=i; } else if(com[i].rost>max) { max=com[i].rost; vysokiy=i; } } printf("\nSamyi niskyi\n"); puts(com[niskiy].family); printf("Samyi vysokiy\n"); puts(com[vysokiy].family); //пукт б) int imax2 = -1, imax3 = -1; for (i=0;i<n;i++) { if (com[vysokiy].rost != com[i].rost && imax2 == -1) imax2 = i; if (imax2 != -1 && com[vysokiy].rost != com[i].rost && com[imax2].rost < com[i].rost) imax2 = i; } for (i=0;i<n;i++) { if (com[vysokiy].rost != com[i].rost && com[imax2].rost != com[i].rost && imax3 == -1) imax3 = i; if (imax3 != -1 && com[vysokiy].rost != com[i].rost && com[imax2].rost != com[i].rost && com[imax3].rost < com[i].rost) imax3 = i; } printf("\nPunkt b)\n\nVysokiy 2\n"); puts(com[imax2].family); printf("Vysokiy 3\n"); puts(com[imax3].family); //пункт в) imax2 = -1; imax3 = -1; for (i=0;i<n;i++) { if (com[vysokiy].rost != com[i].rost && imax2 == -1) imax2 = i; if (imax2 != -1 && com[vysokiy].rost != com[i].rost && com[imax2].rost < com[i].rost) imax2 = i; if (imax2 != -1) { if (com[vysokiy].rost != com[i].rost && com[imax2].rost > com[i].rost && imax3 == -1) imax3 = i; if (imax3 != -1 && com[vysokiy].rost != com[i].rost && com[imax2].rost > com[i].rost && com[imax3].rost < com[i].rost) imax3 = i; } } printf("\nPunkt c\n\nVysokiy 2\n"); puts(com[imax2].family); printf("Vysokiy 3\n"); puts(com[imax3].family); getch(); return 0; }
Объяснение кода листинга программы
Структура данных уч
(uch) содержит два поля: family
(фамилия) и rost
(рост). Переменные min
, max
, vysokiy
и niskiy
используются для поиска трех учеников с наибольшим и наименьшим ростом.
Список действий:
- Создаются переменные
i
,k
,min
,max
,vysokiy
иniskiy
, а также структура данныхuch
и массив структурcom
. - Задается вопрос
Введите информацию об учениках
и считывается информация о каждом ученике. - Находится ученик с наименьшим ростом и заносится в переменную
niskiy
. - Находится ученик с наибольшим ростом и заносится в переменную
vysokiy
. - Находится второй ученик с наибольшим ростом и заносится в переменную
imax2
. - Находится третий ученик с наибольшим ростом и заносится в переменную
imax3
. - Выводятся на экран фамилия ученика с наименьшим ростом, затем фамилия ученика с наибольшим ростом, затем фамилия второго ученика с наибольшим ростом.
- Выводится информация о трех учениках с наибольшим и наименьшим ростом.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д