Напишите программу, которая получает CSV файл, описывающий турнирную таблицу для 4 ?

Напишите программу, которая получает CSV файл, описывающий турнирную таблицу для 4 ??оманд (при этом главная диагональ данного файла заполнена нулями). Описание: Если команда 1 выигрывает у команды 2, то в первой строке во втором столбце ставится цифра 3 (команда за победу получает 3 очка), а во второй строке в первом столбце ставится 0 (за поражение команда получает 0 очков; если эти команды играют вничью, то в соответствующих ячейках ставится по 1 (за ничью каждая команда получает по 1 очку). Программа должна подсчитывать итоговый результат команд (сумма очков по строке) и выводить их в последовательности, в которой они прошли чемпионат (сначала номер и количество очков команды-победительницы, затем – команды, занявшей второе место и т. д.). Паскаль.
Гость
Ответ(ы) на вопрос:
Гость
//PascalABC.NET 3.2 сборка 1318 const   n=4; Var   f:file of char;   i,j,counter,FileLen:integer;   s:string;   val:char;   ar:array[1..n] of integer;   coms:array[1..n] of integer;   begin for i:=1 to n do coms[i]:=i; assign(f,'input.csv'); reset(f);i:=1;     //столбец матрицы counter:=1;     //количество прочитанных элементов FileLen:=filesize(f); //количество элементов в файле (включая разделители) read(f,val); //на случай, если первая строка пуста repeat   while (ord(val)<>10) and (ord(val)<>13) do //каждая строка заканчивается символами 10 и 13, а элементы разделяются ;    begin     if (val<>';') and (ord(val)<>10) and (ord(val)<>13) then       begin         ar[i]+=strtoint(val); //вводим значение из ячейки в переменную суммы баллов        read(f,val); //cчитываем следующее значение         inc(counter); //увеличиваем количество прочитанных       end       else         begin           read(f,val);    //пропускаем разделитель           inc(counter);         end;     end;    if (ord(val)=10) and (counter<FileLen) then  //в конце каждой строки стоят символы с кодами 10 и 13, пропускаем их     begin       read(f,val);       inc(counter);     end;    if (ord(val)=13) and (counter<FileLen) then //когда дошли до конца строки     begin       inc(i);        read(f,val);  //читаем с новой строки       inc(counter);     end; until(counter=FileLen); //читаем пока количество элементов в файле не сравняется с количеством прочитанных close(f); for i:=1 to n-1 do    //когда лень писать быструю сортировку   for j:=i+1 to n do     if ar[i]<ar[j] then       begin         counter:=ar[i];         ar[i]:=ar[j];         ar[j]:=counter;         counter:=coms[i];         coms[i]:=coms[j];         coms[j]:=counter;       end; for i:=1 to n do writeln(i,'st place-',coms[i],' command -',ar[i],' points'); end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы