Определить значение переменной s после выполнения следующих операторов, пояснить: s: =0; i: =1; while i> 1 do begin s: =s+1/i; i: =i-1; end; и как правильно написать решение? буду !
Для решения задачи достаточно знать правила работы всех используемых в данном фрагменте операторов. Вначале выполняются присваивания s:=0; i:=1; Затем начинает выполняться цикл, в котором проверяется условие i>1. При подстановке в условие значения i получим 1>1. Это условие не выполняется (выражение имеет значение false), значит не будет выполняться и тело цикла begin s:=s+1/I; i:=i-1; end; Следовательно, значение переменной S останется = 0.
Если элементы массива идут по возрастанию, то вот так
program wstawka; uses crt; const min=1; max=20; type zona=min..max; massiw=array[zona] of integer; var mas:massiw; i,j:zona; a,N,M:integer; T:boolean; BEGIN randomize; clrscr; N:=random(20); writeln('4ucJlo N = ',N); M:=random(20); Writeln('4ucJlo M = ',M); for i:=min to max-2 do begin mas[i+1]:=mas[i]+random(5); write(mas[i],' '); end; for i:=min to max-2 do if (mas[i]>N) and (t=false) then begin t:=true; a:=mas[i]; mas[i]:=N; for j:=i+1 to max do begin N:=mas[j]; mas[j]:=a; a:=N; end; end; for i:=min to max-1 do if (mas[i]>M) and (t=true) then begin t:=false; a:=mas[i]; mas[i]:=M; for j:=i+1 to max do begin M:=mas[j]; mas[j]:=a; a:=M; end; end; writeln; for i:=min to max do write(mas[i],' '); readkey; END.
Вначале выполняются присваивания s:=0; i:=1;
Затем начинает выполняться цикл, в котором проверяется условие i>1. При подстановке в условие значения i получим 1>1. Это условие не выполняется (выражение имеет значение false), значит не будет выполняться и тело цикла begin s:=s+1/I; i:=i-1; end;
Следовательно, значение переменной S останется = 0.