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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2013, 19:14   #1
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию Процедуры

здравствуйте,помогите пожалуйста,я не пойму как правильно ввести процедуру в программу
Код:
program Laba9_1;
uses crt;
var
n,i,j:integer;
a:array[1..10] of integer;
min,imin:integer;
type
mas = array [1..10] of integer;
procedure Vub(A:mas)
var
i,j,n:integer;
begin
min:=a[i];
imin:=i;
for j:=i+1 to n do
if min>a[j] then
begin
min:=a[j];
imin:=j;
end;
a[imin]:=a[i];
a[i]:=min;
for j:=1 to n do
write (a[j],' ');
writeln;
end;
begin
clrscr;
randomize;
writeln('selection sort');
writeln('enter number of components (<=10)') ;
readln(n);
for i:=1 to n do
a[i]:=random(30);
writeln('generated array');
for i:=1 to n do
writeln(a[i],' ');
writeln;
writeln('series of selection');
for i:=1 to n-1 do
procedure Vub(A:mas){как сдесь правильно написать?}
writeln('sorted array');
for i:=1 to n do
write(a[i],' ');
readln;
end.

Последний раз редактировалось lialia; 17.03.2013 в 20:06.
lialia вне форума Ответить с цитированием
Старый 17.03.2013, 19:22   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ух, страшно читать код! Полная неструктурированность, где начало и конец процедур - хрен разберешь.

Потому поясню в общем. Ввести процедуру в код основной программы можно так:

Код:
Procedure Proc1(A: integer); //Вводим код самой процедуры
begin
end;

begin  //основная программа
  ...
  c:=10212;
  Proc1(c);    //вызов процедуры с передачей ей в качестве параметра переменной с
  ...
end.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 17.03.2013, 20:07   #3
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

все время пишет "ошибка в заявлении" на процедуре
Код:
for i:=1 to n-1 do
procedure Vub(A:mas)
writeln('sorted array');
for i:=1 to n do
write(a[i],' ');
readln;
end.
lialia вне форума Ответить с цитированием
Старый 17.03.2013, 20:32   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
procedure Vub(A:mas)
Замените на
Код:
procedure Vub (a);
Poma][a вне форума Ответить с цитированием
Старый 17.03.2013, 21:05   #5
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

спасибо,но теперь требует точку запят.,хотя она есть
lialia вне форума Ответить с цитированием
Старый 17.03.2013, 21:06   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Выложите код
Poma][a вне форума Ответить с цитированием
Старый 17.03.2013, 23:31   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Сравните Ваш код:

Код:
for i:=1 to n-1 do
procedure Vub(A:mas){как сдесь правильно написать?}
и мой пример

Код:
  c:=10212;
  Proc1(c);    //вызов процедуры с передачей ей в качестве параметра переменной с
и найдите различия в вызове процедуры в программе
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.03.2013, 16:02   #8
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

спасибо за помощь
lialia вне форума Ответить с цитированием
Старый 20.03.2013, 18:35   #9
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

подскажите пожалуйста ,может быть я просто процедуру не туда поставила,я сделала как вы говорили,и все равно не работает
lialia вне форума Ответить с цитированием
Старый 20.03.2013, 18:55   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
program Laba9_1;

uses crt;

var
n,i,j:integer;
a:array[1..10] of integer;
min,imin:integer;

type
mas = array [1..10] of integer;

procedure Vub(vаr A:mas)
var i,j,n:integer;
begin
  min:=a[i];
  imin:=i;
  for j:=i+1 to n do
    if min>a[j] then begin
      min:=a[j];
      imin:=j;
    end;
  a[imin]:=a[i];
  a[i]:=min;
  for j:=1 to n do
    write (a[j],' ');
  writeln;
end;

begin
  clrscr;
  randomize;
  writeln('selection sort');
  writeln('enter number of components (<=10)') ;
  readln(n);
  for i:=1 to n do a[i]:=random(30);
  writeln('generated array');
  for i:=1 to n do writeln(a[i],' ');
  writeln;
  writeln('series of selection');
  for i:=1 to n-1 do
  Vub(a){как сдесь правильно написать?}
  writeln('sorted array');
  for i:=1 to n do write(a[i],' ');
  readln;
end.
Еще бы знать, что должна делать программа. Похоже на сортировку или поиск минимального...

Но пока предложил бы так. Обратите внимание на выделенное красным - раз у Вас внутри процедуры исходный массив меняется, то и параметр должен передаваться как var, чтобы внешний массив так же менялся.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение имени процедуры из нутри самой процедуры RISagitov Microsoft Office Excel 8 28.09.2012 17:15
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
закончить выполнение процедуры из тела другой процедуры Alaysor Общие вопросы Delphi 14 23.01.2011 05:26
Управляющие структуры, процедуры Function и процедуры Sub Natalo4ka Помощь студентам 0 17.05.2010 22:00
Запуск процедуры из процедуры с дополнением 1sal1 Общие вопросы Delphi 3 06.10.2008 21:54