![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Selena |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Ольга Репутация: ![]() ![]() ![]() |
Помогите мне пожалуйста найти ошибку.
У меня такая задача. Даны матрицы А[1:5,1:6] и В[1:5,1:6]. Из произведений нечетных элементов строк матрицы В сформировать вектор D. Если минимальный элемент 1-ой строки матрицы А больше минимального элемента 2-ой строки матрицы А, то в матрицу А добавить 3-ий столбец, являющийся значениями вектора D, иначе в матрице В поменять местами 1 и 5 столбцы. В п/п (подпрограмме) формирования вектора D использовать п/п нахождения произведений элементов вектора. Модуль типов MyType
Модуль ввода элементов массивов VVod1
Модуль вывода элементов Vyvod
Модуль типовых алгоритмов 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)). Я уже все перепробывола что мне в голову пришло, но ничего не получается. |
![]() ![]() |
Atos |
![]()
Сообщение
#2
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:57 |