Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
1

Перевод з Pascal на С или С++!

12.05.2017, 19:27. Показов 548. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите перевести на С или С++ очень прошу!!)
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
Program pr1;
var a,b,d,d1:array[1..8,1..8] of real;
max,z,t,c,s:real;
n,i,j,k,m,sig1:integer;
begin
writeln('n=');
readln(n);
writeln('vvedit masyv');
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
for i:=1 to n do
for j:=1 to n do
d[i,j]:=0;
for k:=1 to n do
d[k,k]:=1;
max:=0.5;
while (max > 0.0001) do begin
max:=abs(a[1,2]);
i:=1;
j:=2;
for k:=1 to n do
for m:=(k+1) to n do
if abs(a[k,m]) > max then begin
max:=abs(a[k,m]);
i:=k;
j:=m;
end;
z:=(a[j,j]-a[i,i])/(2*a[i,j]);
if z>0 then sig1:=1;
if z=0 then sig1:=0;
if z<0 then sig1:=-1;
t:=sig1/(abs(z)+sqrt(1+z*z));
c:=1/(sqrt(1+t*t));
s:=c*t;
for k:=1 to n do begin
d1[i,k]:=c*d[i,k]-s*d[j,k];
d1[j,k]:=s*d[i,k]+c*d[j,k];
end;
for k:=1 to n do
for m:=1 to n do
d[k,m]:=d1[k,m];
for k:=1 to n do
for m:=1 to n do
b[k,m]:=a[k,m];
for k:=1 to n do begin
b[i,k]:=c*a[i,k]-s*a[j,k];
b[j,k]:=s*a[i,k]+c*a[j,k];
end;
for k:=1 to n do
for m:=1 to n do
a[k,m]:=b[k,m];
for k:=1 to n do begin
a[k,i]:=c*b[k,i]-s*b[k,j];
a[k,j]:=s*b[k,i]+c*b[k,j];
end;
end;
writeln('max=',max:7:4);
for k:=1 to n do writeln(a[k,k]:7:4);
for k:=1 to n do begin
for m:=1 to n do
write(d[k,m]:7:4,' ');
writeln;
end
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2017, 19:27
Ответы с готовыми решениями:

Перевод кода с Pascal на С++ или Си (рекурсия)
Здравствуйте, помогите, пожалуйста, перевести код с Pascal на С++, либо на Си. Задание состояло в...

Подсчет количества грядок на садовом участке (Pascal -> C++)
Здравствуйте!Задача: Прямоугольный садовый участок шириной N и длиной M метров разбит на...

Cформировать массив, в котором каждому элементу будет присвоено значение справа соседнего с ним (Pascal -> C++)
В файле W задан массив из девяти элементов. В новом файле WW сформировать массив, в котором каждому...

Перевод с Pascal на C++
Доброго времени суток. Вот написал программку на Паскале, кто поможет перевести его на С++ Буду...

15
5 / 5 / 1
Регистрация: 19.04.2017
Сообщений: 35
12.05.2017, 19:31 2
Лучше бы ты само задание скинул
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.05.2017, 19:31 3
Напишите что программа должна делать, так будет проще перевести.
0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
12.05.2017, 19:31  [ТС] 4
використання метода якобі для зведення симетричних матриць до діагонального вигляду
0
MrGluck
12.05.2017, 19:33
  #5
 Комментарий модератора 
oleg199712,
Официальными языками форума являются русский и английский языки. Размещение сообщений на других языках запрещено.
перепечатывайте задание на русском
0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
12.05.2017, 21:21  [ТС] 6
Она должна матрицу переводить в диагональную, искать Вектор, содержащий собственные значения матрицы M, а также виводить Матрица, содержащая нормированные собственные векторы, соответствующие собственным значениям квадратной матрицы M. n-ный столбец возвращенной матрицы — собственный вектор, соответствующий n-ному собственному значению, возвращенному eigenvals.
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
12.05.2017, 21:24 7
oleg199712, сначала надо сформатировать исходный код, чтоб увидеть его структуру
Кликните здесь для просмотра всего текста

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
Program pr1;
var a, b, d, d1:array[1..8,1..8] of real;
max, z, t, c, s : real;
n, i, j, k, m, sig1 : integer;
begin
  writeln('n=');
  readln(n);
  writeln('vvedit masyv');
  for i:=1 to n do
    for j:=1 to n do
      read(a[i,j]);
  for i:=1 to n do
    for j:=1 to n do
      d[i,j]:=0;
  for k:=1 to n do
    d[k,k]:=1;
  max:=0.5;
  while (max > 0.0001) do begin
    max:=abs(a[1,2]);
    i:=1;
    j:=2;
    for k:=1 to n do
      for m:=(k+1) to n do
        if abs(a[k,m]) > max then begin
          max:=abs(a[k,m]);
          i:=k;
          j:=m;
        end;
    z:=(a[j,j]-a[i,i])/(2*a[i,j]);
    if z>0 then sig1:=1;
    if z=0 then sig1:=0;
    if z<0 then sig1:=-1;
    t:=sig1/(abs(z)+sqrt(1+z*z));
    c:=1/(sqrt(1+t*t));
    s:=c*t;
    for k:=1 to n do begin
      d1[i,k]:=c*d[i,k]-s*d[j,k];
      d1[j,k]:=s*d[i,k]+c*d[j,k];
    end;
    for k:=1 to n do
      for m:=1 to n do
        d[k,m]:=d1[k,m];
    for k:=1 to n do
      for m:=1 to n do
        b[k,m]:=a[k,m];
    for k:=1 to n do begin
      b[i,k]:=c*a[i,k]-s*a[j,k];
      b[j,k]:=s*a[i,k]+c*a[j,k];
    end;
    for k:=1 to n do
      for m:=1 to n do
        a[k,m]:=b[k,m];
    for k:=1 to n do begin
      a[k,i]:=c*b[k,i]-s*b[k,j];
      a[k,j]:=s*b[k,i]+c*b[k,j];
    end;
  end; 
  writeln('max=',max:7:4);
  for k:=1 to n do writeln(a[k,k]:7:4);
  for k:=1 to n do begin
    for m:=1 to n do
      write(d[k,m]:7:4,' ');
    writeln;
  end
end.
0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
12.05.2017, 21:31  [ТС] 8
использование метода Якоби для возведения симметричных матриц к диагональному виду
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
12.05.2017, 21:31 9
oleg199712, потом можно перекодировать в Си++
Кликните здесь для просмотра всего текста

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
#include <algorithm>
#include <iomanip>
#include <iostream>
using namespace std;
 
void main () { // Program  pr1;
  double a[8][8], b[8][8],d[8][8],d1[8][8];
  double max, z, t, c, s;
  int n, i, j, k, m, sig1 = 0;
  cout << " n=";
  cin >> n;
  cout << "enter a\n";
  for (i =0; i < n; ++i)
    for (j = 0; j < n; ++j)
      cin >> a[i][j];
  cout << "enter d\n";
  for (i = 0; i < n; ++i)
    for (j = 0; j < n; ++j)
      cin >> d[i][j];
  for (k = 0; k < n; ++k)
    d[k][k] = 1;
  max = 0.5;
  while (max > 0.0001) {
    max = abs (a[0][1]);
    i = 0;
    j = 1;
    for (k = 0; k < n; ++k)
      for (m = k+1; m < n; ++m)
        if (abs (a[k][m]) > max) {
          max = abs (a[k][m]);
          i = k;
          j = m;
        }
    z = (a[j][j] - a[i][i]) / (2 * a[i][j]);
    if (z >  0) sig1 = 1;
    if (z == 0) sig1 = 0;
    if (z <  0) sig1 = -1;
    t = sig1 / (abs (z) + sqrt (1 + z*z));
    c = 1 / (sqrt (1 + t*t));
    s = c * t;
    for (k = 0; k < n; ++k) {
      d1[i][k] = c * d[i][k] - s * d[j][k];
      d1[j][k] = s * d[i][k] + c * d[j][k];
    }
    for (k = 0; k < n; ++k)
      for (m =0; m < n; ++m)
        d[k][m] = d1[k][m];
    for (k =0; k < n; ++k)
      for (m = 0; m < n; ++m)
        b[k][m] = a[k][m];
    for (k = 0; k < n; ++k) {
      b[i][k] = c * a[i][k] - s * a[j][k];
      b[j][k] = s * a[i][k] + c * a[j][k];
    }
    for (k = 0; k < n; ++k)
      for (m = 0; m < n; ++m)
        a[k][m] = b[k][m];
    for (k = 0; k < n; ++k) {
      a[k][i] = c * b[k][i] - s * b[k][j];
      a[k][j] = s * b[k][i] + c * b[k][j];
    }
  } // while()
  cout << "\nmax=" << setprecision(4) <<  max <<'\n';
  for (k = 0; k < n; ++k)
    cout << setw(8) << a[k,k];
  cout << '\n';
  for (k = 0; k < n; ++k) {
    for (m = 0; m < n; ++m)
      cout << setw(8) << d[k][m];
    cout << '\n';
  }
} // end.

но не имея исходных данных, проверить работоспособность не удастся. Наверно есть смысл подкинуть что-нибудь
0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
12.05.2017, 21:35  [ТС] 10
тоисть исходних даних?? Мы задаем матрицу например 2 1 0
1 3 1
0 1 4
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
12.05.2017, 21:41 11
в строке 66 надо исправить a[k,k] на a[k][k]

Добавлено через 2 минуты
oleg199712, Твоя программа требует ввода одного числа n (=3?) и матрицы n x n. А я, сослепу, в 20-й строке вместо обнуления массива d задал его ввод с клавиш. Придётся исправлять код.
0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
12.05.2017, 21:51  [ТС] 12
число n ето количество строк и столбцов, вводш ево, потом матрицу,

Добавлено через 7 минут
не понимаю, програма работает, ти сам должен задавать матрицу
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
12.05.2017, 21:59 13
oleg199712, вот исправленный код с проверкой счёта
Кликните здесь для просмотра всего текста

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
#include <iomanip>
#include <iostream>
using namespace std;
 
void main () { // Program  pr1;
  double a[8][8],b[8][8],d[8][8],d1[8][8];
  double max, z, t, c, s;
  int n, i, j, k, m, sig1 = 0;
  cout << " n=";
  cin >> n;
  cout << "enter a\n";
  for (i =0; i < n; ++i)
    for (j = 0; j < n; ++j)
      cin >> a[i][j];
  for (i = 0; i < n; ++i)
    for (j = 0; j < n; ++j)
      d[i][j] = 0;
  for (k = 0; k < n; ++k)
    d[k][k] = 1;
  max = 0.5;
  while (max > 0.0001) {
    max = abs (a[0][1]);
    i = 0;
    j = 1;
    for (k = 0; k < n; ++k)
      for (m = k+1; m < n; ++m)
        if (abs (a[k][m]) > max) {
          max = abs (a[k][m]);
          i = k;
          j = m;
        }
    z = (a[j][j] - a[i][i]) / (2 * a[i][j]);
    if (z >  0) sig1 = 1;
    if (z == 0) sig1 = 0;
    if (z <  0) sig1 = -1;
    t = sig1 / (abs (z) + sqrt (1 + z*z));
    c = 1 / (sqrt (1 + t*t));
    s = c * t;
    for (k = 0; k < n; ++k) {
      d1[i][k] = c * d[i][k] - s * d[j][k];
      d1[j][k] = s * d[i][k] + c * d[j][k];
    }
    for (k = 0; k < n; ++k)
      for (m =0; m < n; ++m)
        d[k][m] = d1[k][m];
    for (k =0; k < n; ++k)
      for (m = 0; m < n; ++m)
        b[k][m] = a[k][m];
    for (k = 0; k < n; ++k) {
      b[i][k] = c * a[i][k] - s * a[j][k];
      b[j][k] = s * a[i][k] + c * a[j][k];
    }
    for (k = 0; k < n; ++k)
      for (m = 0; m < n; ++m)
        a[k][m] = b[k][m];
    for (k = 0; k < n; ++k) {
      a[k][i] = c * b[k][i] - s * b[k][j];
      a[k][j] = s * b[k][i] + c * b[k][j];
    }
  } // while()
  cout << "\nmax=" << setprecision(4) <<  max <<'\n';
  for (k = 0; k < n; ++k)
    cout << setw(12) << a[k][k];
  cout << '\n';
  for (k = 0; k < n; ++k) {
    for (m = 0; m < n; ++m)
      cout << setw(12) << d[k][m];
    cout << '\n';
  }
} // end.
/*
n=3
a=2 1 0
  1 3 1
  0 1 4
max=3.837e-07
       1.268           3       4.732
      0.7887     -0.5774 -1.082e-225
      0.5774      0.5774  2.955e-225
      0.2113      0.5774 -4.037e-225
*/


Добавлено через 3 минуты
Результат похож на правильный?
0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 7
12.05.2017, 23:25  [ТС] 14
числа правильні, в результаті,тільки є лишнє

Добавлено через 8 минут
да похож, только у меня код етот почемуто не запускаетса, видает ошибку
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.05.2017, 23:30 15
Цитата Сообщение от oleg199712 Посмотреть сообщение
числа правильні, в результаті,тільки є лишнє
 Комментарий модератора 
Ещё раз напоминаю, что
Официальными языками форума являются русский и английский языки. Размещение сообщений на других языках запрещено.
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
12.05.2017, 23:31 16
oleg199712, код не должен "запускаться". Он должен компилироваться в exe-программу.
0
12.05.2017, 23:31
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.05.2017, 23:31
Помогаю со студенческими работами здесь

Вывести слова текста в алфавитном порядке (Pascal -> C++)
Помогите перевести в C++ Var s,s1,s2 : String; a : Array Of String; N,i,j :...

Перевод с Pascal на C++
Код на паскале, помогите его переписать в С ++ . Очень нужно ребят . Последняя задача. const mi...

Перевод с pascal на c++
Вообще не знаю pasсal, нужен перевод. program aaa; Type mas=array of integer; Var a: array of...

Перевод с Pascal на Си++
Помогите, пожаалуйста перевести код программы с Паскаля на Си++. Очень прошу, помогите. Var ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Что такое внедрение зависимостей и для чего оно применяется
bytestream 27.01.2025
В современной разработке программного обеспечения одной из ключевых проблем является управление зависимостями между различными компонентами системы. Внедрение зависимостей (Dependency Injection, DI). . .
Как установить cellpadding и cellspacing в CSS
bytestream 27.01.2025
При создании веб-страниц с табличными данными разработчики часто сталкиваются с необходимостью правильного оформления внутренних и внешних отступов в таблицах. В традиционной разметке HTML для этих. . .
Чем отличаются public, protected, package-private и private в Java
bytestream 27.01.2025
В языке программирования Java механизм модификаторов доступа играет ключевую роль в реализации одного из фундаментальных принципов объектно-ориентированного программирования - инкапсуляции. . . .
Зачем нужно explicit в C++. Преобразование типов
bytestream 27.01.2025
В мире программирования на C++ управление преобразованием типов данных играет crucial роль в создании надежного и безопасного кода. Язык C++ предоставляет множество механизмов для контроля над. . .
Как создать удалённую (remote) ветку в Git
bytestream 27.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления кодовой базой. Одним из ключевых. . .
Как создать утечку памяти в Java
bytestream 27.01.2025
Утечка памяти в Java представляет собой ситуацию, когда программа неэффективно использует доступную память, удерживая ссылки на объекты, которые больше не нужны для работы приложения. Несмотря на. . .
КуМир: как решать задачи на числа
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой уникальную образовательную среду программирования, разработанную специально для обучения основам алгоритмизации и программирования. Эта система. . .
Исполнитель Черепаха в КуМир: как решать задачи
bytestream 27.01.2025
Исполнитель Черепаха в системе КуМир представляет собой мощный образовательный инструмент, который помогает освоить основы программирования через визуальное представление результатов выполнения. . .
КуМир: как решать задачи на массивы
bytestream 27.01.2025
Массивы представляют собой важнейшую структуру данных в программировании, и система КуМир предоставляет удобные инструменты для работы с ними. В контексте КуМир массив можно представить как. . .
[golang] 26. Remove Duplicates from Sorted Array
alhaos 27.01.2025
Необходимо удалить дубликаты из предоставленного целочисленного отсортированного по взрастанию слайса, нужно изменить значения в слайсе и вернуть количество элементов. / / . . .
КуМир, исполнитель Робот. Решение задач
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения программированию, которая была создана в Отделении информатики Российской Академии наук. Эта система разработана. . .
Асинхронное программировани­е и async/await в JavaScript
bytestream 27.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в современной разработке на JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru