Задача 6 Урок 17

Задача 6 урок 17

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

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

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

С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).

Подсказка: Т.е. такая процедура может иметь следующую сигнатуру:

procedure getData(str: string; var name: string; var ball: integer);
program U17Z6;
var name:array [1..3] of string;
    ball:array [1..3] of integer;
    s,str1,str2: string;
    i,p,code,winner:integer;
begin
  writeln('vvedite stroki');
  p:=1;
  while (s<>'end') do
  begin
    readln(s);
    str1:='';
    str2:='';
    for i:= 1 to length(s) do
    begin
      if (s[i]>='0') and (s[i]<='9') then
        str2:=str2+s[i]
      else
        if (s[i]<>' ') then
          str1:=str1+s[i];
    end;
    name[p]:=str1;
    val(str2,ball[p],code);
    p:=p+1;
  end;
  winner:=ball[1];
  for i:=2  to high(ball) do
    if (ball[i]>winner) then
      winner:=ball[i];
    writeln('winner: ',name[i],' ',ball[i]);
  readln();
end.  
vedro-compota's picture

добавить решение с использованием процедуры

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

program U17Z6;
var mname:array [1..3] of string;
    mball:array [1..3] of integer;
    s,n: string;
    i,p,code,winner,b,w:integer;
procedure getData(str: string; var name: string; var ball: integer);
var j: integer;
    sball: string;
begin
  for j:= 1 to length(str) do
  begin
    if (str[j] >= '0') and (str[j] <= '9') then
      sball:= sball+str[j]
    else
      if (str[j] <> ' ') then
        name:= name+s[j];
  end;
  val(sball,ball,code);
  end;
begin
  writeln('vvedite stroki');
  p:=1;
  while (s<>'end') do
  begin
    readln(s);
    n:='';
    getData(s,n,b);
    mname[p]:=n;
    mball[p]:=b;
    p:=p+1;
  end;
  w:=1;
  winner:=mball[1];
  for i:=2  to high(mball) do
  begin
    if (mball[i]>winner) then
      w:=i;
  end;
    writeln('winner: ',mname[w],' ',mball[w]);
  readln();
end.

program U17Z6;
var mname:array [1..3] of string;
    mball:array [1..3] of integer;
    s,n: string;
    i,p,code,winner,b,w:integer;
procedure getData(str: string; var name: string; var ball: integer);
var j: integer;
    sball: string;
begin
  for j:= 1 to length(str) do
  begin
    if (str[j] >= '0') and (str[j] <= '9') then
      sball:= sball+str[j]
    else
      if (str[j] <> ' ') then
        name:= name+s[j];
  end;
  val(sball,ball,code);
  end;
begin
  writeln('vvedite stroki');
  p:=1;
  while (s<>'end') do
  begin
    readln(s);
    mname[p]:='';
    getData(s,mnane[p],mball[p]);
    p:=p+1;
  end;
  w:=1;
  winner:=mball[1];
  for i:=2  to high(mball) do
  begin
    if (mball[i]>winner) then
      w:=i;
  end;
    writeln('winner: ',mname[w],' ',mball[w]);
  readln();
end. 

выдает такую ошибкуЖ
project1.lpr(27,15) Error: Identifier not found "mnane"

выдает и другие ошибки, но из-за этой не хочет даже запускать программу

vedro-compota's picture

project1.lpr(27,15) Error: Identifier not found "mnane"

-- нет такой переменной

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

vedro-compota's picture

решение засчитано

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