Важная информация
Показано с 1 по 9 из 9

Тема: Алгоритмы сортировки.

  1. #1 Алгоритмы сортировки. 
    Новичок
    Регистрация
    02.12.2011
    Сообщений
    15
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Первый столбик матрицы, в котором все числа находятся в диапазоне 5-10 (простыми вставками по возрастанию).
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Вот. Сортировка первого столбца матрицы методов вставок. Сначала столбец забивается случайными числами от 5, до 10. Потом сортируется.
    Исходный и полученный столбец выводятся на экран, если вывод не нужен, то можете его убрать. Вроде работает верно =)
    Код pascal:
    Var
        Arr: Array [1..10, 1..10] Of Word;
        I, J, Z, X: Word;
    Begin
        Randomize;
        For J:= 1 To 10 Do Begin
            Arr[1, J]:= Random(6) + 5;
            Write(Arr[1, J], ' ');
        End;
        WriteLn;
        For Z:= 1 To 11 Do Begin
            X:= Z;
            While (X > 0) And (Arr[1, X - 1] > Arr[1, X]) Do Begin
                I:= Arr[1, X];
                Arr[1, X]:= Arr[1, X - 1];
                Arr[1, X - 1]:= I;
                Dec(X);
            End;
        End;
     
        For J:= 1 To 10 Do Begin
            Write(Arr[1, J], ' ');
        End;
        ReadLn;
    End.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  3. #3  
    Новичок
    Регистрация
    02.12.2011
    Сообщений
    15
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Ошибка выход за границы диапазона
    Ответить с цитированием  
     

  4. #4  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Да, да, да, май бэд
    Замените строку For Z:= 1 To 11 Do Begin на строку For Z:= 1 To 10 Do Begin
    А строку While (X > 0) And (Arr[1, X - 1] > Arr[1, X]) Do Begin на строку While (X > 1) And (Arr[1, X - 1] > Arr[1, X]) Do Begin
    Дружба-магия-радость!
    Ответить с цитированием  
     

  5. #5  
    Новичок
    Регистрация
    02.12.2011
    Сообщений
    15
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Var
    Arr: Array [1..5, 1..5] Of Word;
    I, J, Z, X:integer;
    Begin
    Randomize;
    For J:= 1 To 10 Do Begin
    Arr[1, J]:= Random(6) + 5;
    Write(Arr[1, J], ' ');
    End;
    WriteLn;
    For Z:= 1 To 10 Do Begin
    X:= Z;
    While (X > 1) And (Arr[1, X - 1] > Arr[1, X]) Do Begin
    I:= Arr[1, X];
    Arr[1, X]:= Arr[1, X - 1];
    Arr[1, X - 1]:= I;
    Dec(X);
    End;
    End;
    For J:= 1 To 10 Do Begin
    Write(Arr[1, J], ' ');
    End;
    ReadLn;
    End.
    все еще ошибка
    Ответить с цитированием  
     

  6. #6  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Странно. У меня (стандартный Turbo Pascal 7.0) все работает хорошо. При этом, установлена директива {$R+}, тоесть, по ходу выполнения программы никаких выходов за границы диапазона точно не происходит.
    Какой вообще паскаль? Мб Pascal ABC?
    Дружба-магия-радость!
    Ответить с цитированием  
     

  7. #7  
    Новичок
    Регистрация
    02.12.2011
    Сообщений
    15
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    ну да, паскаль АВС)
    Ответить с цитированием  
     

  8. #8  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Все ясно
    Если вам нужна матрица строго размером 5x5 (вы заменили размерность, а я заметил только сейчас), то исправьте везде в циклах 10 на 5. Тоесть, обе строки For J:= 1 To 10 Do Begin станут For J:= 1 To 5 Do Begin
    For Z:= 1 To 10 Do Begin станет For Z:= 1 To 5 Do Begin

    Вообще, мне следовало завести константы размерности матрицы. Ну, уже пусть будет как есть.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  9. #9  
    Новичок
    Регистрация
    02.12.2011
    Сообщений
    15
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    все ясно,спасибо, очередной раз выручили)
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 3
    Последнее сообщение: 29.11.2010, 02:08
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •