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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2009, 15:54   #1
keanemusic
Новичок
Джуниор
 
Регистрация: 08.02.2009
Сообщений: 2
По умолчанию Нужна помощь в Pascal (Алгоритм сортировки)

Задать два массива по 7 символов. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.
Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Буду очень признателен Вам за помощь!
keanemusic вне форума Ответить с цитированием
Старый 08.02.2009, 16:11   #2
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

Код:
program m1;
uses crt;
var ar:array[1..100] of integer;
     br:array[1..100]  of integer;
	  n1:integer;

f:boolean;
procedure vvod( var a:array of integer; n :integer);
var i:integer;
begin
for i :=1 to n do
 readln(a[i]);
end;
procedure vyvod( var b:array of integer; n :integer);
var j:integer;
begin
for j :=1 to n do
 readln(b[j]);
end;
procedure puzyr(var a:array of integer;n:integer);
var tmp:integer;
k,l:integer;
begin
for k:=n-1 downto 1 do {n - размер массива arr[]}
    for l:=1 to k do
        if a[l]<a[l+1] then begin
            tmp:= a[l];
            a[l]:= a[l+1];
            a[l+1]:= tmp;
        end;
for k:=1 to n do
 writeln(a[k]);
end;
procedure vybor(var b:array of integer;n:integer);
var i,j,t:integer;
    max:integer;
	begin
for i := 1 to n - 1 do
begin
  max := i;
  for j := i + 1 to n do
    if b[max] > b[j] then
      max := j;
  t := b[i];
  b[i] := b[max];
  b[max] := t;
end;
for i:=1 to n do
writeln(b[i]);
end;
begin
readln(n1);
writeln('-------------');
vvod(ar,n1);
writeln('-------------');
vvod(br,n1);
writeln('-------------');
puzyr(ar,n1);
writeln('-------------');
vybor(br,n1);
writeln('-------------');
 readln;
end.
код от maladoy
«Я знаю, что ничего не знаю, но многие не знают и этого».
начинающий кодер вне форума Ответить с цитированием
Старый 08.02.2009, 16:29   #3
keanemusic
Новичок
Джуниор
 
Регистрация: 08.02.2009
Сообщений: 2
По умолчанию

А что нужно вписать вместо ('-------------'); ?????
keanemusic вне форума Ответить с цитированием
Старый 08.02.2009, 16:36   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
А что нужно вписать вместо ('-------------'); ?????
Да ничего. Запусти программу и увидишь, то это просто украшение, не нравится убери.
А вот начало немного переделай. Зачем тебе массив размерностью 100 элементов, если у тебя по условию всего 7.
Код:
uses crt;
const n=7;
var ar,br:array[1..n] of integer;
     n1:integer;
puporev вне форума Ответить с цитированием
Старый 08.02.2009, 16:57   #5
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

Цитата:
Зачем тебе массив размерностью 100 элементов, если у тебя по условию всего 7
.


Код:
procedure vvod( var a:array of integer; n :integer);
размер массива задается при вызове процедуры. я так понял!
«Я знаю, что ничего не знаю, но многие не знают и этого».
начинающий кодер вне форума Ответить с цитированием
Старый 08.02.2009, 16:58   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Код:
program project;
uses crt;
const
 n = 7;
type
 x = 1..n;
 data = array [1..n] of integer;
var
 a,b : data;

 procedure enter_array ( var item : data; const n1 : integer );
 var
  i : x;
 begin
   randomize;
   for i:=1 to n do item[i]:=random(50);
 end;

 procedure output_array ( var item : data; const n1: integer );
 var
  k : x;
 begin
   for k:=1 to n1 do write (item[k]:3);
   writeln; writeln
 end;

 procedure sort_choose ( var item : data; const n1 : integer );
 var
  i,j,min : x;
  buf : integer;
 begin
   for i:=1 to n1-1 do
   begin
     min:=i;
     for j:=i+1 to n1 do
      if item[j]<item[min] then min:=j;
     buf:=item[i];
     item[i]:=item[min];
     item[min]:=buf;
     for j:=1 to n1 do write (item[j]:3);
     writeln
   end;
   writeln
 end;

 procedure sort_bubble ( var item : data; const n1 : integer );
 var
  i,k : x;
  buf : integer;
 begin
   for i:=1 to n1-1 do
   begin
     for k:=1 to n1-1 do
      if item[k]<item[k+1] then
      begin
        buf:=item[k];
        item[k]:=item[k+1];
        item[k+1]:=buf
      end;
     for k:=1 to n1 do write (item[k]:3);
     writeln
   end;
   writeln
 end;

begin

  clrscr;
  writeln ('Massiv A:');
  enter_array (a,n);
  output_array (a,n);
  writeln ('------------------------');
  sort_choose (a,n);
  output_array (a,n);
  writeln ('------------------------');

  writeln ('Massiv B:');
  enter_array (b,n);
  output_array (b,n);
  writeln ('------------------------');
  sort_choose (b,n);
  output_array (b,n);
  writeln ('------------------------');

  writeln ('Bubble sort: ');
  writeln ('Massiv A:');
  sort_bubble (a,n);
  output_array (a,n);
  writeln ('------------------------');
  writeln ('Massiv B:');
  sort_bubble (b,n);
  output_array (b,n);
  writeln ('------------------------');
  readln

end.
capta1n вне форума Ответить с цитированием
Старый 08.02.2009, 17:01   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

только сортировки используйте поочереди - экрана консоли не хватает, чтобы весь текст воспроизвести - закомментите например вот так как я:

Код:
begin

  clrscr;
  {writeln ('Massiv A:');}
  enter_array (a,n);
  {output_array (a,n);
  writeln ('------------------------');
  sort_choose (a,n);
  output_array (a,n);
  writeln ('------------------------');}

  {writeln ('Massiv B:'); }
  enter_array (b,n);
  {output_array (b,n);
  writeln ('------------------------');
  sort_choose (b,n);
  output_array (b,n);
  writeln ('------------------------');}

  writeln ('Bubble sort: ');
  writeln ('Massiv A:');
  sort_bubble (a,n);
  output_array (a,n);
  writeln ('------------------------');
  writeln ('Massiv B:');
  sort_bubble (b,n);
  output_array (b,n);
  writeln ('------------------------');
  readln

end.
сам в шоке от того, что паскаль не хочет все показывать - всю стадию работы программы
capta1n вне форума Ответить с цитированием
Старый 08.02.2009, 17:21   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
размер массива задается при вызове процедуры. я так понял!
А понимать не надо, надо условие читать.
Цитата:
Задать два массива по 7 символов.
puporev вне форума Ответить с цитированием
Старый 08.02.2009, 17:26   #9
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

Цитата:
Изменить программу так, чтобы задавались массивы произвольного размера.
но это тоже присутствует в условии!!!
«Я знаю, что ничего не знаю, но многие не знают и этого».
начинающий кодер вне форума Ответить с цитированием
Старый 08.02.2009, 17:37   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
но это тоже присутствует в условии!!!
Извини, друг. Вроде в очках сижу, но плохо вижу.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в задачах Pascal. Fox91 Помощь студентам 9 06.12.2009 17:24
Помогите пожалуйста в Pascal (Алгоритм сортировки) JayDe Помощь студентам 3 29.01.2009 19:13
Нужна помощь Pascal SweetOpium Помощь студентам 13 28.05.2008 18:11
Нужна помощь(Разработать алгоритм, нарисовать его блок-схему.) miron Помощь студентам 4 26.02.2008 12:08