Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Сделайте, пожалуйста, сортировку пузырьковым методом по возрастанию (http://www.tehnari.ru/f43/t71162/)

kostyawasd 27.03.2012 23:10

Сделайте, пожалуйста, сортировку пузырьковым методом по возрастанию
 
завтра сдать надо
сделайте пожалуйста сортировку пузырьковым методом по возростанию

program A1;
const n=5;
var a:array[1..n,1..n] of integer;
m:array[1..n] of integer;
i,j,sg,sp,t:integer;
p:boolean;
begin
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(5);
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
writeln;
sg:=0;
sp:=0;
for i:=1 to n do
begin
sg:=sg+a[i,i];
sp:=sp+a[i,n-i+1];
end;
writeln(sg);
writeln(sp);
if sg=sp then
begin
for i:=1 to n do
for j:=1 to n do
if a[i,j]>3 then
a[i,j]:=3;
end
else
begin
for i:=1 to n do
for j:=1 to n do
if a[i,j]>3 then a[i,j]:=0;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;

begin
for j:=1 to n do
begin
m[3]:=a[1,3];
for i:=2 to n do
if a[i,3]>m[3]
then m[3]:=a[i,3];
write(m[3]:3);
end;
writeln;
repeat
p:=true;
for j:=1 to n-1 do
begin
if m[j]>m[j+1] then
begin
p:= false;
t:= m[j];
m[j]:=m[j+1];
m[j+1]:=t;
for i:= 1 to n do
begin
t:=a[i,j];
a[i,j]:=a[i,j+1];
a[i,j+1]:=t;
end;
end;
end;
until p;
writeln;
for i:=1 to n do
begin
for j:= 1 to n do
write(a[i,j]:3);
writeln;
end;
end;
readln;
end.:tehnari_ru_837::tehnari_ru_837:

ai-zer 27.03.2012 23:42

for i:=n-1 downto 1 do {n - размер массива M[]}
for j:=1 to i do
if M[j]>M[j+1] then
begin
tmp:= M[j];
M[j]:= M[j+1];
M[j+1]:= tmp;
end;
write('вывод значений M[]: ');
for i:=1 to n do
write(M[i]:4);
writeln;
Усовершенствованный алгоритм сортировки пузырьком:
P:=True; {есть перестановка?}
K:=1; {Номер просмотра}
While P Do
Begin
P:=false;
For i:=1 To n-k Do
If X[i] > X[i+1] Then
Begin
A:=X[i];
X[i]:=X[i+1];
X[i+1]:=A;
P:=true;
End;
k:=k+1;
End;

если это паскаль Примеры реализации сортировки пузырьком — Викиучебник

kostyawasd 27.03.2012 23:58

Цитата:

Сообщение от ai-zer (Сообщение 708051)
for i:=n-1 downto 1 do {n - размер массива M[]}
for j:=1 to i do
if M[j]>M[j+1] then
begin
tmp:= M[j];
M[j]:= M[j+1];
M[j+1]:= tmp;
end;
write('вывод значений M[]: ');
for i:=1 to n do
write(M[i]:4);
writeln;
Усовершенствованный алгоритм сортировки пузырьком:
P:=True; {есть перестановка?}
K:=1; {Номер просмотра}
While P Do
Begin
P:=false;
For i:=1 To n-k Do
If X[i] > X[i+1] Then
Begin
A:=X[i];
X[i]:=X[i+1];
X[i+1]:=A;
P:=true;
End;
k:=k+1;
End;

если это паскаль Примеры реализации сортировки пузырьком — Викиучебник

мне бы уже скомпанованную программу
я уже делал по этому алгоритму, либо не работает, либо ошибку выдаёт

kostyawasd 27.03.2012 23:59

забыл, надо только 3й столбик отсортировать

Vladimir_S 28.03.2012 10:06

Цитата:

Сообщение от kostyawasd (Сообщение 708060)
мне бы уже скомпанованную программу

Тогда, пожалуйста, - ПОЛНУЮ и подробную формулировку задания. Безо всяких "ах да, забыл...".

kostyawasd 28.03.2012 13:15

В массиве c[1..5,1..5], заполненном случайным образом, найдите сумму главной и побочной диагоналей, если эти суммы равны, то элементы большие 3 замените на 3, иначе эти элементы заменить на 0 и напечатать новый массив. Отсортируйте третий столбец пузырьковым методом по возрастанию.

kostyawasd 28.03.2012 13:17

ещё такая проблемка, когда создаётся второй массив, получается так што последняя строчка массива заменяется на строчку одного и тогоже случайного числа, не понимаю из за чего...

Vladimir_S 28.03.2012 14:42

Цитата:

Сообщение от kostyawasd (Сообщение 708257)
ещё такая проблемка, когда создаётся второй массив, получается так што последняя строчка массива заменяется на строчку одного и тогоже случайного числа, не понимаю из за чего...

Да уж... Ну тут:
Цитата:

for j:=1 to n do
begin
m[3]:=a[1,3];
for i:=2 to n do
if a[i,3]>m[3]
then m[3]:=a[i,3];
write(m[3]:3);
end;
Вы чего-то такого накрутили, что без русского допинга не разобрать... Да и с пузырьком что-то мало понятное. В общем, вот работающий код:
Код:

const
 n=5;
var
 a:array[1..n,1..n] of integer;
 i,j,sg,sp,t:integer;

begin
 randomize;
 for i:=1 to n do
  for j:=1 to n do
  a[i,j]:=random(5);
 for i:=1 to n do
  begin
  for j:=1 to n do
    write(a[i,j]:3);
  writeln;
  end;
 writeln;
 sg:=0;
 sp:=0;
 for i:=1 to n do
  begin
  sg:=sg+a[i,i];
  sp:=sp+a[i,n-i+1];
  end;
 writeln('sg= ',sg);
 writeln('sp= ',sp);
 writeln;

 for i:=1 to n do
  for j:=1 to n do
  if a[i,j]>3 then
    begin
    if sg=sp then a[i,j]:=3 else a[i,j]:=0;
    end;

 for i:=1 to n do
  begin
  for j:=1 to n do
    write(a[i,j]:3);
  writeln;
  end;
 writeln;

 for i:=1 to n do
  for j:=1 to n-i do
  if a[j,3]>a[j+1,3] then
    begin
    t:=a[j,3];
    a[j,3]:=a[j+1,3];
    a[j+1,3]:=t;
    end;

 for i:=1 to n do
  begin
  for j:=1 to n do
    write(a[i,j]:3);
  writeln;
  end;
 readln
end.


kostyawasd 28.03.2012 22:22

не сортируется ничего:tehnari_ru_121:

kostyawasd 28.03.2012 22:29

и элементы не заменяются, но это не важо
напишите ктонибудь рабочий пузырьковый метод, яуже дофига разных перепробовал, не работают


Часовой пояс GMT +4, время: 00:25.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.