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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2013, 17:01   #1
PavelDD
Пользователь
 
Регистрация: 15.02.2013
Сообщений: 35
По умолчанию Визуализация сортировок одномерного массива

Всем доброго времени суток.Пишу с просьбой помочь с визуализацией. Прилагаю код сортировки. Но не могу произвести пошаговой печати построенного массива для простых вставок (т.е. установили элемент на место - напечатали массив; и т.д., снова).Заранее спасибо.

Код:
program vst;
uses crt;
type mas=array[0..1000]of integer;
Var a:mas;
i,j,k,n:integer;
Begin
 clrscr;
 Writeln('Введите размер массива: '); read(n);
 randomize;
 Writeln('Начальный массив:');
 Writeln;
 For i:=1 to n do
 begin
  a[i]:=random(100);
  write(a[i]:4);
 end;
 for i:=2 to n do begin
    k:=a[i];
    j:=i-1;
    while (a[j]>k) and (j>1) do
    begin
     a[j+1]:=a[j];
     j:=j-1;
    end;
    if (a[j]>k) and (j=1) then
    begin
     a[2]:=a[1];
     a[1]:=k;
    end
    else a[j+1]:=k;
 end;
 Writeln;
 Writeln('Конечный массив:');
 Writeln;
 For i :=1 to n do
  write(a[i]:4);
End.
PavelDD вне форума Ответить с цитированием
Старый 15.02.2013, 20:12   #2
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

По моему, вам не ответил потому что не совсем ясно что вы хотите сделать? Вы просто хотите вывести все промежуточные состояния массива от его ввода до получения ответа? сделайте что-то вроде:
Код:
var i1 : integer;
....
....
....
for i:=2 to n do begin
    k:=a[i];
    j:=i-1;
    while (a[j]>k) and (j>1) do
    begin
     a[j+1]:=a[j];
     j:=j-1;
     for i1:=0 to n do write(a[i1],' ');
     writeln;
    end;
    if (a[j]>k) and (j=1) then
    begin
     a[2]:=a[1];
     a[1]:=k;
     for i1:=0 to n do write(a[i1],' ');
     writeln;
    end
    else begin a[j+1]:=k;
       for i1:=0 to n do write(a[i1],' ');
       writeln;
    end; 
 end;
....
....
....
если же нет то растолкуйте подробней
execom вне форума Ответить с цитированием
Старый 15.02.2013, 20:56   #3
PavelDD
Пользователь
 
Регистрация: 15.02.2013
Сообщений: 35
По умолчанию

Спасибо. Теперь все работает. На самом деле я как раз и хотел промежуточные выводы состояния массива. Оно и подразумевает мой нерешенный вопрос. Я просто вместо нового элемента i1 писал i и цикл делал от 1 до n.

Последний раз редактировалось PavelDD; 15.02.2013 в 21:00.
PavelDD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка одномерного массива. С McFrey Помощь студентам 4 01.05.2012 13:38
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
обработка одномерного массива Валюша Общие вопросы C/C++ 8 29.05.2011 12:16
C# - из одномерного массива -> двумерный Vovan_Super Общие вопросы .NET 2 06.07.2010 19:27
Упорядочение одномерного массива. Arzamaks Помощь студентам 4 25.11.2009 09:46