Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 28.12.2010, 19:30   #1 (permalink)
Major_Pain
Новичок
 
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с сортировкой методом пузырька

Дан массив с (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[i]:=random(100)-50;
end;
for i:=1 to n do
for j:=1 to n do
begin
if c[i]<>0 then
x[j]:=c[i]/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.
Major_Pain вне форума   Ответить с цитированием

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

Скорее всего проблему будет решать намного легче, если набраться информации отсюда

Вычислить методом тарапеции в VBA
Интеграл методом прямоугольников
Уменьшение оборотов кулера методом переключения
Помогите решить методом половинного деления следующие функции

Старый 28.12.2010, 19:39   #2 (permalink)
artos
Member+
 
Регистрация: 08.10.2010
Сообщений: 563
Записей в дневнике: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1337
По умолчанию

Может readln перед end. поставить? А то и выкидывает из проги как будто не запускалась вообще
artos вне форума   Ответить с цитированием
Старый 28.12.2010, 20:09   #3 (permalink)
Major_Pain
Новичок
 
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

не, толку от этого нету, чё-то в сортировке не то, я понять никак не могу(
Major_Pain вне форума   Ответить с цитированием
Старый 29.12.2010, 11:38   #4 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Я вижу решение этой программы так:
Код:
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.
shrek=) вне форума   Ответить с цитированием
Старый 29.12.2010, 13:28   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Алгоритм сортировки реализован неправильно, нужно поправить. Есть эталонный алгоритм, можно сравнить и найти разницу.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.12.2010, 05:13   #6 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Можно использовать вот этот алгоритм:
Код:
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;
shrek=) вне форума   Ответить с цитированием
Старый 02.01.2011, 16:21   #7 (permalink)
Major_Pain
Новичок
 
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ооооо, работает, спасибо!
Major_Pain вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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