| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Borland Pascal |
| Автор: DangerousV 22.12.2013, 13:07 | ||||||
| ошибка в несоответствии типов. Ошибка в головной программе. 4 модуля компилируются Добавлено через 2 минуты и 8 секунд Головная программа:
Program Lab_11; Uses WinCrt,MyType,Vvod,Vyvod,TypeAlg; Var A:TMas2I; B,C,D,E:TMas1I; minB,minC:ShortInt; k1,k2,k3:Byte; Begin Randomize; VvodMatrI(6,6,-10,10,A); Writeln('Матрица А'); VyvodMatrIC(6,6,A); Writeln('Матрица А'); VyvodMatrIF(6,6,A); VvodVekI(6,-10,10,B); Writeln('Вектор B'); VyvodVekIC(6,6,B); Writeln('Вектор B'); VyvodVekIF(6,6,B); FormVekFromSumStr(A,6,6,C,k1); Writeln('Полученный вектор'); VyvodVekIC(k1,6,C); Writeln('Полученный вектор'); VyvodVekIF(k1,6,C); minB:=minMas1R(6,B); minC:=minMas1R(k1,C); Writeln('minB=',minB:3,' minC=',minC:3); Writeln('minB=',minB:3,' minC=',minC:3); minC:=2*minB; Writeln('minB=',minB:3,' minC=',minC:3); If minC mod minB =0 Then Begin FormVekFromPolMatr(A,6,6,D,k2); Writeln('Вектор из положительных элементов матрицы'); VyvodVekIC(k2,5,D); Writeln('Вектор из положительных элементов матрицы'); VyvodVekIF(k2,5,D); UporVek(k2,D); Writeln('Упорядоченный вектор'); VyvodVekIC(k2,5,D); Writeln('Упорядоченный вектор'); VyvodVekIF(k2,5,D); End Else Begin FormVekFromMatr(A,6,6,D,k3); UporVek(k3,D); Writeln('Упорядоченный преобразованный вектор '); VyvodVekIC(k3,10,D); Writeln('Упорядоченный преобразованный вектор '); VyvodVekIF(k3,10,D); FormMatrFromVek(D,6,6,A); Writeln(' '); Writeln('Упорядоченная матрица '); VyvodMatrIC(6,6,A); Writeln('Упорядоченная матрица '); VyvodMatrIF(6,6,A); End; End. Добавлено через 3 минуты и 38 секунд
Unit MyType; Interface Type TMas2I=Array[1..10,1..10] of ShortInt; TMas2R=Array[1..10,1..10] of Real; TMas1I=Array[1..100] of ShortInt; TMas1R=Array[1..100] of Real; Implementation End.
Добавлено через 4 минуты и 40 секунд Модуль TypeAlg: Unit TypeAlg; Interface Uses MyType; Procedure FormVekFromSumStr(Aa:TMas2I;na,ma:Byte;Var Ba:TMas1I;Var ka:Byte); Procedure FormVekFromPolMatr(Aa:TMas2I;na,ma:Byte;Var Ba:TMas1I;Var ka:Byte); Procedure UporVek(na:Byte;Var Aa:TMas1I); Procedure FormVekFromMatr(Aa:TMas2I;na,ma:Byte;Var Ba:TMas1I;Var ka:Byte); Procedure FormMatrFromVek(Ba:TMas1I;na,ma:Byte;Var Aa:TMas2I ); Function MinMas1R(na:Byte;Aa:TMas1I):Real; Implementation Procedure FormVekFromSumStr; Var i,j:Byte;Sm:ShortInt; Begin For i:=1 to na Do Begin Sm:=0; For j:=1 to ma Do Sm:=Sm+Aa[i,j]; Ba[i]:=Sm; End; ka:=na; End; Function MinMas1R; Var i:Byte;minMas:Real; Begin minMas:= Aa[1]; For i:=2 to na Do If Aa[i]<minMas Then minMas:=Aa[i]; MinMas1R:=minMas; End; Procedure FormVekFromPolMatr; Var i,j:Byte; Begin ka:=0; For i:=1 to na Do For j:=1 to ma Do If Aa[i,j]>0 Then Begin ka:=ka+1;Ba[ka]:=Aa[i,j];End; End; Procedure UporVek; Var i,j,Nmin:Byte;Min,Temp:ShortInt; Begin For i:=1 to na-1 Do Begin min:=Aa[i];Nmin:=i; For j:=i+1 to na Do If Aa[j]<min Then Begin Min:=Aa[j];Nmin:=j;End; Temp:=Aa[i];Aa[i]:=Aa[Nmin];Aa[Nmin]:=Temp; End; End; Procedure FormVekFromMatr; Var i,j:Byte; Begin ka:=0; For i:=1 to na Do For j:=1 to ma Do Begin ka:=ka+1;Ba[ka]:=Aa[i,j] End; End; Procedure FormMatrFromVek; Var i,j,k:Byte; Begin k:=0; For i:=1 to na Do For j:=1 to ma Do Begin k:=k+1;Aa[i,j]:=Ba[k]; End; End; End. Добавлено через 5 минут и 49 секунд Модуль Ввод: Unit Vvod; Interface Uses MyType; Procedure VvodMatrR(na,ma:Byte;Pa,Qa:Real;Var Aa:TMas2R); Procedure VvodMatrI(na,ma:Byte;Pa,Qa:ShortInt;Var Aa:TMas2I); Procedure VvodVekR(na:Byte;Pa,Qa:Real;Var Aa:TMas1R); Procedure VvodVekI(ma:Byte;Pa,Qa:ShortInt;Var Aa:TMas1I); Implementation Procedure VvodMatrR; Var i,j:Byte; Begin For i:=1 to na do For j:=1 to ma do Aa[i,j]:=(Qa-Pa)*Random+Pa; End; Procedure VvodMatrI; Var i,j:Byte; Begin For i:=1 to na do For j:=1 to ma do Aa[i,j]:=Random(Qa-Pa)+Pa; End; Procedure VvodVekR; Var i:Byte; Begin For i:=1 to na do Aa[i]:=(Qa-Pa)*Random+Pa; End; Procedure VvodVekI; Var i:Byte; Begin For i:=1 to ma do Aa[i]:=Random(Qa-Pa)+Pa; End; End. Добавлено через 6 минут и 25 секунд Модуль Вывода: Unit Vyvod; Interface Uses MyType; Procedure VyvodMatrRC(na,ma:Byte;Var Aa:TMas2R); Procedure VyvodMatrRF(na,ma:Byte;Var Aa:TMas2R); Procedure VyvodMatrIC(na,ma:Byte;Var Aa:TMas2I); Procedure VyvodMatrIF(na,ma:Byte;Var Aa:TMas2I); Procedure VyvodVekRC(na,ka:Byte;Var Aa:TMas1R); Procedure VyvodVekRF(na,ka:Byte;Var Aa:TMas1R); Procedure VyvodVekIC(na,ka:Byte;Var Aa:TMas1I); Procedure VyvodVekIF(na,ka:Byte;Var Aa:TMas1I); Implementation Procedure VyvodMatrRC; Var i,j:Byte; Begin For i:=1 to na do Begin For j:=1 to ma do Write(Aa[i,j]:2,' '); WriteLn(''); End; End; Procedure VyvodMatrRF; Var i,j:Byte; Begin For i:=1 to na do Begin For j:=1 to ma do Write(Aa[i,j]:2,' '); WriteLn(''); End; End; Procedure VyvodMatrIC; Var i,j:Byte; Begin For i:=1 to na do Begin For j:=1 to ma do Write(Aa[i,j]:4,' '); WriteLn(''); End; End; Procedure VyvodMatrIF; Var i,j:Byte; Begin For i:=1 to na do Begin For j:=1 to ma do Write(Aa[i,j]:4,' '); WriteLn(''); End; End; Procedure VyvodVekRC; Var i:Byte; Begin For i:=1 to na do Begin Write(Aa[i]:2,' '); If i mod ka=0 Then WriteLn(''); End; End; Procedure VyvodVekRF; Var i:Byte; Begin For i:=1 to na do Begin Write(Aa[i]:2,' '); If i mod ka=0 Then WriteLn(''); End; End; Procedure VyvodVekIC; Var i:Byte; Begin For i:=1 to na do Begin Write(Aa[i]:4,' '); If i mod ka=0 Then WriteLn(''); End; End; Procedure VyvodVekIF; Var i:Byte; Begin For i:=1 to na do Begin Write(Aa[i]:4,' '); If i mod ka=0 Then WriteLn(''); End; End; End. |
| Автор: ФедосеевПавел 22.12.2013, 20:29 |
| Всё правильно тебе компилятор пишет. Спорная строка minB := minMas1R(6, B); Смотрим объявления типов: minB, minC: shortint; И смотрим на тип результата функции function MinMas1R(na: byte; Aa: TMas1I): real; |
| Автор: Akella 23.12.2013, 15:03 |
| Никогда не пользуйтесь на форумах кнопкой КОД |
| Автор: ФедосеевПавел 23.12.2013, 22:19 |
| Sorry. В своё оправдание скажу лишь, что желал выделить цветом типы переменной и функции. |