Вычислить суммарную оценку фигуристов и найти победителя - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с функциями ввода-вывода
    • conio.h для работы с функцией _getch() (получение ввода с клавиатуры)
    • tchar.h для работы с символами широкого диапазона (включая поддержку Unicode)
  2. Определяем переменную N:
    • Значение N определяет количество фигуристов, участвующих в соревнованиях
  3. Определяем структуру rec:
    • Структура содержит поля для имени, страны, баллов за первый и второй туры, а также суммарный балл
  4. Функция fn1():
    • Создает массив структур rec, размер которого определяется переменной N
    • Инициализирует переменную max значением 0 (предполагается, что в первом туре никто не набрал максимальный балл)
    • Использует цикл for для получения данных от каждого фигуриста
    • Выводит таблицу с результатами
    • Вычисляет суммарный балл для каждого фигуриста
    • Находит фигуриста с максимальным суммарным баллом
    • Выводит имя победителя
  5. Главная функция _tmain():
    • Вызывает функцию fn1()
    • Ожидает нажатия клавиши (завершения ввода)
    • Возвращает 0 (код завершения)
  6. Используемые функции:
    • _cputs() для вывода текста на консоль
    • gets_s() для ввода строки (до 255 символов)
    • scanf_s() для ввода целого числа (считывает два числа, второе игнорируется)
    • puts() для вывода текста на консоль
    • printf() для форматированного вывода текста и чисел на консоль
    • _getch() для получения ввода с клавиатуры (до нажатия клавиши Enter)

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы