Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2009, 20:53   #1
Patrick
 
Регистрация: 17.09.2009
Сообщений: 9
По умолчанию

найдите код ошибку в коде

Код:
uses crt;
 const n=50;
 var a:array[1..n] of integer;
 t,y,x,i:integer;
  min:integer;
  b:boolean;
  begin
  for i:=1 to n do begin
  a[i]:=random(50)+1;
write(a[i]:4);
   end;

   {сортировка}
  repeat b:=true;

   for i:=1 to n do
     begin
      if a[i]>a[i+1] then
         begin
         y:=a[i];
         a[i]:=a[i+1];
         a[i+1]:=y;
          b:=false;
         end;
      end;
         until b;
    {выводим отсортированный массив}
    writeln;
    write('Отсортированный массив :');
    for i:=1 to n do
    write(a[i]:4);
     end.

Последний раз редактировалось SuperVisor; 29.09.2009 в 12:12.
Patrick вне форума Ответить с цитированием
Старый 28.09.2009, 21:03   #2
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Да вроде работает...Чтобы посмотреть результат сортировки просто добавь readln между этих двух строк
Код:
write(a[i]:4);
readln;
end.
Должен получится следующий код
Код:
const n=50;
var a:array[1..n] of integer;
t,y,x,i:integer;
min:integer;
b:boolean;
begin
for i:=1 to n do begin
a[i]:=random(50)+1;
write(a[i]:4);
end;

{сортировка}
repeat b:=true;

for i:=1 to n do
begin
if a[i]>a[i+1] then
begin
y:=a[i];
a[i]:=a[i+1];
a[i+1]:=y;
b:=false;
end;
end;
until b;
{выводим отсортированный массив}
writeln;
write('Sortirovka :');
for i:=1 to n do
write(a[i]:4);
readln;
end.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 28.09.2009, 21:44   #3
Patrick
 
Регистрация: 17.09.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от .Phoenix Посмотреть сообщение
Да вроде работает...Чтобы посмотреть результат сортировки просто добавь readln между этих двух строк
Код:
write(a[i]:4);
readln;
end.
Должен получится следующий код
Код:
const n=50;
var a:array[1..n] of integer;
t,y,x,i:integer;
min:integer;
b:boolean;
begin
for i:=1 to n do begin
a[i]:=random(50)+1;
write(a[i]:4);
end;

{сортировка}
repeat b:=true;

for i:=1 to n do
begin
if a[i]>a[i+1] then
begin
y:=a[i];
a[i]:=a[i+1];
a[i+1]:=y;
b:=false;
end;
end;
until b;
{выводим отсортированный массив}
writeln;
write('Sortirovka :');
for i:=1 to n do
write(a[i]:4);
readln;
end.
нее,не работает
Patrick вне форума Ответить с цитированием
Старый 28.09.2009, 22:16   #4
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Странно...вынужден задать глупый вопрос, ты хоть пишешь полностью типо:
Код:
program Z1;
.....
Я щас проверял у меня показывает сортировку...На чем именно компилятор указывает ошибку?
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 29.09.2009, 00:40   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) ошибка вот здесь:
Код:
    for i := 1 to n do
    begin
      if a[i] > a[i + 1] then
когда i будет равным n какой элемент массива с каким будет сравниваться?
a[n] > a[n+1] ?! выход за пределы массива со всеми вытекающими последствиями ;(
правильно цикл крутить до n-1:
Код:
    for i := 1 to n-1 do
    begin
      if a[i] > a[i + 1] then


2) учитесь пользоваться тегом CODE (кнопка #)
так лучше?
Код:
const n = 50;
var a: array[1..n] of integer;
  t, y, x, i: integer;
  min: integer;
  b: boolean;
begin
  for i := 1 to n do begin
    a[i] := random(50) + 1;
    write(a[i]: 4);
  end;

  {сортировка}
  repeat b := true;

    for i := 1 to n-1 do
    begin
      if a[i] > a[i + 1] then
      begin
        y := a[i];
        a[i] := a[i + 1];
        a[i + 1] := y;
        b := false;
      end;
    end;
  until b;
  
  {выводим отсортированный массив}
  writeln;
  write('Sortirovka :');
  for i := 1 to n do
    write(a[i]: 4);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16