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

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

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

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

Программа выводит результат бесконечное число раз. Не ясна причина

  • Автор темы Автор темы IvaIlga
  • Дата начала Дата начала

IvaIlga

Новые
Регистрация
11 Ноя 2010
Сообщения
11
Реакции
0
Баллы
0
Программа выводит результат бесконечное число раз. Не ясна причина

Здравствуйте! я написала программу сортировки одномерного массива простым обменом. Проверила в ее работоспособности, массив выводится в правильной последовательности чисел,но бесконечное число раз. Буду рада,если Вы покажете причину и дадите совет,как устранить проблему (или сами поправите код с комментарием).Привожу саму программу:
Код:
program sortirovka1;
uses crt;
var
a: array [0..99] of integer;
i, j,n,k,x,f,g: integer;
begin
clrscr;
writeln('Danna programma sortiryet massiv prostum obmenom.');
writeln('******************************');
writeln('Vvedite chislo zifr massiva n=');
readln(n);
randomize;
for i:=1 to n do
a[i]:=random(10);
for i:=1 to n do
begin
for i:=1 to n do
inc(k);
for i:=1 to n do
write(a[i]);
writeln;
{-- algoritm sortirovki --}
for i:=n downto 2 do
    for j:=1 to i-1 do
      if a[j]>a[j+1]
        then
          begin
            f:=a[j];
            a[j]:=a[j+1];
            a[j+1]:=f;
          end;
end;
writeln('Otsortirovannui massiv: ');
while (i<n) and (i>0) do
{-- for i:=n downto 1 do--}
write(a[i]);
readln;
end.
 
А вы i увеличивать не пробовали? Иногда помогает :))
 
AlexZir, попробовала увеличить. Но зацикливание все равно происходит:
Здесь есть кака-то ошибка?
Код:
i := 0;
while i < n do begin
  if i > 0 then Write(', ');
  Write(a[i]);
  Inc(i);
end;
 
Здравствуйте! я написала программу сортировки одномерного массива простым обменом. Проверила в ее работоспособности, массив выводится в правильной последовательности чисел,но бесконечное число раз. Буду рада,если Вы покажете причину и дадите совет,как устранить проблему (или сами поправите код с комментарием).
Да, девушка - что-то Вы тут по части циклов накрутили немыслимое. Зачем-то сортировку затолкали в цикл, да еще и двойной, да и вывод почему-то усложненный... Собственно, исправил одну ошибку (младший индекс массива вы объявили 0, а циклы строите от 1 - исправил), а в остальном редактирование свелось просто к удалению этих лишних циклов. Пожалуйста:
Код:
uses crt;
var
 a:array [1..99] of integer;
 i,j,n,f: integer;
begin
 clrscr;
 writeln('Danna programma sortiryet massiv prostum obmenom.');
 writeln('******************************');
 write('Vvedite chislo zifr massiva n= ');
 readln(n);
 randomize;

 for i:=1 to n do
  begin
   a[i]:=random(10);
   write(a[i]:2);
  end;

 writeln;

{-- algoritm sortirovki --}
 for i:=n downto 2 do
  for j:=1 to i-1 do
   if a[j]>a[j+1] then
    begin
     f:=a[j];
     a[j]:=a[j+1];
     a[j+1]:=f;
    end;

 writeln('Otsortirovannui massiv: ');

 for i:=1 to n do
  write(a[i]:2);
 readln;
end.
 
Vladimir_S, спасибо за оптимизацию и исправление программы!
Дело в том,что я с недавних пор серьезно взялась за изучение этой дисциплины и пишу код,как получается. Мне пока что хоть как-нибудь разбираться в заданиях и,чтобы сама могла составить программу :)
 
IvalIga
Не пытайтесь сразу писать программу, сначала дискретизируйте задание, разбейте его на шаги, потом посмотрите, как более оптимально можно реализовать каждый шаг, составьте математическую модель задания, попытайтесь составить алгоритм, проверьте его правильность и непротиворечивость, только потом принимайтесь за программу на языке программирования.
 
Назад
Сверху