Форум программистов, компьютерный форум CyberForum.ru

Найти ошибку в переводе программы с Pascal на C++ - C++

Восстановить пароль Регистрация
 
Daisy23
Сообщений: n/a
09.12.2013, 18:44     Найти ошибку в переводе программы с Pascal на C++ #1
Очень прошу помочь найти ошибку

Код на Pascal

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
var
  arrMatrix: array of array of Integer;
  i: Integer;
 
procedure Print;
var
  i, j, arrCount: Integer;
begin
  arrCount := Length(arrMatrix);
  for i := 0 to arrCount - 1 do
  begin
    for j := 0 to arrCount - 1 do
      Write(arrMatrix[i, j]:5);
    Writeln;
  end;
end;
 
procedure perestanovka(var oldI: Integer; var oldJ: Integer; i, j: Integer);
var
  tmp: Integer;
begin
  if arrMatrix[oldI, oldJ] > arrMatrix[i, j] then
  begin
    tmp := arrMatrix[oldI, oldJ];
    arrMatrix[oldI, oldJ] := arrMatrix[i, j];
    arrMatrix[i, j] := tmp;
  end;
  oldI := i;
  oldJ := j;
end;
 
procedure zmeika;
var
  i, j, oldI, oldJ: integer;
  arrCount: Integer;
begin
  arrCount := Length(arrMatrix) - 1;
  i := arrCount;
  j := 0;
  oldI := i;
  oldJ := j;
  repeat
    if j < arrCount then
    begin
      Inc(j);
      perestanovka(oldI, oldJ, i, j);
    end
    else
    begin
      Dec(i);
      perestanovka(oldI, oldJ, i, j);
    end;
 
    while (i > 0) and (j > 0) do
    begin
      Dec(j);
      Dec(i);
      perestanovka(oldI, oldJ, i, j);
    end;
 
    if i > 0 then
    begin
      Dec(i);
      perestanovka(oldI, oldJ, i, j);
    end
    else
    if j < arrCount then
    begin
      inc(j);
      perestanovka(oldI, oldJ, i, j);
    end;
 
    while (i < arrCount) and (j < arrCount) do
    begin
      Inc(i);
      Inc(j);
      perestanovka(oldI, oldJ, i, j);
    end;
  until (i = 0) and (j = arrCount);
end;
 
procedure RandMatr;
var
  arrCount: Integer;
  i, j: integer;
begin
  Randomize;
 
  Writeln('Введите размер матрицы');
  Readln(arrCount);
  SetLength(arrMatrix, arrCount);
 
  for i := 0 to arrCount - 1 do
  begin
    SetLength(arrMatrix[i], arrCount);
    for j := 0 to arrCount - 1 do
      arrMatrix[i, j] := Random(898) + 101;
  end;
end;
 
begin
  RandMatr;
  Writeln;
  Print;
  Writeln;
  for i := 1 to Length(arrMatrix) * Length(arrMatrix) - 1 do
    zmeika;
  Print;
 
  Readln;
end.
Код программы на С++


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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <conio.h>
#include <ctime>
#include <cstdlib>
#include <string>
 
using namespace std;
 
int i,arrCount;
 
int** arrMatrix = new int* [arrCount];
 
void Print ()
{
    
    int arrCount=arrCount*arrCount;
    
    for(int i=0;i < (arrCount - 1); i++)
    {
        for(int j=0; j<(arrCount-1);j++)
        {
        
        cout.width(3);
        cout<< arrMatrix[i][j];
        cout<<"\n";
        } 
    }
}
int perestanovka(int oldI, int oldJ, int i, int j)
{
    if(arrMatrix[oldI][oldJ]>arrMatrix[i][j])
    {
        int tmp=arrMatrix[oldI][oldJ];
        arrMatrix[oldI][oldJ]=arrMatrix[i][j];
        arrMatrix[i][j]=tmp;
    }
    oldI=i;
    oldJ=j;
    return (oldI);
    return (oldJ);
}
 
void zmeika()
{
    i=arrCount=arrCount*arrCount- 1;
    
    int j=0;
    int oldI=i;
    int oldJ=j;
    
    do
    {
        if (j<arrCount)
        {
            ++j;
            perestanovka(oldI,oldJ,i,j);
            
        }
        else
        {
            --i;
            perestanovka(oldI,oldJ,i,j);
        }
        
        while ((i>0) && (j>0))
        {
            --j;
            --i;
            perestanovka(oldI,oldJ,i,j);
        }
        if(i>0)
        {
            --i;
            perestanovka(oldI,oldJ,i,j);
        }
        else
        {
            if (j<arrCount)
            {
                ++j;
                perestanovka(oldI,oldJ,i,j);
            }
        }
        while((i<arrCount) && (j<arrCount))
        {
            ++i;
            ++j;
            perestanovka(oldI,oldJ,i,j);
        }
    }
    while((i==0) && (j==arrCount));
    
}
 
void RandMatr()
{
    setlocale(LC_ALL, "Russian");
    cout<<"Введите размер матрицы "<<"\n";
    cin>> arrCount;
    srand (time(NULL));
    for(int i=0;i<(arrCount-1);i++)
    {
        for (int j=0;j<(arrCount-1);j++)
        {
            arrMatrix[i][j]=rand();
        }
    }
}
 
 
int main ()
{
 
 
 int** arrMatrix = new int* [arrCount];
 for( i = 0; i< arrCount; i++)
 {
 arrMatrix[i] = new int [arrCount];
 }
 
    
    
     RandMatr();
     Print();
     for(i = 1;i<(arrCount*arrCount) *(arrCount*arrCount) - 1;i++) 
     zmeika();
     Print();
     
     for(int i = 0; i < arrCount; i++)
     {
        delete [] arrMatrix[i];
     }
     delete [] arrMatrix;
 
     getch();
     return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 18:44     Найти ошибку в переводе программы с Pascal на C++
Посмотрите здесь:

C++ Найти ошибку в выделенном тексте программы
При переводе программы с VS c++ 6.0 на VS c++ 2010 express выходят ошибки, как их исправить? C++
C++ Зацикливание программы, найти ошибку в коде
Блок схема программы неправильная, помогите найти ошибку C++
Релиз консольной программы с SNMP запросами - найти ошибку в коде C++
Найти ошибку в листинге программы Borland C++
C++ Ошибка при переводе программы с языка Pascal
C++ Ошибка в переводе программы с паскаля на с++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru