Паскаль. дана строка. в конце каждого слова добавить "! " начало, чтобы было таким: var a: string; i,k: integer; begin writeln('введи строку: '); readln(a); for i: = 1 to length(a) do if a[i]
Var a:string; i,k:integer; begin writeln('введи строку:'); readln(a); for i:= 1 to length(a) do if (a[i]=' ') and (k=0) then begin insert('!',a,i); k:=1; end else k:=0; insert('!',a,length(a)+1); writeln(a); end. //k выступает в программе в роли переключателя, после того как пробел считывается происходит ошибка: этот пробел начинает считываться бесконечно, поэтому нам необходимо пропустить один символ (тот самый пробел)
1. const n=20; var a:array[1..n] of integer; max,imax,i,j,t:integer; begin Randomize; Writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' ') end; Writeln; max:=a[1]; imax:=1; for i:=2 to n do if a[i]>max then begin max:=a[i]; imax:=i; end; writeln('max = ',max); for i:=1 to imax-1 do for j:=1 to imax-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; Writeln('Отсортированный массив:'); for i:=1 to n do Write(a[i],' '); Writeln; end.
2. const n=20; var a:array[1..n] of integer; min,imin,i,j,t:integer; begin Randomize; Writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' '); end; Writeln; min:=a[1]; imin:=1; for i:=2 to n do if a[i]<min then begin min:=a[i]; imin:=i; end; writeln('min = ',min); for i:=1 to n-imin-1 do for j:=imin to n-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; Writeln('Отсортированный массив:'); for i:=1 to n do Write(a[i],' '); Writeln; end.
3. const n=20; var a:array[1..n] of integer; max,imax,min,imin,i,j,t:integer; begin Randomize; Writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' ') end; Writeln; max:=a[1]; imax:=1; min:=a[1]; imin:=1; for i:=2 to n do begin if a[i]>max then begin max:=a[i]; imax:=i; end; if a[i]<min then begin min:=a[i]; imin:=i; end; end; writeln('max = ',max,' min = ',min); if imax>imin then begin for i:=1 to imax-imin-1 do for j:=imin to imax-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end end else begin for i:=1 to imin-imax-1 do for j:=imax to imin-i do if a[j]<a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; end; Writeln('Отсортированный массив:'); for i:=1 to n do Write(a[i],' '); Writeln; end.
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018 Внимание! Если программа не работает, обновите версию!
procedure BubbleSort(a:array of integer; descending:Boolean:=False; // нужна ли сортировка по невозрастанию u:integer:=-1; // начальный индекс v:integer:=-1); // конечный индекс // Простая пузырьковая сортировка элементов с индексами с u по v begin // обеспечим корректность параметров u и v if u<0 then u:=0; var n:=a.Length; if (v<0) or (v>=n) then v:=n-1; if u>v then Swap(u,v) else if u=v then Exit; // собственно, сортировка if descending then begin // по невозрастанию for var i:=v-1 downto u do for var j:=u to i do if a[j]<a[j+1] then Swap(a[j],a[j+1]) end else begin for var i:=v-1 downto u do // по неубыванию for var j:=u to i do if a[j]>a[j+1] then Swap(a[j],a[j+1]) end end;
begin Write(': '); var a:=ArrRandom; a.Println; var (imin,imax):=(a.IndexMin,a.IndexMax); var b:=Copy(a); Write('1: '); BubbleSort(b,False,0,imax); b.Println; b:=Copy(a); Write('2: '); BubbleSort(b,False,imin); b.Println; b:=Copy(a); Write('3: '); BubbleSort(b,True,imax,imin); b.Println end.