Вмассиве хранится информация о результатах 25 спортсменов, участвовавших в лыжной гонке. российский спортсмен участвовал под номером 4. определить результат спортсмена-победителя гонки и какое место занял российский лыжник.
Const n=25; var a,b:array[1..n] of integer; i,j,t:integer; begin Randomize; writeln('Результаты:'); for i:=1 to n do begin a[i]:=random(31)+10; write(a[i]:3); end; writeln; for i:=1 to n do b[i]:=i; for i:=1 to n-1 do for j:=1 to n-i do if a[b[j]]>a[b[j+1]] then begin t:=b[j]; b[j]:=b[j+1]; b[j+1]:=t; end; writeln('Победитель:'); writeln('min = ',a[b[1]],' его номер = ',b[1]); j:=1; while b[j]<>4 do j:=j+1; writeln('Результат российского лыжника: ', j,' место'); end.
Пример: Результаты: 38 19 22 11 16 40 22 18 21 16 15 33 38 34 39 21 19 10 25 15 40 13 34 27 37 Победитель: min = 10 его номер = 18 Результат российского лыжника: 2 место
PS. Места, которые заняли спортсмены с одинаковыми результатами, в программе будут различны.
Const N = 25; Var t,M:array[1..N] of integer; i,j,Min,k:integer; Begin Randomize; Write('Результаты лыжников:'); For i:= 1 to N do Begin t[i]:=random(151)+50; Write(' ',t[i]) End; WriteLn; For i:= 1 to N do M[i]:=i; For i:= 1 to N do Begin Min:=i; For j:= i+1 to N do if t[M[Min]] > t[M[j]] then Min:=j; k:=M[i]; M[i]:=M[Min]; M[Min]:=k; End; WriteLn('Победный результат: ',t[M[1]]); k:=1; i:=1; While M[i] <> 4 do Begin if t[M[i]] <> t[M[i+1]] then k:=k+1; i:=i+1 End; WriteLn('Российский спортсмен занял место №',k); End.
Пример работы программы:
Результаты лыжников: 149 152 55 91 55 63 162 132 74 101 160 173 72 127 184 120 192 93 181 102 111 183 59 161 139 Победный результат: 55 Российский спортсмен занял место №6
Var s:string; n,k,i:integer; begin for n:=1 to 2 do begin writeln('Введите строку ',n,':'); readln(s); k:=0; for i:=1 to length(s) do begin case s[i] of '[': k:=k+1; ']': k:=k-1; end; end; if k=0 then writeln('В строке ',s,' количество [ и ] одинаково') else writeln('В строке ',s,' количество [ и ] не одинаково'); end; end.
Пример: Введите строку 1: c:=a[imax,j]; a[imax,j]:=a[imin,j]; a[imin,j]:=c В строке c:=a[imax,j]; a[imax,j]:=a[imin,j]; a[imin,j]:=c количество [ и ] одинаково Введите строку 2: Просто [ пример ]] со [[ скобками В строке Просто [ пример ]] со [[ скобками количество [ и ] не одинаково
1. Для цикла For есть решение выложенное выше от Srzontmp.
2. Почти ничего не меня получим код для цикла while: var i, n, k: integer; begin i := 2; readln(n); while i <= n div 2 do begin if (n mod i) = 0 then k := i; i:=i+1; end; writeln('наибольший делитель ', n, ' = ', k); end.
3. Аналогично для цикла Repeat: var i, n, k: integer; begin i := 2; readln(n); repeat if (n mod i) = 0 then k := i; i:=i+1; until i> n div 2; writeln('наибольший делитель ', n, ' = ', k); end.
var a,b:array[1..n] of integer;
i,j,t:integer;
begin
Randomize;
writeln('Результаты:');
for i:=1 to n do
begin
a[i]:=random(31)+10;
write(a[i]:3);
end;
writeln;
for i:=1 to n do b[i]:=i;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[b[j]]>a[b[j+1]] then
begin
t:=b[j]; b[j]:=b[j+1]; b[j+1]:=t;
end;
writeln('Победитель:');
writeln('min = ',a[b[1]],' его номер = ',b[1]);
j:=1;
while b[j]<>4 do j:=j+1;
writeln('Результат российского лыжника: ', j,' место');
end.
Пример:
Результаты:
38 19 22 11 16 40 22 18 21 16 15 33 38 34 39 21 19 10 25 15 40 13 34 27 37
Победитель:
min = 10 его номер = 18
Результат российского лыжника: 2 место
PS. Места, которые заняли спортсмены с одинаковыми результатами, в программе будут различны.