Задача 5 урок 17
Primary tabs
Задача 5 урок 17
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485 Коля 555 Юра 61 .......... .... end // признак завершения ввода
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
var i, x, n, T, Code, max: integer;
s, k, winner: string;
a: array[1..3] of string;
b: array[1..3] of integer;
begin
n:=1; //индекс массива
while(s<>'end') do
begin
writeln('Enter name and points');
readln(s);
if (s<>'end') then
for i:=1 to length(s) do
begin
if Not((s[i]>='0')and(s[i]<='9')) AND (s[i]<>' ') then
a[n]:=a[n]+s[i] //если не число и не пробел string
else if (s[i]>='0')and(S[i]<='9') then
k:=k+s[i]; //если число сохраняем в string
if i=length(s) then //после последнего символа число(string)
begin
Val(k, T, Code); //преобразуем в integer
b[n] := T;
k:='';
end;
end;
inc(n);
end;
max := b[1];
if max < b[2] then max := b[2]; //определяем максимальный integer
if max < b[3] then max := b[3];
for i:=1 to high(b) do
if b[i]=max then //по индексу integer ищем значение string
winner:=a[i];
writeln('The winner is ',winner,', scores = ',max);
readln();
end.- Log in to post comments
- 3262 reads
vedro-compota
Sun, 09/05/2021 - 12:37
Permalink
разбить на процедуры и
разбить на процедуры и функции
_____________
матфак вгу и остальная классика =)
boris68
Tue, 09/07/2021 - 22:17
Permalink
Исправлено
var i, x, n, max: integer; s, y, winner: string; a: array[1..3] of string; b: array[1..3] of integer; function maximum(b: array of integer): integer; begin max := b[1]; if max < b[2] then max := b[2]; //определяем максимальный integer if max < b[3] then max := b[3]; result:=max; end; procedure recording(s: string; var x: integer; var y: string); var i, T, Code: integer; k: string; begin if (s<>'end') then y:=''; for i:=1 to length(s) do begin if Not((s[i]>='0')and(s[i]<='9')) AND (s[i]<>' ') then y:=y+s[i] //если не число и не пробел string else if (s[i]>='0')and(s[i]<='9') then k:=k+s[i]; //если число сохраняем в string if i=length(s) then //после последнего символа число(string) begin Val(k, T, Code); //преобразуем в integer x := T; k:=''; end; end; end; begin n:=1; //индекс массива while(s<>'end') do begin writeln('Enter name and points'); readln(s); recording(s, x, y); a[n]:=y; b[n]:=x; inc(n); end; for i:=1 to high(b) do if b[i]=maximum(b) then //по индексу integer ищем значение string winner:=a[i]; writeln('The winner is ',winner,', scores = ',max); readln(); end.boris68
Wed, 09/08/2021 - 22:23
Permalink
Вариант с передачей массивов в процедуру
var i, n, max: integer; s, winner: string; a: array[1..3] of string; b: array[1..3] of integer; function maximum(b: array of integer): integer; begin max := b[1]; if max < b[2] then max := b[2]; //определяем максимальный integer if max < b[3] then max := b[3]; result:=max; end; procedure recording(s: string; n: integer; var a: array of string; var b: array of integer); var i, T, Code: integer; k: string; begin if (s<>'end') then for i:=1 to length(s) do begin if Not((s[i]>='0')and(s[i]<='9')) AND (s[i]<>' ') then a[n]:=a[n]+s[i] //если не число и не пробел string else if (s[i]>='0')and(s[i]<='9') then k:=k+s[i]; //если число сохраняем в string if i=length(s) then //после последнего символа число(string) begin Val(k, T, Code); //преобразуем в integer b[n] := T; k:=''; end; end; end; begin n:=0; //индекс массива ПОЧЕМУ РАБОТАЕТ С 0 ??? while (s<>'end') do begin writeln('Enter name and points'); readln(s); recording(s, n, a, b); inc(n); end; //writeln('a[1]= ',a[1]); ДЛЯ ОТЛАДКИ //writeln('b[1]= ',b[1]); //writeln('a[2]= ',a[2]); //writeln('b[2]= ',b[2]); //writeln('a[3]= ',a[3]); //writeln('b[3]= ',b[3]); for i:=1 to high(b) do if b[i]=maximum(b) then //по индексу integer ищем значение string winner:=a[i]; writeln('The winner is ',winner,', scores = ',max); readln(); end.vedro-compota
Tue, 09/14/2021 - 22:31
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)