Спрограммой по информатике! ( задана последовательность целых чисел(ввод с клавиатуры),количество которых не превосходит 100.требуется расположить элементы последовательности в возрастающем порядке.
var i, j, n, step, t: integer; a: array[1..nm] of integer;
begin Write('Введите количество элементов в массиве: '); Readln(n); Write('Введите элементы массива через пробел '); for i := 1 to n do Read(a[i]); { сортировка методом Шелла } step := n div 2; while step > 0 do begin for j := n - step downto 1 do begin i := j; while i <= n - step do begin if a[i] > a[i + step] then begin t := a[i]; a[i] := a[i + step]; a[i + step] := t end; i := i + step end end; step := step div 2 end; Writeln('*** Отсортированный массив ***'); for i := 1 to n do Write(a[i], ' ') end.
Тестовое решение:
Введите количество элементов в массиве: 15 Введите элементы массива через пробел 15 26 -35 7 0 21 5 9 27 0 -11 26 4 42 -23 *** Отсортированный массив *** -35 -23 -11 0 0 4 5 7 9 15 21 26 26 27 42
Код Pascal1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 const n=100; type arr=array[1..n] of integer; var a:arr; skv:real; i,k,l:integer; procedure print(s:string;a:arr;l:integer); var i:integer; begin writeln(s); write('['); for i:=1 to l-1 do write(a[i],', '); writeln(a[l],']'); end; procedure sort(var a:arr;l:integer); var i,j,t:integer; begin for i:=1 to l-1 do for j:=i to l do if a[j]<a[i] then begin t:=a[j]; a[j]:=a[i]; a[i]:=t; end; end; begin repeat write('Количество элементов массива:'); readln(k); until (k>0) and (k<101); write('Введите массив:'); for i:=1 to k do repeat write('a[',i,']='); readln(a[i]); until (a[i]>-11) and (a[i]<11); print('Оригинальный массив:',a,k); l:=0;skv:=0.0; for i:=1 to k do if a[i]<0 then begin a[i]:=sqr(a[i]); skv:=skv+a[i]; l:=l+1; end else a[i]:=i; print('Полученный массив:',a,k); sort(a,k); print('отсортированный массив:',a,k); writeln('Среднее арифметическое квадратов отрицательных чисел:',skv/l:0:4); readln; end.
Program name;//Имя программы uses crt;//Запуск программы в консольном режиме НЕОБЯЗАТЕЛЬНО var a : Integer; b : Integer; i : Integer; c : Integer; BEGIN //Начало программы write('Введите 1 число: '); readln(a);//Ввод значения первого числа c := b-a-1; write('Введите 2 число: '); readln(b);//Ввод значения второго числа writeln(a, ' ' , b); //Вывод двух чисел writeln(a, ' ' ,a*a,' ' , a*a*a); // Вывод 1 числа, квадрата, куба for i := 1 to b-a-1 do begin a := a + 1; writeln(a, ' ',a*a, ' ', a*a*a); // Вывод всех чисел от a до b end; writeln(b, ' ' ,b*b,' ' , b*b*b);// Вывод 2 числа, квадрата, куба ReadKey; end. //Конец программы
nm = 100;{максимальная длина массива}
var
i, j, n, step, t: integer;
a: array[1..nm] of integer;
begin
Write('Введите количество элементов в массиве: ');
Readln(n);
Write('Введите элементы массива через пробел ');
for i := 1 to n do Read(a[i]);
{ сортировка методом Шелла }
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i] > a[i + step] then begin
t := a[i]; a[i] := a[i + step]; a[i + step] := t
end;
i := i + step
end
end;
step := step div 2
end;
Writeln('*** Отсортированный массив ***');
for i := 1 to n do Write(a[i], ' ')
end.
Тестовое решение:
Введите количество элементов в массиве: 15
Введите элементы массива через пробел 15 26 -35 7 0 21 5 9 27 0 -11 26 4 42 -23
*** Отсортированный массив ***
-35 -23 -11 0 0 4 5 7 9 15 21 26 26 27 42