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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2011, 15:47   #1
Elabrion
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 17
По умолчанию ошибка в модуле. Паскаль

Добрый день! Помогите разобраться в чем ошибка??
Код:
unit podprog;
interface
uses tipu;
         procedure vvod(var n1:integer; var a1:vect; var Q1:text);
         procedure form_2_otr(var c1:vect; a1:vect; k1,n1:integer);
         procedure form_2_pol(var c1:vect; a1:vect; k1,n1:integer);
         procedure upor(var a1:vect; n1:integer);
         procedure zapic_vect(var E1:matr; a1:vect; var p1:integer; n1:integer);
         procedure zapic_matr(var E1:matr; a1:vect; var p1:integer; n1:integer);
         procedure vuvod(p1,n1:integer; e1:matr; var W1:text);
         procedure vuvod(n1:integer; a1:vect; var W1:text);
implementation
procedure vvod(var n1:integer; var a1:vect; var Q1:text);
begin
read(Q,n1);
for i:=1 to n1 do
        read(Q,a1[i]);
end;
procedure form_2_otr(var c1:vect; a1:vect; k1,n1:integer);
begin
for i:=n1 downto 1 do
    if a1[i]<0 then
               begin
               k1:=k1+1;
               c1[k]:=a1[i];
               if k1>=2 then break;
               end
end;
procedure form_2_pol(var c1:vect; a1:vect; k1,n1:integer);
begin
for i:=1 to n1 do
    if a1[i]>0 then
               begin
               k1:=k1+1;
               c1[k]:=a1[i];
               if k1>=4 then break;
               end
end;
procedure upor(var a1:vect; n1:integer);
var z:real; l:integer;
begin
l:=0;
for i:=n1-1 downto 1 do
    for j:=n1 downto i+1 do
        l:=l+1;
        if abs(a[i])>abs(a[j]) then
           begin
           z:=a1[i];
           a1[i]:=a1[j];
           a1[j]:=z;
           end;
        if l>=3 then exit;
end;
procedure zapic_vect(var E1:matr; a1:vect; var p1:integer; n1:integer);
begin
p1:=p1+1;
for i:=1 to n1 do E1[i,p1]:=a1[i];
end;
procedure zapic_matr(var E1:matr; a1:vect; var p1:integer; n1:integer);
var l:real;
begin
p1:=p1+1;
l:=0;
for i:=n1 downto 1 do
    if a[i]>0 then
              begin
              l:=l+1;
              E1[i,p1]:=a1[i];
              if l>=4 then break;
              end;
end;
procedure vuvod(p1,n1:integer; a1:matr; var W1:text);
begin
for i:=1 to n1 do
    begin
    writeln(W1);
    for j:=1 to p1 do
        write(W1,a1[i,j]:4:1);
    end;
end;
procedure vuvod(n1:integer; a1:vect; var W1:text);
begin
for i:=1 to n1 do write(W1,a1[i]:4:1);
end; //ожидалось описание или begin
если поставить begin, то в 10 строчке пишет "отсутствует определение процедуры vuvod".
Elabrion вне форума Ответить с цитированием
Старый 03.12.2011, 22:14   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
         procedure vuvod(p1,n1:integer; e1:matr; var W1:text);
         procedure vuvod(n1:integer; a1:vect; var W1:text);
процедуры с одинаковыми именами должны быть объявлены с директивой overload;. Если ваш Паскаль такой директивы не поддерживает, имена должны быть разными.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.12.2011, 11:12   #3
Elabrion
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 17
По умолчанию

Спасибо, но все равно не помогло. Исправил имена на vuvod_vect и vuvod_matr, но выдает туже ошибку в тойже строке.

Последний раз редактировалось Elabrion; 04.12.2011 в 11:21.
Elabrion вне форума Ответить с цитированием
Старый 04.12.2011, 12:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Спасибо, но все равно не помогло.
Ты невнимательно внял правельному совету.
Тебе четко сказали - изучай директиву overload. Ты что сделал? Втупую прописал ее кое-где?
Короче:
1)
Код:
procedure vuvod(p1,n1:integer; e1:matr; var W1:text); overload;
         procedure vuvod(n1:integer; a1:vect; var W1:text);    overload;
и не забывать указывать шапку этих функций и в разделе реализации:
Код:
procedure vuvod(p1,n1:integer; a1:matr; var W1:text);   overload;
begin
for i:=1 to n1 do
    begin
    writeln(W1);
    for j:=1 to p1 do
        write(W1,a1[i,j]:4:1);
    end;
end;
procedure vuvod(n1:integer; a1:vect; var W1:text);  overload;
begin
for i:=1 to n1 do write(W1,a1[i]:4:1);
end;
2) Куча ошибок по коду:
Возьмем хотя бы это:
Код:
procedure vvod(var n1:integer; var a1:vect; var Q1:text);
begin
read(Q1,n1);
for i:=1 to n1 do
        read(Q,a1[i]);
end;
Счетчик для цикла описывается локально - запомни это или используй while
И что это за Q? Где она описана? в tipu? Тогда почему его не привел сюда?

Ну и так далее по коду ищи жучков подобных.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2011, 14:27   #5
Elabrion
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 17
По умолчанию

все равно не могу понять прицип работы overload! добавил все как ты сказал, теперь Паскаль в строке:
Код:
procedure vuvod(p1,n1:integer; e1:matr; var W1:text); overload;
пишет ошибку "ожидался begin"
Elabrion вне форума Ответить с цитированием
Старый 04.12.2011, 15:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
пишет ошибку "ожидался begin"
Показывай весь код. Кое-где ты видать еще провтыкал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2011, 19:56   #7
Elabrion
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 17
По умолчанию

Код:
unit podprog;
interface
uses tipu;
         procedure vvod(var n1:integer; var a1:vect; var Q1:text);
         procedure form_2_otr(var c1:vect; a1:vect; k1,n1:integer);
         procedure form_2_pol(var c1:vect; a1:vect; k1,n1:integer);
         procedure upor(var a1:vect; n1:integer);
         procedure zapic_vect(var E1:matr; a1:vect; var p1:integer; n1:integer);
         procedure zapic_matr(var E1:matr; a1:vect; var p1:integer; n1:integer);
         procedure vuvod(p1,n1:integer; e1:matr; var W1:text); overload;
         procedure vuvod(n1:integer; a1:vect; var W1:text); overload;
implementation
procedure vvod(var n1:integer; var a1:vect; var Q1:text);
begin
read(Q,n1);
for i:=1 to n1 do
        read(Q,a1[i]);
end;
procedure form_2_otr(var c1:vect; a1:vect; k1,n1:integer);
begin
for i:=n1 downto 1 do
    if a1[i]<0 then
               begin
               k1:=k1+1;
               c1[k]:=a1[i];
               if k1>=2 then break;
               end
end;
procedure form_2_pol(var c1:vect; a1:vect; k1,n1:integer);
begin
for i:=1 to n1 do
    if a1[i]>0 then
               begin
               k1:=k1+1;
               c1[k]:=a1[i];
               if k1>=4 then break;
               end
end;
procedure upor(var a1:vect; n1:integer);
var z:real; l:integer;
begin
l:=0;
for i:=n1-1 downto 1 do
    for j:=n1 downto i+1 do
        l:=l+1;
        if abs(a[i])>abs(a[j]) then
           begin
           z:=a1[i];
           a1[i]:=a1[j];
           a1[j]:=z;
           end;
        if l>=3 then exit;
end;
procedure zapic_vect(var E1:matr; a1:vect; var p1:integer; n1:integer);
begin
p1:=p1+1;
for i:=1 to n1 do E1[i,p1]:=a1[i];
end;
procedure zapic_matr(var E1:matr; a1:vect; var p1:integer; n1:integer);
var l:real;
begin
p1:=p1+1;
l:=0;
for i:=n1 downto 1 do
    if a[i]>0 then
              begin
              l:=l+1;
              E1[i,p1]:=a1[i];
              if l>=4 then break;
              end;
end;
procedure vuvod(p1,n1:integer; a1:matr; var W1:text); overload;
begin 
for i:=1 to n1 do
    begin
    writeln(W1);
    for j:=1 to p1 do
        write(W1,a1[i,j]:4:1);
    end;
end;
procedure vuvod(n1:integer; a1:vect; var W1:text); overload;
begin
for i:=1 to n1 do write(W1,a1[i]:4:1);
end;
begin
Elabrion вне форума Ответить с цитированием
Старый 04.12.2011, 21:00   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
read(Q,n1);
Еще раз найвнимательнейше читай что я писал в посте выше про Q
Пока не исправишь мелкие ошибки - будешь напарываться на разные непонятные зачастую ругательства от компилятора.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, ошибка в модуле Liam_ Помощь студентам 1 13.06.2011 10:29
ошибка в модуле (отсутствует определение процедуры). паскаль. semenova Помощь студентам 7 23.12.2010 23:35
InputQuery в модуле QDialogs _SERGEYX_ Общие вопросы Delphi 2 03.12.2010 17:44
Процедуры в модуле Pascal n0rma1 Помощь студентам 3 01.05.2010 11:10
MidletPascal Модуль в модуле Kn793 Помощь студентам 4 25.09.2008 22:45