• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с сортировкой методом пузырька

Major_Pain

Ученик
Регистрация
27 Дек 2010
Сообщения
9
Реакции
0
Баллы
0
Помогите с сортировкой методом пузырька

Дан массив с (n) .Переписать в мас¬сив х ненулевые элементы массива с раз¬деленные на 5. Затем упорядочить методом «пузырька» по воз¬растанию новый массив.

программа даже не запускается, вот моё решение:
program o;const n=10; var
c:array[1..n] of real;
x:array[1..n] of real;
i,j,l,s:integer; f:boolean; t:real;
begin
randomize;
for i:=1 to n do
begin
for i:=1 to n do
c:=random(100)-50;
end;
for i:=1 to n do
for j:=1 to n do
begin
if c<>0 then
x[j]:=c/5;
end;
for j:=1 to n do
s:=0;
begin
if x[j]=x[j] then s:=s+1; end;
writeln('s=',s);
repeat
f:=true;
for j:=1 to n-1 do
begin
if x[j]<x[j+1] then
begin
t:=x[j];
x[j]:=x[j+1];
x[j+1]:=t;
f:=false;
for j:=1 to n do
writeln('x[j]=',x[j]);
end; end;
until f=true;

end.
 
Может readln перед end. поставить? А то и выкидывает из проги как будто не запускалась вообще
 
не, толку от этого нету, чё-то в сортировке не то, я понять никак не могу(
 
Я вижу решение этой программы так:
Код:
const n=10;
var
c:array[1..n] of integer;
x:array[1..n] of real;
i,j,s:integer;
l:real;
begin
randomize;
for i:=1 to n do begin
c[i]:=random(10);
end;
s:=0;
for i:=1 to n do
begin
if c[i]<>0 then begin
s:=s+1;
x[s]:=c[i]/5;
end;
end;
for i:=1 to s-1 do begin
for j:=i to s do
if x[i]>=x[j] then begin
l:=x[i];
x[i]:=x[j];
x[j]:=l;
end;
end;
for i:=1 to s do
writeln (x[i]:4:1);
readln
end.
 
Алгоритм сортировки реализован неправильно, нужно поправить. Есть эталонный алгоритм, можно сравнить и найти разницу.
 
Можно использовать вот этот алгоритм:
Код:
for i:=1 to s-1 do 
    for j:=i+1 to s do 
      if a[i]>a[j] then 
        begin
          l:=a[i]; 
          a[i]:=a[j]; 
          a[j]:=l;
        end;
 
ооооо, работает, спасибо!
 
Назад
Сверху