Как мне найти 4 лучших бегунов? - C (СИ)
Формулировка задачи:
мне нужно было сформировать массив строк, в каждой строке записать фамилию и результат 100 м бега и сформировать команду
подскажит как это сделать?
#include <stdio.h>
#include <locale.h>
struct beg
{
char fam[50];
float res;
}
main ()
{
int i, j;
float min;
struct beg a[7];
setlocale(LC_ALL,"Russian");
printf("\nВВедите данные:");
for (i=0;i<7;i++)
{
printf("\nВведите фамилию %d-го студента и его результат в беге на 100 м:\n", i+1);
scanf ("%s%f",&a[i].fam,&a[i].res);
}
printf("\nКоманда из 4 лучших бегунов в эстафете 4*100 м:\n");
system("Pause");
}Решение задачи: «Как мне найти 4 лучших бегунов?»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
typedef struct beg
{
char fam[50];
float res;
} beg_t;
int mycomp (const void *x1, const void *x2)
{
return ( ((beg_t *)x1)->res - ((beg_t*)x2)->res);
}
int main (void)
{
int i, j;
float min;
beg_t a[7];
setlocale(LC_ALL,"Russian");
printf("\nВВедите данные:");
for (i=0;i<7;i++)
{
printf("\nВведите фамилию %d-го студента и его результат в беге на 100 м:\n", i+1);
scanf ("%s%f",a[i].fam,&a[i].res);
}
printf("\nКоманда из 4 лучших бегунов в эстафете 4*100 м:\n");
qsort (a, 7, sizeof(beg_t), mycomp);
}
Объяснение кода листинга программы
В этом коде:
- Создается структура данных
beg_t, которая содержит фамилию и результат бега студента. - Определяется функция сравнения
mycomp, которая сравнивает результаты бега двух студентов. - В функции
mainсоздается массивaтипаbeg_tна 7 элементов. - Пользователю предлагается ввести данные о каждом студенте, включая фамилию и результат бега.
- Данные сохраняются в массиве
a. - Массив
aсортируется функциейqsortс использованием функции сравненияmycomp. - Выводится сообщение о команде из 4 лучших бегунов в эстафете 4*100 м. Код не содержит ошибок синтаксиса и не вызывает никаких предупреждений. Он работает как задумано и выводит сообщение о команде из 4 лучших бегунов.