28.12.2010, 19:30 | #1 (permalink) |
Новичок
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите с сортировкой методом пузырька
программа даже не запускается, вот моё решение: 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. |
28.12.2010, 19:30 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Скорее всего проблему будет решать намного легче, если набраться информации отсюда Вычислить методом тарапеции в VBA Интеграл методом прямоугольников Уменьшение оборотов кулера методом переключения Помогите решить методом половинного деления следующие функции |
29.12.2010, 11:38 | #4 (permalink) |
Студент БГПУ
Регистрация: 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. |
29.12.2010, 13:28 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Алгоритм сортировки реализован неправильно, нужно поправить. Есть эталонный алгоритм, можно сравнить и найти разницу.
__________________
Убить всех человеков! |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
30.12.2010, 05:13 | #6 (permalink) |
Студент БГПУ
Регистрация: 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; |
02.01.2011, 16:21 | #7 (permalink) |
Новичок
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
ооооо, работает, спасибо!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|