Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 секунд
Код


Модуль MyType:
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. В своё оправдание скажу лишь, что желал выделить цветом типы переменной и функции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)