27.12.2010, 22:07 | #1 (permalink) |
Новичок
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Сортировка массива
Дан одномерный массив a. Записать в массив z все порядковые номера отрицательных элементов массива a. Затем упорядочить по убыванию элементы массива a, расположенные между первыми двумя отрицательными элементами . Решение:: program c;const n=10; var a:array[1..n] of real; z:array[1..n] of integer; i,j,max1,k:integer; max,t:real; begin for i:=1 to n do begin a[i]:=random(10)-20; end; for i:=1 to n do for j:=1 to n do begin if a[i]<0 then z[j]:=i; k:=z[j]; end; begin max:=-1000; for k:=1 to n do begin if a[k]>max then begin max:=a[k]; max1:=k; end; end; t:=a[max1]; a[max1]:=a[k]; a[k]:=t; end; for k:=1 to n do writeln('t=',t); end. заранее спасбо |
27.12.2010, 22:07 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Пока в вашей теме не появились ответы, можете посмотреть эти Сортировка по алфавиту Сортировка по алфавиту(помогите) Сортировка в Паскале Сортировка в Pascal Сортировка одномерного массива Сортировка одномерного массива-метод выбора и перестановки |
27.12.2010, 23:48 | #2 (permalink) | ||||||||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
[/QUOTE]заранее спасбо[/QUOTE] Незчто. Предлагаю Вам свой вариант программы. Полностью отлаженный. Попробуйте разобраться: Код:
const n=10; var a,z:array[1..n] of Integer; i,j,n_neg,n_b,k1,k2,dummy:integer; BEGIN {Формируем массив а и выводим его на экран} Randomize; for i:=1 to n do begin a[i]:=random(20)-3; write(a[i]:4); end; writeln; writeln; {Считаем число отрицательных элементов и формируем из их номеров массив z, который выводим на экран} n_neg:=0; for i:=1 to n do if a[i]<0 then begin n_neg:=n_neg+1; z[n_neg]:=i; end; for i:=1 to n_neg do write(z[i]:4); writeln; writeln; {Ищем первый и второй отрицательные элементы массива а. Если их нет или таковой всего один - выводим соответствующее сообщение. Если есть по крайней мере два отрицательных элемента - упорядочиваем методом пузырька числа между ними. При этом если отрицательные элементы - соседние, т.е. между ними элементов нет, то выводим сообщение об этом. Результат выводим на экран.} k1:=0; k2:=0; i:=0; repeat i:=i+1; if (a[i]<0) and (k1=0) then k1:=i; if (a[i]<0) and (k1>0) and (i>k1) and (k2=0) then k2:=i; until ((k1>0) and (k2>0)) or (i=n); If (i=n) and (k2=0) then writeln('Only 1 or 0 negative element! Run the program once more!') else begin k1:=k1+1; k2:=k2-1; if k1>k2 then writeln('The array between two first negative elements is empty!') else if k1=k2 then writeln(a[k1]) else begin for i:=1 to k2-k1-1 do for j:=k1 to k2-i do if a[j]<a[j+1] then begin dummy:=a[j]; a[j]:=a[j+1]; a[j+1]:=dummy; end; for i:=k1 to k2 do write(a[i]:4); writeln; end; end; readln; END. |
||||||||
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|