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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2015, 17:13   #1
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию Сортировка вставками

Разбираю сортировку вставками. Скажите, а почему не выполняется программа, когда количество символов (n) более трёх? И зачем проверять вот это условие: j>0(в каких случаях это выполняется?) Помогите, если знаете. А вот сама сортировка:
Код:
program SOrt;
type
   DataItem = char;
   DataArray = array [1..80] of DataItem;

var
   i, count: integer;
   mas: DataArray;

{ сортировка вставкой }
procedure Inser(var item: DataArray; count:integer);
var
  i, j: integer;
  x: DataItem;
begin
  for i := 2 to count do
    begin
      x := item[i];
      j := i-1;
      while (x<item[j]) and (j>0) do
      begin
        item[j+1] := item[j];
        j := j-1;
      end;
      item[j+1] := x;

    end;
      writeln('результирующий массив');
   for i := 1 to count do 
      write(mas[i], ', ');
end;  { конец сортировки вставкой }

begin
   writeln('введите количество символов');
   readln(count);
   i := 0;
   for i := 1 to count do 
   begin
      write(i,'i=');
      
      readln(mas[i]);
      
   end;
   
   Inser(mas, count);
   
end.
Asya7 вне форума Ответить с цитированием
Старый 06.09.2015, 17:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
зачем проверять вот это условие: j>0
Потому что j это индекс массива. А у тебя массив описано как [1..80], т.е. элемента с номером 0 или меньше быть не может.
Цитата:
почему не выполняется программа, когда количество символов (n) более трёх?
А как ты это проверил? Отладку конечно же не делал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.09.2015, 17:37   #3
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как ты это проверил? Отладку конечно же не делал?
Проверка была. Когда вводишь значений >3, то выходит ошибка: SortVstavka.pas(20) : Ошибка времени выполнения: Индекс выходит за границы массива
Asya7 вне форума Ответить с цитированием
Старый 06.09.2015, 18:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Оттрассируй программу, и посмотри хотя бы на каком операторе ошибка.
Трассировать то умеешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.09.2015, 18:07   #5
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Трассировать то умеешь?
Наверное это очень плохо, но не умею. Сейчас буду узнавать что это такое и как делается. Спасибо!
Asya7 вне форума Ответить с цитированием
Старый 06.09.2015, 18:28   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Asya7 Посмотреть сообщение
Наверное это очень плохо, но не умею. Сейчас буду узнавать что это такое и как делается. Спасибо!
Да блин, сколько можно носом тыкать как котят. Вот здесь большенство методов сортитровки. Или я так и помру, а вы будете искать и не найдёте .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.09.2015, 18:28   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Нажимаешь F8 - Делфи проводит отладку построчно. Мышкой наводишь курсор на переменные и смотришь подсказки - там будут их значения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.09.2015, 18:30   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нажимаешь F8 - Делфи проводит отладку построчно. Мышкой наводишь курсор на переменные и смотришь подсказки - там будут их значения.
Ха-ха-ха. Прикалываешься? Он вчера только мышку увидел и то в погребе .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.09.2015, 18:36   #9
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию

Stilet, Теперь понятно, что это пошаговое выполнение, но проблема не решилась... Там столько много всего написано, что для меня разобраться в этом вызывает некоторые трудности. Но всё равно спасибо - теперь знаю, что такое "трассировка".
Asya7 вне форума Ответить с цитированием
Старый 06.09.2015, 18:40   #10
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Бакнелл Джулиан - Фундаментальные алгоритмы и структуры данных в Delphi
читай, там всё доступно расписано
P. s. может того, одну тему под все вопросы по одной теме? захламляет же форум
GreenWizard вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка вставками(Си) Sterben Помощь студентам 5 26.04.2015 00:05
Сортировка вставками HailMe Паскаль, Turbo Pascal, PascalABC.NET 0 30.09.2013 06:11
Сортировка-ВСТАВКАМИ sher_man Помощь студентам 0 15.04.2011 08:03
Сортировка вставками blind0482 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.12.2009 13:15
Сортировка вставками Pti44ka Помощь студентам 3 17.11.2009 16:49