Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 27.03.2012, 23:10   #1 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Сделайте, пожалуйста, сортировку пузырьковым методом по возрастанию

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

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.
kostyawasd вне форума   Ответить с цитированием

Старый 27.03.2012, 23:10
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Если обратить внимание на похожие темы, то процесс решения вашей проблемы должен пойти быстрее

Вычислить методом тарапеции в VBA
Сделайте печатную плату
Определение плана продаж игровым методом

Старый 27.03.2012, 23:42   #2 (permalink)
ai-zer
Member
 
Регистрация: 15.02.2012
Сообщений: 97
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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;

если это паскаль Примеры реализации сортировки пузырьком — Викиучебник
ai-zer вне форума   Ответить с цитированием
Старый 27.03.2012, 23:58   #3 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от ai-zer Посмотреть сообщение
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   #4 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

забыл, надо только 3й столбик отсортировать
kostyawasd вне форума   Ответить с цитированием
Старый 28.03.2012, 10:06   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.03.2012, 13:15   #6 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В массиве c[1..5,1..5], заполненном случайным образом, найдите сумму главной и побочной диагоналей, если эти суммы равны, то элементы большие 3 замените на 3, иначе эти элементы заменить на 0 и напечатать новый массив. Отсортируйте третий столбец пузырьковым методом по возрастанию.
kostyawasd вне форума   Ответить с цитированием
Старый 28.03.2012, 13:17   #7 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ещё такая проблемка, когда создаётся второй массив, получается так што последняя строчка массива заменяется на строчку одного и тогоже случайного числа, не понимаю из за чего...
kostyawasd вне форума   Ответить с цитированием
Старый 28.03.2012, 14:42   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от kostyawasd Посмотреть сообщение
ещё такая проблемка, когда создаётся второй массив, получается так што последняя строчка массива заменяется на строчку одного и тогоже случайного числа, не понимаю из за чего...
Да уж... Ну тут:
Цитата:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.03.2012, 22:22   #9 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

не сортируется ничего
kostyawasd вне форума   Ответить с цитированием
Старый 28.03.2012, 22:29   #10 (permalink)
kostyawasd
Новичок
 
Регистрация: 27.03.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.