Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Метод пузырька.

Автор: pabota 28.12.2006 23:35

В чем ошибка?
Формирование их простых чисел здесь нет, пока не вставил, но код уже написал для проверки чисел. А вот упорядочить не получается.
Ваш фак читал, делал и с ним, все равно ерунда получаеться не выводит, как надо.
---
Дан массив Y, состоящий из М целых чисел (0<M<=10; -1000<y[i]<1000).Сформировать массив из элементов, являющихся простыми числами и упорядочить полученный массив по возрастанию методом “пузырька”.

var
y:array of extended;
i,j, m: integer;
Tmp : Double;
begin
writeln('Vvedite kolichestvo celix cisel v promegitke ot 1 do 10');
readln(m);
If (m<0)or(m>10)then
begin
writeln('Vvedite kolichestvo celix cisel v promegitke ot 1 do 10');
readln(m);
end;
SetLength(y, m);

writeln ('Zapolnenie massiva');
writeln ('Vedite chisla v promegytke ot -1000 do 1000');
for i:= 1 to m do
begin
readln(y[i]);
If (y[i]<-1000)or(y[i]>1000)then
begin
writeln('Vi vveli nevernoe chislo!!! Vedite chisla v promegytke ot -1000 do 1000.');
readln(y[i]);
end;
end;

i:=0;
while i<=m-1 do
begin
j:=0;
while j<=m-2-i do
begin
if Y[j]>Y[j+1] then
begin
Tmp := Y[j];
Y[j] := Y[j+1];
Y[j+1] := Tmp;

writeln('Otsortirovannii massiv metodom pyzirka');
for j:=1 to m do
begin
writeln(Y[j]:0:0);
end;
end;
Inc(j);
end;
Inc(i);
end;

Автор: Айра 29.12.2006 0:05

Цитата
y:array of extended;

А размерность разве не нужна? smile.gif
Могу написать код программы с "пузырьком" если чем-то поможет.

Автор: pabota 29.12.2006 0:11

Цитата(Айра @ 28.12.2006 20:05) *

А размерность разве не нужна? smile.gif
Могу написать код программы с "пузырьком" если чем-то поможет.

А вот эта функция вроде задает ее
SetLength(y, m);
Если время есть свободное, то напишите, буду очень благодарен smile.gif

Автор: Michael_Rybak 29.12.2006 0:27

Цитата(Айра @ 28.12.2006 19:05) *

А размерность разве не нужна? smile.gif


Не нужна no1.gif . Это называется "динамический массив" - массив, длина которого может меняться по ходу.

Автор: мисс_граффити 29.12.2006 0:30

Перенести тему в раздел Delphi?

Автор: pabota 29.12.2006 0:32

Цитата(мисс_граффити @ 28.12.2006 20:30) *

Перенести тему в раздел Delphi?

Вам виднее. smile.gif

Автор: Айра 29.12.2006 0:33

Цитата
SetLength(y, m);

Просто мой компилятор ее не распознал.
Цитата
Не нужна . Это называется "динамический массив" - массив, длина которого может меняться по ходу.

Прошу прощения. unsure.gif Динамические массивы еще не изучала, а комп-ру та запись не понравилась.

А вот программа:

program Sort_puz;
uses wincrt;
const
count=20;
m:array[1..count] of byte=(9,11,12,3,19,1,5,17,10,18,3,19,17,9,12,20,20,19,2,5);
{массив константный для удобства отслеживания всплывания "пузырьков"}
var
i,j,k,l: byte;
a: integer;
begin
for i:=1 to count do write(m[i],' '); writeln;
a:=0;
for i:=2 to count do {сортировка "пузырьков" методом по невозрастанию}
begin
for j:=count downto i do
begin
a:=a+1;
if m[j-1]<m[j] then {если элемент справа больше элемента слева,
то "вытеснить" его влево - пузырек "всплывает"}
begin
k:=m[j-1]; {обмен элементов значениями}
m[j-1]:=m[j];
m[j]:=k;
{печатаем текущее состояние массива после
каждой перестановки, для наглядности}
for l:=1 to count do write(' ',m[l]); writeln;
end;
end;
end;
end.

.

Автор: pabota 29.12.2006 0:35

Айра, спасибо smile.gif

Автор: Айра 29.12.2006 0:40

Цитата(pabota @ 28.12.2006 20:35) *

Айра, спасибо smile.gif


smile.gif

Автор: мисс_граффити 29.12.2006 1:25

Айра, естественно. Эта процедура работала бы в Delphi. Ты же, наверное, пыталась откомпилировать чем-нибудь чисто паскалевским (Турбо Паскаль?), вот он и ругался.

В общем, переношу тему во избежание неясностей.

Автор: Айра 29.12.2006 1:46

Цитата
Эта процедура работала бы в Delphi. Ты же, наверное, пыталась откомпилировать чем-нибудь чисто паскалевским (Турбо Паскаль?), вот он и ругался.

Ты прям ясновидящая smile.gif
В Delphi он не возмущается, научиться бы им нормально пользоваться. unsure.gif