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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2015, 19:27   #1
Yustinka
Новичок
Джуниор
 
Регистрация: 07.06.2015
Сообщений: 6
По умолчанию Помогите, очень срочно.

Выдает ошибку "Неверное число параметров процедуры"

Что делать, подскажите пожалуйста. Задача звучит так: Организовать в динамической памяти стек и очередь с возможностью вставки и удаления данных по ключу. Для этого описать запись, содержащую как минимум два поля: информационное поле и тип указатель. Написать процедуры добавления элементов в стек и очередь, вывода значений на экран, вставки элемента перед или после первого элемента с заданным значением ключевого поля.

Код:
program z114;

type
uk = ^S;
S = record
inf:integer;
next:uk;
end;

Var 
Sp1,Sp2,Sp3:uk;
k,i,n:integer;

//процедура добавления элементов в стеке
procedure VStek (a:integer; var u:uk);
var
x: uk;
begin
new(x);
x^.inf:= a;
x^.next:= u;
u:= x;
end;

//процедура добавления элементов в очереде
procedure VOchered (a:integer; var hv,u:uk);
var
x:uk;
begin
new (x); 
x^.inf:=a;
x^.next:=nil;
if u = nil 
then 
begin
u:=x; 
hv:=x; 
end
else 
begin
hv^.next:=x; 
hv:=x; 
end;
end;

//процедура вывода значений на экран
Procedure VZn (u:uk);
begin
if u=nil then 
begin
Writeln ('Список пуст');
exit;
end
else 
while u<>nil do 
begin
Write (u^.inf, ' ');
u:=u^.next;
end;
end;

//процедура удаления элементов 
Procedure Udalen(b:integer; var u:uk);
var 
x,y:uk; 
z:boolean;
begin
x := u;
while x<>nil do
if x^.inf=b
then 
begin
if x=u then 
begin
u := u^.next;
dispose(x);
x := u; 
z:=true;
end
else 
begin 
y^.next := x^.next;
dispose(x);
x := y^.next; 
z:=true;
end;
end
else 
begin 
y := x;
x := x^.next;
end;
if z=false then 
writeln ('Заданного элемента в списке нет');
end;

begin
readln(n);
for i:=1 to n do
begin
readln(k);
VStek(k,Sp1);
end;
for i:=1 to n do
begin
readln(k);
VOchered(k,Sp2);
end;
readln;
VZn(Sp3);
Udalen(Sp1);
Udalen(Sp2);
end.
Yustinka вне форума Ответить с цитированием
Старый 09.06.2015, 19:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В какой строке ошибка?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.06.2015, 19:33   #3
Yustinka
Новичок
Джуниор
 
Регистрация: 07.06.2015
Сообщений: 6
По умолчанию

for i:=1 to n do
begin
readln(k);
VOchered(k,Sp2);
end;
readln;
VZn(Sp3);
Udalen(Sp1);
Udalen(Sp2);
end.
Yustinka вне форума Ответить с цитированием
Старый 09.06.2015, 19:54   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Смотри процедуру VOchered - там описаны три параметра. Почему при обращении два? По этой же причине ошибка и в двух предпоследних строках
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.06.2015, 20:03   #5
Yustinka
Новичок
Джуниор
 
Регистрация: 07.06.2015
Сообщений: 6
По умолчанию

А вы можете написать как это будет? Очень прошу, пожалуйста. В двух предпоследних исправила, а тут как, понято не могу.

...
begin
readln(n);
for i:=1 to n do
begin
readln(k);
VStek(k,Sp1);
end;
for i:=1 to n do
begin
readln(k);
VOchered(k,Sp2);
end;
readln;
VZn(Sp3);
readln(k);
Udalen(k,Sp1);
Udalen(k,Sp2);
end.

Последний раз редактировалось Yustinka; 09.06.2015 в 23:10.
Yustinka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать програму для роботы с файлами, пожалуйста помогите нужно очень срочно Сергей Человек Фриланс 3 06.07.2009 19:30