0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 6
1

Перевести из паскаля в c++

03.06.2015, 20:10. Показов 414. Ответов 2
Метки нет (Все метки)

собственно вот паскалевский код, тут через файлы. На с++ надо через ввод/вывод.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
var N:integer;
    E:integer;
    En1,En2:integer;
    EnX:real;
    matrix:array[0..10000,0..10000] of real;
    f1,f2:text;
    i,j:integer;
    temp:integer;
    L:array[1..100] of real;
    res:boolean;
begin
res:=true;
Assign(f1,'a.in');
Reset(f1);
//
Readln(f1,N,E);
//
for i:=1 to N do
    for j:=1 to N do
             matrix[i,j]:=-1;
//
for i:=1 to E do
    begin
        Readln(f1,En1,En2,EnX);
        if En1>En2 then
            begin
                temp:=En1;
                En1:=En2;
                En2:=temp;
            end;
        matrix[En1,En2]:=EnX;
        if (En1=En2) and (matrix[En1,En2]<>0) then res:=False;
    end;
//
Close(f1);
//
for i:=0 to N do
    for j:=0 to N do
        begin
            if (matrix[i,j]=-1) and (matrix[i,j-1]<>-1) and (matrix[i-1,j]<>-1) and (matrix[i,j-1]<>0) and (matrix[i-1,j]<>0)  then
                matrix[i,j]:=abs(matrix[i+1,j+1]-matrix[i+1,j]);
            if (matrix[i,j]<>-1) and (matrix[i,j+1]<>-1) and (matrix[i+1,j]<>-1)and (matrix[i+1,j]<>0) and (matrix[i,j+1]<>0) then
                matrix[i,j]:=matrix[i,j+1]+matrix[i+1,j];
            if (matrix[i,j]=-1) and (matrix[i,j+1]<>-1) and(matrix[i,j+1]<>0) and (matrix[i-1,j+1]<>-1)and (matrix[i-1,j+1]<>0) then
                matrix[i,j]:=abs(matrix[i,j+1]-matrix[i-1,j+1]);
            if (matrix[i,j]<>-1) and (matrix[i,j]<>0) and (matrix[i-1,j]<>-1)and(matrix[i-1,j]<>0) and (matrix[i-1,j+1]<>-1)and(matrix[i-1,j+1]<>0) and(matrix[i,j+1]<>-1) and (matrix[i,j+1]<>0) then
                matrix[i,j]:=Abs(matrix[i-1,j]-matrix[i,j+1])+matrix[i-1,j+1];
            if (matrix[i,j]=-1) and(matrix[i-1,j]<>0) and(matrix[i-1,j]<>-1) and(matrix[i-1,j-1]<>-1) and(matrix[i-1,j-1]<>0) then
                matrix[i,j]:=Abs(matrix[i-1,j-1]-matrix[i-1,j]);
            if (matrix[i,j]=-1) and(matrix[i-1,j-1]<>-1) and(matrix[i-1,j]<>-1) and(matrix[i-1,j-1]<>0) and(matrix[i-1,j]<>0) then
                matrix[i,j]:=abs(matrix[i-1,j-1]-matrix[i-1,j]);
        end;
//
//for i:=1 to N do
//  for j:=1 to N do
      //  if (matrix[i,j]<matrix[i,j+1]) and (matrix[i,j+1]<>-1) and (matrix[i,j+1]<>0) then
      //      res:=false;
for i:=1 to N-1 do
        begin 
            L[i]:=matrix[i,i+1];
            if L[i]<0 then res:=false;
        end;
 
//------------------------------------Отладка,выводим матрицу...................................
for i:=1 to N do
    begin
    writeln;
    for j:=1 to N do
        Write(matrix[i,j]:0:3,' ');
    end;
//............................................................................
Assign(f2,'a.out');
Rewrite(f2);
//
if res=true then
    begin 
        writeln(f2,'1');
        for i:=1 to N-1 do
            write(f2,L[i]:0:3,' ');
    end
    else writeln(f2,'2'); 
//
Close(f2);
end.
а вот c++ код который я сделал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
int main(){
  int N,E,En1,En2,i,j,temp;
  float EnX;
  bool res;
  float matrix[100][100];
  float L[100];
  
  cin>>N>>E;
  
  res=true;
  
  for (i=1;i<=N;i++)
    for (j=1;j<=N;j++)
             matrix[i][j]=-1;
  
  
for(i = 1; i <=E; i++)
    {
        cin>>En1>>En2>>EnX;
        if (En1>En2)
        {
                temp=En1;
                En1=En2;
                En2=temp;
        }
        matrix[En1][En2]=EnX;
        if ((En1==En2) && (matrix[En1][En2] != 0)){
                 res=false;
        }
   }
 
 
 for (i=0;i<=N;i++)
    for (j=0;j<=N;j++)
        {
            if ((matrix[i][j]==-1) && (matrix[i][j-1]!=-1) && (matrix[i-1][j]!=-1) && (matrix[i][j-1]!=0) && (matrix[i-1][j]!=0))  
                matrix[i][j]=abs(matrix[i+1][j+1]-matrix[i+1][j]);
            if ((matrix[i][j]!=-1) && (matrix[i][j+1]!=-1) && (matrix[i+1][j]!=-1) && (matrix[i+1][j]!=0) && (matrix[i][j+1]!=0)) 
                matrix[i][j]=matrix[i][j+1]+matrix[i+1][j];
            if ((matrix[i][j]==-1) && (matrix[i][j+1]!=-1) &&(matrix[i][j+1]!=0) && (matrix[i-1][j+1]!=-1) && (matrix[i-1][j+1]!=0)) 
                matrix[i][j]=abs(matrix[i][j+1]-matrix[i-1][j+1]);
            if ((matrix[i][j]!=-1) && (matrix[i][j]!=0) and (matrix[i-1][j]!=-1) && (matrix[i-1][j]!=0) && (matrix[i-1][j+1]!=-1) && (matrix[i-1][j+1]!=0) && (matrix[i][j+1]!=-1) && (matrix[i][j+1]!=0))
                matrix[i][j]=abs(matrix[i-1][j]-matrix[i][j+1])+matrix[i-1][j+1];
            if ((matrix[i][j]==-1) && (matrix[i-1][j]!=0) and(matrix[i-1][j]!=-1) && (matrix[i-1][j-1]!=-1) && (matrix[i-1][j-1]!=0)) 
                matrix[i][j]=abs(matrix[i-1][j-1]-matrix[i-1][j]);
            if ((matrix[i][j]==-1) && (matrix[i-1][j-1]!=-1) && (matrix[i-1][j]!=-1) && (matrix[i-1][j-1]!=0) && (matrix[i-1][j]!=0)) 
                matrix[i][j]=abs(matrix[i-1][j-1]-matrix[i-1][j]);
    }
        
for (i=1;i<N-1;i++)
   { 
            L[i]=matrix[i][i+1];
            if (L[i]<0){
              res=false; 
            }
   }
 
 
//------------------------------------Äåáàã ìàòðèöû...................................
for (i=1;i<=N;i++){
    cout<<endl;
    for (j=1;j<=N;j++){
        cout<<matrix[i][j]<<" ";
    }
}
//............................................................................
 
 cout<<endl;
   
if (res==true)
    { 
        cout<<"1"<<endl;
        for (i=1;i<N;i++){    
            cout.precision(3);    
            cout<<L[i]<<" ";
        }
    }
    else cout<<"2"; 
   
    
    getch();
    return 0;
            
}
но он что-то не работает как мне надо на с++. На паскале чики-пуки.

Для теста значения:
Вводим
3 2
1 2 1.250
3 1 3
Получаем
1
1.250 1.750
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2015, 20:10
Ответы с готовыми решениями:

Перевести из паскаля в С
Условие: Постройте массив p=2,p,...,p, где p=2, p=3, ..., p - n-е простое число uses crt; ...

Перевести с Паскаля на C++
надо перевести с паскаля на c++ var i,adrs:integer; a:arrayof integer; begin //... for...

Перевести с Паскаля на Си
uses crt; var a,n:Longint; b:boolean; begin clrscr; write('a=');readln(a); n:=2; while...

перевести из паскаля в с++
var B: String; N, L, Count: Integer; begin Writeln('Введите целое число: '); ...

2
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
03.06.2015, 21:18 2
Массивы индексируются с нуля, соответственно и циклы должны быть от нуля до размер-1.
0
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 6
03.06.2015, 21:42  [ТС] 3
Всё,ненадо сам решил

Добавлено через 49 секунд
косяк был в модуле числа, там у меня же дробные числа а я делал как целочисленное.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2015, 21:42
Помогаю со студенческими работами здесь

Перевести из паскаля на с++
program laba3; var n, i: integer; a, y: real;...

Перевести из паскаля в C++
Перегнать из паскаля в C++. Заранее благодарю. условие: Вводится последовательность...

перевести из паскаля в с++
program spektr; uses crt; type vect=arrayof integer; var f,g:vect; j,i,n:integer; BEGIN ...

Перевести с Паскаля на C++
как заменить этот же код на С++ ?? const nmax = 100; type arr = array of real; var a:arr;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru