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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2016, 17:56   #1
Jon_Morgan
Пользователь
 
Регистрация: 11.12.2016
Сообщений: 26
По умолчанию подпрограммы (free Packal)

Для каждого из массивов: A из 10 эл., В из 20 эл., С из 12 эл, - произвести перестановку элементов, поменяв порядок их следования на обратный.
использовать процедуры или функции.
Проверьте плиз.
Нельзя ли как-нибудь упростить или укоротить?
Код:
 
program main;
uses crt;
type mass=array[1..20] of integer;
//__Ввод и вывод массива*__
procedure vvod(var m:mass; n:integer);
var i:integer;
begin
for i:=1 to n do begin
m[i]:=random(50);
write (m[i], ' ');
end;
end;
//__ Изменение последовательности__
procedure P (var m:mass; n:integer);
var i,t:integer;
begin
for i:=0 to n-1 do
begin if i<n-i then
begin
t:=m[n-i];
m[n-i]:=m[i+1];
m[i+1]:=t;
end;
write (m[i+1], ' ');
end;
end;
//__Основная программа*__
var A, B, C:mass;
    i, n:integer;
begin
clrscr; randomize;
writeln ('Введите размер массива А');
readln (n);
vvod(A, n);  writeln;
writeln ('Измененный массив A');
P (A, n);
writeln;
writeln ('Введите размер массива В');
readln (n);
vvod (B, n); writeln;
writeln ('Измененный массив B');
P (B, n);
writeln;
writeln ('Введите размер массива С');
readln  (n);
vvod (C, n);  writeln;
writeln ('Измененный массив C');
P (C, n);
readln;
end.
Не знаю как менять последовательность и что использовать процедуру или функцию

Последний раз редактировалось Jon_Morgan; 25.12.2016 в 18:50.
Jon_Morgan вне форума Ответить с цитированием
Старый 26.12.2016, 09:28   #2
iborisov
Пользователь
 
Регистрация: 09.12.2016
Сообщений: 13
По умолчанию

Наверное, для получения правильного результата нужно сделать так:
Код:
for i:=0 to n/2-1 do
iborisov вне форума Ответить с цитированием
Старый 26.12.2016, 10:20   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Возможно так:
Код:
//__ Изменение последовательности__
procedure Revers(var m:mass; n:integer);
var i, t : integer;
begin
   for i:=1 to n DIV 2 do
   begin {Без условных операторов}
      t := m[i];
      m[i] := m[n-i+1];
      m[n-i+1] := t;
   end;
end;
В функциях и процедурах вставлять контрольный вывод можно, но думаю, что лучше это сделать отдельной процедурой.
Например так:
Код:
procedure Print(const m:mass; n:integer);
var i : integer;
begin
   for i := 1 to n DIV 2 do
      write(mass[i]:5);
   writeln();
end;
Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы и подпрограммы / Free Pascal Ksyusha Помощь студентам 1 10.04.2014 20:37
!!!помогите в Packal!!! 311 Помощь студентам 8 31.05.2013 18:14
Packal цыклы lunnamedl Помощь студентам 3 18.12.2009 18:20
Packal sorry HECTOR.A. Помощь студентам 1 08.12.2008 16:49
программа на Packal HECTOR.A. Помощь студентам 1 08.12.2008 16:12