Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перевод программы c Pascal ABC на С++

Ответить
Настройки темы
C/C++ - Перевод программы c Pascal ABC на С++

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Программа на паскале рабочая. Есть как на С++ будут вводиться и выводится матрицы и вектора, но как всё это объеденить я не знаю. С с++ не знакома. Или подскажите какой программой можно перевести самой. Буду очень благодарна
Прога на паскале
Код: Выделить весь код
const n=2;
   type TAr2=array[1..n,1..n] of real;
        TAr1=array[1..n] of real;
const             

//
 A:TAr2=  (
            (1/4,1/8),
            (1/5,2/5)
          );

 C:TAr1= (1,2);

 Abis:TAr2 =    (
                  (1/4,1/3),
                  (1/4,1/3)
                );


 l:TAr2 =       (
                 (1,0),
                 (0,1)
                );{еденичная матрица}

var i,j:integer;
    X,AX,Xbis:TAr1;
    Y,Y2,MM,MAD,TMAD,B,B2:TAr2;
    opred:real;
    kol:integer;
procedure VivodVektora(ar:TAr1);

var i:integer;
begin
  for i := 1 to n do begin
      write (ar[i]:4:1,' ');
      end;
      writeln;  
end;//VivodVektora
procedure VivodMatricy(ar:TAr2);
  var i,j:integer;
  begin
    for i := 1 to n do begin
      for j := 1 to n do begin
          write (ar[i,j]:4:1,' ');
  end;
  writeln;
 end;
 end;//VivodMatricy
Function determ(ar:TAr2):real;
 var i,j:integer;
begin
Result:=(Ar[1,1]*Ar[2,2])-(Ar[1,2]*Ar[2,1]);
 end;
Function ObrMatrica(ar:TAr2):TAr2;
var i,j:integer; 
 begin
   opred:=determ(ar);
    if opred=0 then begin
      writeLn('определитель = 0:');
      writeLn('обратной матрицы НЕ существует');
      writeLn('решение отсутствует');   
    Exit;
   end else begin   
     writeLn('определитель:');
     writeLn (opred:4:4,' ');
  end;
 MM[1,1]:= ar[2,2];
 MM[2,2]:= ar[1,1];
 MM[1,2]:= ar[2,1];
 MM[2,1]:= ar[1,2];
  writeLn('Матрица MM:');
  VivodMatricy(MM);
MAD[1,1]:=MM[1,1];
MAD[2,2]:=MM[2,2];
MAD[1,2]:= - MM[1,2];
MAD[2,1]:= - MM[2,1];
writeLn('Матрица MAD:');
VivodMatricy(mad);

for i := 1 to n do begin
 for j := 1 to n do begin
     tmad[j,i]:=mad[i,j];
 end;
end;
writeLn('Матрица TMAD:');
VivodMatricy(Tmad);

for i := 1 to n do begin
  for j := 1 to n do begin
      Result[i,j]:=(1/abs(opred))*Tmad[i,j];
  end;
end;
end;//ObrMatrica
begin

writeLn('Исходные данные:');
writeLn('Матрица A:');
VivodMatricy(a);
writeLn('Матрица l:');
VivodMatricy(l);
writeLn('Матрица A":');
VivodMatricy(Abis);
writeLn('Вектор С:');
VivodVektora(C);

for i := 1 to n do begin
  for j := 1 to n do begin
    Y[i,j]:=l[i,j]-A[i,j];
   end;
end;
writeLn('Матрица Y:');
VivodMatricy(Y);
B:=ObrMatrica(Y);
writeLn('Матрица B, обратная для Y:');
VivodMatricy(B);

for i := 1 to n do begin
    X[i]:=0;
for j := 1 to n do begin
    X[i]:=X[i]+(B[i,j]*C[j]);
  end;
end;
writeLn('вектор X:');
VivodVektora(X);

for i := 1 to n do begin
    AX[i]:=0;
for j := 1 to n do begin
    AX[i]:=AX[i]+(A[i,j]*X[j]);
   end;
end;
kol:=0;
for i := 1 to n do begin 
   if AX[i]<=C[i] then begin
   kol:=kol+1;   
   end;
end; 
if kol=n then begin
   writeLn('Экономика, характеризуемая матрицей A и векторами  X и C - высокоэффективная');
end else begin
 writeLn('Экономика, характеризуемая матрицей A и векторами  X и C - НЕ является высокоэффективной');   
 end;
for i := 1 to n do begin
    for j := 1 to n do begin
        Y2[i,j]:=l[i,j]-Abis[i,j];
     end;
end;
writeLn('Матрица Y2:');
VivodMatricy(Y2);
B2:=ObrMatrica(Y2);
writeLn('Матрица B2, обратная для Y2:');
VivodMatricy(B2);
for i := 1 to n do begin
    Xbis[i]:=0;
       for j := 1 to n do begin
           Xbis[i]:=Xbis[i]+(B2[i,j]*C[j]);
          end;
end;
writeLn('вектор X":');
VivodVektora(Xbis);   
end.
Вот что есть на С++. Но я не уверена на сколько это правильно

Код: Выделить весь код
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;

//функция для ввода матрицы
double ** inputm(int n, int m)
{int i,j;
double **a;
a=new double *[n];
   if(a==NULL){cout<< "\n Не хватает оперативной памяти под строки";
          exit(1);
         }
for(i=0;i< n;i++)
 {a[i]=new double [m];
  if(a[i]==NULL){cout<< "\n Не хватает оперативной памяти под столбцы";
                 exit(1);
                }
}
for(i=0;i< n;i++)
 {cout<< "\n Вввести "<< i<<" строку \n";
  for(j=0;j< m;j++)
 cin>>a[i][j];
  }
return a;
}

//функция для ввывода матрицы
void outputm(double **a, int n, int m)
{int i,j;
   for(i=0;i<=n;i++)
     {cout<< endl;
       for(j=0;j<=m;j++)
        cout<< setw(10)<< a[i][j];
      }
 }

//функция для ввода вектора
double * inputv(int n)
{int i;
  double * a;
  a=new double[n];
  if(a==NULL){cout<<"\n Не хватает оперативной памяти под вектор";
          exit(1);
              }
 for(i=0;i< n;i++)
  cin>>a[i];
  return a;
}

//функция для вывода вектора
 void outputv(double *a,int n)
  {int i;
     for(i=0;i< n;i++)
       {if(i%7==0) cout<< endl;
         cout<< setw(10)<< a[i];
       }
   }

//транспонирование матриц
double** transp(double** a,int n, int m)
  {int i,j;
    double **b;
     b=new double *[n];
     if(b==NULL){cout<< "Нет ОП \n";
           exit(1);
                }
      for (i=0;i< n;i++)
          {b[i]=new double[m];
           if(b[i]==NULL){cout<< "Нет ОП \n";
                  exit(1);
         }
  }
 for (i=0;i< n;i++)
   for (j=0;j< m;j++)
      b[j][i]=a[i][j];
     return b;
  }

Отправлено: 16:57, 06-05-2017

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перевод программы c Pascal ABC на С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) Loading Программирование и базы данных 41 20-05-2015 15:28
Разное - Pascal ABC Sprint116 Программирование и базы данных 3 21-05-2013 23:43
Разное - Pascal ABC m3nf1s Программирование и базы данных 1 14-05-2013 15:49
C/C++ - перевод с Pascal ABC на С++ dhoine66 Программирование и базы данных 0 11-05-2011 22:15
Delphi - Работа с графикой в Pascal ABC verdix Программирование и базы данных 1 26-06-2009 00:52




 
Переход