Вычислить суммарную оценку фигуристов и найти победителя - C (СИ)
Формулировка задачи:
Задание:
"Соревнования фигуристов. Ввести данные, содержащие фамилию фигуриста, страну, и оценку за обязательные выступления и за произвольную программу. Вычислить суммарную оценку. Найти победителя."
Сделано в паскале:
Помогите пожалуйста перевести это на СИ.
uses crt; const n=10; type rec=record name,str:string; oc1,oc2:integer; sum:integer; end; var x:array[1..n] of rec; i:integer; max:integer; k:string; begin ClrScr; for i:=1 to n do begin Write(' Имя: '); Readln(x[i].name); Write(' Страна: '); Readln(x[i].str); Write(' Оценка1: '); Readln(x[i].oc1); Write(' Оценка2: '); Readln(x[i].oc2); end; Writeln('Table: '); for i:=1 to n do x[i].sum:=x[i].sum+x[i].oc1+x[i].oc2; Writeln('| Имя | Страна | Оценка1 | Оценка2 | Сум |'); for i:=1 to n do Writeln('|',x[i].name:8,'|',x[i].str:11,'|',x[i].oc1:8,'|', x[i].oc2:7,'|',x[i].sum:6,'|'); max:=-1; for i:=1 to n do if x[i].sum>max then begin max:=x[i].sum; k:=x[i].name; end; Writeln(' Победитель: ',k); Readln; end.
Решение задачи: «Вычислить суммарную оценку фигуристов и найти победителя»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <tchar.h> #define N 10 struct rec { char name[256], str[256]; int oc1, oc2; int sum; }; void fn1() { struct rec x[N]; int max = 0; for (int i = 0; i < N; i++) { _cputs(" Name: "); gets_s(x[i].name, 255); _cputs(" Country: "); gets_s(x[i].str, 255); _cputs(" Score1: "); scanf_s("%d%*c", &x[i].oc1); _cputs(" Score2: "); scanf_s("%d%*c", &x[i].oc2); } puts("\nTable: "); puts("| Name | Country | Score1 | Score2 | Sum |"); for (int i = 0; i < N; i++) { x[i].sum = x[i].oc1 + x[i].oc2; if (x[i].sum > x[max].sum) max = i; printf("|%-8s|%-11s|%-8d|%-8d|%-7d|\n", x[i].name, x[i].str, x[i].oc1, x[i].oc2, x[i].sum); } printf("\n Winner: %s", x[max].name); } int _tmain(int argc, _TCHAR* argv[]) { fn1(); _getch(); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с функциями ввода-выводаconio.h
для работы с функцией _getch() (получение ввода с клавиатуры)tchar.h
для работы с символами широкого диапазона (включая поддержку Unicode)
- Определяем переменную N:
- Значение N определяет количество фигуристов, участвующих в соревнованиях
- Определяем структуру rec:
- Структура содержит поля для имени, страны, баллов за первый и второй туры, а также суммарный балл
- Функция fn1():
- Создает массив структур rec, размер которого определяется переменной N
- Инициализирует переменную max значением 0 (предполагается, что в первом туре никто не набрал максимальный балл)
- Использует цикл for для получения данных от каждого фигуриста
- Выводит таблицу с результатами
- Вычисляет суммарный балл для каждого фигуриста
- Находит фигуриста с максимальным суммарным баллом
- Выводит имя победителя
- Главная функция _tmain():
- Вызывает функцию fn1()
- Ожидает нажатия клавиши (завершения ввода)
- Возвращает 0 (код завершения)
- Используемые функции:
- _cputs() для вывода текста на консоль
- gets_s() для ввода строки (до 255 символов)
- scanf_s() для ввода целого числа (считывает два числа, второе игнорируется)
- puts() для вывода текста на консоль
- printf() для форматированного вывода текста и чисел на консоль
- _getch() для получения ввода с клавиатуры (до нажатия клавиши Enter)