Задание 6 урок 18

Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):

Вася         485
Коля       555
Юра        61

end // признак завершения ввода
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).
Подсказка: Т.е. такая процедура может иметь следующую сигнатуру:

procedure getData(str: string; var name: string; var ball: integer);

Задание 6 урок 18

type arrStr = array[1..3] of string;
     arrInt = array[1..3] of integer;

var Z,B: arrStr;
    A: arrInt;
    i,k, C:integer;
    S:string;
procedure ResultGame(Z1: string; var Name: string; var ball: integer);
  var count, Code, i: integer;
      Chislo: string;

begin
    Chislo := '';
    Name := '';
    ball := 0;
    count := 0;
    for i := 1 to length(Z1) do
    begin
      if (Z1[i]>= '0') and  (Z1[i]<= '9') then
      begin
        Chislo := Chislo + Z1[i];  //строка значений
        val(Chislo, ball, Code);
      end
      else if (Z1[i] = ' ') then
      begin
        Chislo := '';
      end
      else if (Code <> 0) and (Z1[i] <> ' ') then
      begin
        Name :=  Name + Z1[i];
      end;
    end;
end;

procedure Arrs(Z2: arrStr; var B1: arrStr; var A1: arrInt);

  var i, ball: integer;
      StrName: string;

begin
  StrName := '';
  ball := 0;
  for i := 1 to 3 do
  begin

    ResultGame(Z2[i], StrName, ball);   //вызов процедуры: Результаты

    writeln('Имя: ', StrName, ', счёт: ', ball, ';');
    B1[i] := StrName;
    A1[i] := ball;
  end;
end;

begin              //блок ввода данных участников
  i := 0;
  writeln('vvedite list of members and balls');
  while (S <> 'end') do
  begin
    i:=i +1;
    readln(S);
    if i <= 3 then
      Z[i] := S; //запись строки в массив строк
  end;

  Arrs(Z, B, A);  //вызов процедуры: Запись в массивы

               //Блок определения победителя
  k := 0;      //переменная индексов участников
  C := 0;      //переменная результатов
  for i := 1 to 3 do
  begin
    if A[i] > C then
    begin
      k := i;   //индекс участника с наибольшим  баллом
      C := A[i];
    end;
  end;
  writeln('Winner ', B[k], ', count: ', C);
  readln();
end.  
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)