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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2012, 20:24   #1
Proskurina
Форумчанин
 
Регистрация: 27.05.2012
Сообщений: 109
По умолчанию переделайте задачу, чтобы она работала через одну процедуру.

Помогите переделать задачу, чтобы она работала через одну процедуру.
Вставить нулевой элемент перед максимальным элементом в одномерном массиве
Код:
uses crt;
const nmax=100;
type mas=array [1..nmax+1] of integer;
var a: mas; n: byte;

procedure Gen(var r: byte; var z: mas);
var i: byte;
begin
repeat
write('Количество элементов, не более ',nmax,', n='); readln(r);
until r in [1..nmax];
for i:=1 to r do
z[i]:=random(199)-99;
end;

procedure Print(r: byte; z: mas);
var i: byte;
begin
for i:=1 to r do
write(z[i]:4);
writeln;
end;

function Imax(r: byte; z: mas): byte;
var i,im: byte;
begin
im:=1;
for i:=2 to r do
if z[i]>z[im] then im:=i;
writeln('Максимальный элемент=',z[im],' под номером ',im);
Imax:=im;
end;

procedure Insert(var r: byte; var z: mas);
var i: byte;
begin
for i:=r downto Imax(r,z) do
z[i+1]:=z[i];
z[i]:=0;
inc(r);
end;

begin
Gen(n,a);
writeln('Исходный массив');
Print(n,a);
writeln('Массив после вставки');
Insert(n,a);
Print(n,a);

end.

Последний раз редактировалось Stilet; 23.11.2012 в 20:32.
Proskurina вне форума Ответить с цитированием
Старый 23.11.2012, 20:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так:
Код:
uses crt;
const nmax=100;
type mas=array [1..nmax+1] of integer;
var a: mas; n: byte;

procedure Gen;
var imax,i: byte;
begin
 repeat
  write('Количество элементов, не более ',nmax,', n='); readln(r);
 until r in [1..nmax];
 imax:=0;
 for i:=1 to r do begin
  z[i]:=random(199)-99;
  if z[i]>z[imax] then imax:=i;
 end;
 for i:=1 to r do write(z[i]:4);writeln;
 for i:=1 to imax do write(z[i]:4); write(0:4);
 for i:=imax to r do write(z[i]:4);writeln;
end;


begin
 Gen(n,a);
 readln;
end.
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 22:45   #3
Proskurina
Форумчанин
 
Регистрация: 27.05.2012
Сообщений: 109
По умолчанию

не работает( а что за процедура gen???
Proskurina вне форума Ответить с цитированием
Старый 23.11.2012, 22:48   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
procedure Gen;
Цитата:
Gen(n,a);
Просто в процедурке параметры не передаёте.
А т.к. у Вас глобальные переменные, то пишите просто
Код:
Gen;
Poma][a вне форума Ответить с цитированием
Старый 23.11.2012, 23:33   #5
Proskurina
Форумчанин
 
Регистрация: 27.05.2012
Сообщений: 109
По умолчанию

можно код???
Proskurina вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить одну задачу по паскалю. она вовсе не сложная, но я не пойму почему моя программа не работает =stay= Паскаль, Turbo Pascal, PascalABC.NET 1 11.12.2011 21:58
Как сделать, чтобы программа работала сразу через 20 сайтов? tima777 Работа с сетью в Delphi 4 13.08.2011 20:48
пграмма совершает аварийное прерывание.как сделать так чтобы она работала нормально? Екатерина3439 Общие вопросы C/C++ 8 24.06.2010 00:27
ПЕРЕДЕЛАЙТЕ ПРОГРАММУ ТАК, ЧТОБЫ ОНА НИКОГДА НЕ ВЫВОДИЛА БОЛЕЕ 10 ЧИСЕЛ В ОДНОЙ СТРОКЕ D_bl_M Общие вопросы C/C++ 6 05.06.2010 06:54
Нужна помощь! Нужно переделать программу написанную на дельфи, чтобы она работала под управлением Vista Karloss Фриланс 5 10.11.2008 17:14