IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Процедурный тип
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


Помогите мне пожалуйста найти ошибку.

У меня такая задача.
Даны матрицы А[1:5,1:6] и В[1:5,1:6]. Из произведений нечетных элементов строк матрицы В сформировать вектор D. Если минимальный элемент 1-ой строки матрицы А больше минимального элемента 2-ой строки матрицы А, то в матрицу А добавить 3-ий столбец, являющийся значениями вектора D, иначе в матрице В поменять местами 1 и 5 столбцы. В п/п (подпрограмме) формирования вектора D использовать п/п нахождения произведений элементов вектора.

Модуль типов MyType

Unit MyType;
Interface
Uses Wincrt;
Type
mas1=array[1..50] of integer;
mas2=array[1..10,1..10] of integer;
func=function(Aa:Mas1;na:Byte):integer;
Var
f:text;
priz,priz1,priz2:Byte;
A:Mas2;B:Mas2; C,D:Mas1;
Implementation
End.



Модуль ввода элементов массивов VVod1

Unit Vvod1;
Interface
Uses Mytype;
Procedure FormMatr(na,ma:Byte;Pa,Qa:Integer;Var Aa:mas2);
Implementation
Procedure FormMatr;
Var i,j:Byte;
Begin
For i:=1 to na do For j:=1 to ma do
Begin Aa[i,j]:=Random(Qa-Pa)+Pa; End;
End;
End.



Модуль вывода элементов Vyvod

Unit Vyvod;
Interface
Uses MyType,WinCrt;
Procedure VyvodVek(na:Byte;Var Aa:mas1);
Procedure VyvodMatr(na,ma:Byte;Var Ba:mas2);
Implementation
Procedure VyvodVek;
Var i:Byte;
Begin
For i:=1 to na do
Write(f,Aa[i]:10,' ');
writeLn(f,'');
End;
Procedure VyvodMatr;
Var i,j:Byte;
Begin
For i:=1 to na do
begin
For j:=1 to ma do
Write(f,Ba[i,j]:3,' '); writeLn(f,'');
end;
End;
End.



Модуль типовых алгоритмов TypAlg1
Исходный код

Unit TipAlg1;
Interface
Uses Wincrt,MyType;
Procedure FormD(Aa:mas2;na,ma:Byte;Proiz:Func;Var Da:mas1;Var k:Byte);
Procedure Vstavka(Aa:mas2;na,ma,k2:Byte;Var Ba:mas2);
Procedure zamena(Aa:mas2;ma:Byte;nomer1,nomer2:Byte;Var Ba:mas2);
Function Proiz(na,ma:Byte; Aa:mas1):integer;Far;
Function MinStr(Aa:mas2;nomer,ma:Byte):integer;
Implementation
{Получение произведений}
Function Proiz;
Var i:Byte; Pr:integer;
Begin
Pr:=1;
For i:=1 to na do
If i mod 2=0
Then Pr:=Pr*Aa[i];
Proiz:=Pr;
End;

{Формирование вектора D}
Procedure FormD;
Var i,j:Byte;C:Mas1;
Begin
For i:=1 to na do
Begin
For j:=1 to ma do
C[j]:=Aa[i,j];
Da[i]:=Proiz(C,ma);k:=k+1;
End;
End;

{Поиск минимального элемента в строке}
Function MinStr;
Var i,j:Byte; minchStr,minchStol:Integer;
Begin
minchStr:=Aa[nomer,1];
For j:=1 to ma do
If Aa[nomer,1]<minchStr Then minchStr:=Aa[i,j];
MinStr:=minchStr;
End;


Procedure Vstavka;
Var i,j:Byte;
Begin
For i:=na+1 downto k2 do
For j:=1 to ma do
Aa[i,j]:=Aa[i-1,j];
For j:=1 to ma do
Aa[k2,j]:=D[i];
End;

Procedure zamena;
Var i,j:Byte;Pa:Byte;
Begin
For j:=1 to ma do
Begin
Pa:=A[nomer1,j]; A[nomer1,j]:=A[nomer2,j];A[nomer2,j]:=Pa;
End;
End;
end.


Головная программа
Исходный код

Program Lab3;
Uses WinCrt,MyType,Vvod1,Vyvod,TipAlg1;
Var
min1,min2:integer;
Begin
Assign(f,'C:\Rezlab\lab3.txt');ReWrite(f);
Randomize;
FormMatr(5,6,0,30,A);
WriteLn(f,‘Матрица А’);
VyvodMatr(5,6,A);
FormMatr(5,6,0,20,B);
WriteLn(f,‘Матрица В’);
VyvodMatr(5,6,B); WriteLn(f,’’);
FormD(B,5,6,Proiz,D,k);
VyvodVek(5,D);
Writeln('');
Min1:=MinStr(A,1,6);
Min2:=MinStr(A,2,6);
WriteLn(f,'min1=',min1:5,'min2=',min2:5); WriteLn(f,‘’);
If min1>min2 then
Begin
Vstavka(A,5,7,3,A);
WriteLn(f,'Матрица с добавленным столбцом');
VyvodMatr(5,7,A);
End
Else
Begin
Writeln(f,'Матрица с перестановленными столбцами');
Zamena(B,6,1,5,B)
VyvodMatr(5,6,B);
End; close(f); End.


Когда я компилирую мне выдает ошибку, что что-то не вторядке с тродцедурным типом Proiz (FormD(B,5,6,Proiz,D,k)). Я уже все перепробывола что мне в голову пришло, но ничего не получается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Selena   Процедурный тип   22.11.2005 11:16
Atos   :blink: :blink: :blink: A, собственно, почему P…   22.11.2005 11:45
Selena   Входные параметры у меня в модуле MyType func=func…   22.11.2005 11:51
Atos   :blink: Вообще не понял. Причём здесь func, если …   22.11.2005 12:01
klem4   Selena, Function Proiz(na,ma:Byte; Aa:mas1):integ…   22.11.2005 12:02
Selena   А как ее записать в процедурном типе? Я тут разбир…   22.11.2005 23:38
Selena   Ну помогите кто-нибудь! Очень надо! :unsur…   23.11.2005 0:21
volvo   Selena, вот начало той программы, которая тебе нуж…   23.11.2005 5:46
Selena   For Volvo. Огромное спасибо. Именно то что мне был…   23.11.2005 22:05
Selena   Я переделала задачу по твоему алгоритму, он мне вы…   23.11.2005 23:20
volvo   Selena, обрати внимание, как у тебя описана функци…   23.11.2005 23:28
Selena   Последний вопрос. Я нашла ошибку. Программа работа…   23.11.2005 23:47
volvo   To: Selena Function Proiz(Aa:mas1;na:Byte):intege…   23.11.2005 23:54
Selena   Спасибо. :cool:   23.11.2005 23:59
Selena   Не подскажете что здесь не так? Замена стобца вект…   24.11.2005 2:18
volvo   :blink: А зачем вложенные циклы? Вот этого достато…   24.11.2005 2:45
Selena   В матрицу В добавить 3-ью строку, являющуюся суммо…   24.11.2005 8:01
volvo   Selena, что значит "Добавить"? У тебя ес…   24.11.2005 13:14


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.09.2025 0:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name