Неправильно определяются места победителей олимпиады - C (СИ)
Формулировка задачи:
Условие :
Дано : Сведения о результатах проведения
олимпиады по программированию (фамилия
студента, количество решенных задач,
количество набранных баллов).
Вывести : фамилии студентов, занявших призовые
места.
Проблема состоит в том , что 1 место считает нормально а вот 2 и 3 неправильно выводит . Нужно что б выводило хотя бы набранные балы в нужном порядке .
Заранее спасибо .
#include <stdio.h> #include <stdlib.h> #include <conio.h> #define N 3 struct olimpiada { int z,b; char name[15]; }; void input(struct olimpiada *A) { int i; for (i=0; i<N; i++) { printf("vvedit %d name:\n",i+1); scanf("%s",A[i].name); printf("vvedit k-st zadach:"); scanf("%d",&A[i].z); printf("vvedit k-st baliv:"); scanf("%d",&A[i].b); } } void output(struct olimpiada *A) { int i; for (i=0; i<N; i++) { printf("\n%s %d %d \n", A[i].name, A[i].z, A[i].b); } } void search(struct olimpiada *A) { int i, max=0, imax=0, imax2=0, imax3=0, max3=0, max2=0; for(i=0; i<N; i++) { if (A[i].b>max) { max=A[i].b; imax=i; } if(A[i].b>max2 && A[i].b!=max) { max2=A[i].b; imax2=i; } if ((A[i].b>max3) && (A[i].b!=max2) && (A[i].b!=max)) { max3=A[i].b; imax3=i; } } printf("1 place %d\n", max); printf("2 place %d\n", max2); printf("3 place %d\n", max3); } main() { struct olimpiada b[N]; input(b); output(b); search(b); getch(); return 0; }
Решение задачи: «Неправильно определяются места победителей олимпиады»
textual
Листинг программы
if (A[i].b > max1) max1=A[i].b; if (A[i].b > max2 && A[i].b < max1 && A[i].b > max3) max2 = A[i].b. if (A[i].b > max3 && A[i].b < max1 && A[i].b < max2) max3 = A[i].b
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д