Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.05.2017, 20:13   #1
Riggar
Новичок
Джуниор
 
Регистрация: 03.05.2017
Сообщений: 2
По умолчанию Как перевести из Pascal в C++ задачу?

Как перевести из Pascal в C++ задачу?

Код:
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:4,' ');
  end;
  writeln;  
end;

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:4,' ');
      end;
      writeln;
  end;
end;

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;


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); // вычисляем обратную матрицу для 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.

Последний раз редактировалось Вадим Мошев; 03.05.2017 в 22:22.
Riggar вне форума
Старый 03.05.2017, 20:16   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,528
По умолчанию

заплатить за работу?

http://www.programmersforum.ru/forumdisplay.php?f=29
Alar вне форума
Старый 03.05.2017, 20:25   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

было ж уже
http://www.programmersforum.ru/showthread.php?t=307923
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA как можно перевести код с Pascal Ken_Watanabe Помощь студентам 0 10.11.2014 05:56
Помогите перевести задачу с Turbo Pascal на C Katya2 Общие вопросы C/C++ 3 22.03.2014 21:25
Перевести задачу с паскаль на c++ Mikhaill Фриланс 3 02.09.2013 14:39
Как решить подобную задачу по Pascal& popygai Паскаль, Turbo Pascal, PascalABC.NET 3 10.02.2012 18:16
Перевести задачу на паскаль Faridik Паскаль, Turbo Pascal, PascalABC.NET 3 18.01.2012 19:36