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

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

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

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

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

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

Нужно перевести с Pascal ABC на С++. Это программа расчета вектора с, и матриц А и А'. Так же здесь расчитывается матрица В, вектор х, произведение матриц А*х, и вектор х'.

Код:
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.
*если потребуется, могу выложить само решение.
Valkyrie123 вне форума
Старый 03.05.2017, 19:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Тут не бесплатное бюро переводов, вряд ли кто-то будет делать это за вас.

Назовите нормально тему, покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отличаются ли программы Free от ABC Pascal? vlkvelena Помощь студентам 1 22.11.2016 21:36
Pascal ABC - Дописать половину программы juk88 Помощь студентам 0 12.02.2015 19:41
Программы в Pascal, среда pascal ABC. Лабораторные работы Одинокая Волчица Фриланс 8 10.02.2012 20:09
перевод с Pascal ABC на С++ dhoine66 Помощь студентам 0 11.05.2011 21:58
Pascal ABC. Перевод из двоичной в десятичную систему счисления. ARTEM_KA Помощь студентам 4 17.11.2010 22:15