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

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

10.01.2022, 06:37. Показов 993. Ответов 3
Метки нет (Все метки)

Помогите перевести проги из паскаля в с++
1
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
program lab1;
 
uses
  Crt;
 
const
  n = 3;
  c = n + 1;
 
{ Вычисляет значение функции в точке x }
function F(x: Real): Real;
begin
  F := c * c * c * Cos((x + 10 * c) / c);
end;
 
{ Округляет число r до 4-х знаков после запятой }
function RoundTo4(r: Real): Real;
const
  k = 10000;
begin
  RoundTo4 := Round(r * k) / k;
end;
 
const
  h = 0.01; { Шаг }
  max = 15;
var
  mx: array[0..max] of Real; { Массив для значений x c шагом h }
  my: array[0..max] of Real; { Массив для табличных значений функции }
  x, y: Real;
  i, k: Integer;
  q: Real;
begin
  ClrScr;
  x := c;
  Writeln('Таблица значений функции:');
  for i := 0 to max do begin { Составляем таблицу значений функции }
    y := RoundTo4(F(x));
    mx[i] := x;
    my[i] := y;
    Writeln('x = ', mx[i]:6:4, ', y = ', my[i]:6:4);
    x := x + h;
  end;
  Readln;
  ClrScr;
  Writeln('Результаты линейной интерполяции:');
  x := c + 0.6 * h;
  for i := 1 to 14 do begin
    k := 0;
    while x < mx[k] do
      Inc(k);
    q := (x - mx[k]) / h; { Вычисляем значения функции с пом. линейной интерполяции }
    y := my[k] + q * (my[k + 1] - my[k]);
    Writeln('x = ', x:6:4, ', y(прибл) = ', y:6:4, ', y(точн) = ', F(x):6:4);
    x := x + 0.6 * h;
  end;
  Readln;
end.


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
program lab2;
 
uses 
  Crt;
 
const
  n = 4; { Количество уравнений системы }
  e = 0.0001; { Точность вычислений }
 
var
  x: array[1..n] of Real; { Текущие значения }
  xPrev: array[1..n] of Real; { Предыдущие значения }
  r: array[1..n] of Real; { Массив разностей значений }
  max: Real; { Максимум разности значений }
  iter: Integer; { Количество итераций }
  i: Integer;
begin
  ClrScr; { Очищаем экран }
  x[1] := 2.531; { Начальные приближения }
  x[2] := -2.45;
  x[3] := -0.879;
  x[4] := 0.737;
  iter := 0;
  repeat
    Inc(iter);
    for i := 1 to n do
      xPrev[i] := x[i];
    { Вычисляем новые значения }
    x[1] := 2.531 - 0.296 * x[2] + 0.143 * x[3] - 0.306 * x[4]; 
    x[2] := -2.45 + 0.093 * x[1] - 0.302 * x[3] - 0.349 * x[4];
    x[3] := -0.879 + 0.168 * x[1] - 0.295 * x[2] + 0.197 * x[4];
    x[4] := 0.737 - 0.234 * x[1] + 0.183 * x[2] - 0.429 * x[3];
    for i := 1 to n do
      r[i] := Abs(x[i] - xPrev[i]);
    max := r[1]; { Находим максимум разностей значений }
    for i := 2 to n do
      if r[i] > max then
        max := r[i];
  until max < e;
  Writeln('Решение методом Зейделя:');
  { Выводим результаты решения }
  for i := 1 to n do
    Writeln('x', i, ' = ', x[i]:6:4); 
  Writeln;
  Writeln('Количество итераций: ', iter);
  Readln;
end.


3
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
program lab3;
 
uses
  Crt;
 
const
  n = 3;
  c = n + 1;
 
{ Вычисляет значение функции в точке x }
function F(x: Real): Real;
begin
  F := Sin(c * x) / c;
end;
 
{ Вычисляет значение производной функции в точке x }
function Fp(x: Real): Real;
begin
  Fp := Cos(c * x);
end;
 
{ Округляет число r до 4-х знаков после запятой }
function RoundTo4(r: Real): Real;
const
  k = 10000;
begin
  RoundTo4 := Round(r * k) / k;
end;
 
const
  h = 0.027; { Шаг }
  max = 16;
var
  mx: array[-1..max] of Real; { Массив для значений x c шагом h }
  my: array[-1..max] of Real; { Массив для значений функции }
  x, y: Real;
  yp: Real; { Приближенное значение производной функции }
  i: Integer;
begin
  ClrScr;
  x := c - h;
  Writeln('Таблица значений функции:');
  for i := -1 to max do begin { Составляем таблицу значений функции }
    y := RoundTo4(F(x));
    mx[i] := x;
    my[i] := y;
    x := x + h;
    Writeln('x = ', mx[i]:6:4, ', f(x) = ', my[i]:6:4);
  end;
  Readln;
  ClrScr;
  Writeln('Таблица приближенных и точных значений производной:');
  for i := 1 to max - 1 do begin
    { Вычисляем приближенное значение производной функции }
    yp := (my[i + 1] - my[i - 1]) / (2 * h);
    Writeln('x = ', mx[i]:6:4,
      ', f''(x)(прибл) = ', yp:6:4, ', f''(x)(точн) = ', Fp(mx[i]):6:4);
  end;
  Readln;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2022, 06:37
Ответы с готовыми решениями:

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

Перевести с паскаля
CONST MAX_N = 100; Type TNode = ^Node; Node = record next : TNode; info...

Перевести с Паскаля на Си
uses crt; var j,k,n,m,s1,s2:integer; begin clrscr; s1:=1; s2:=2; write(&quot;Введите...

Перевести с паскаля
Var S : set of byte; zeros , ones , n : integer; a , C : array of integer; Procedure...

3
Модератор
7957 / 5251 / 2178
Регистрация: 21.01.2014
Сообщений: 22,584
Записей в блоге: 3
10.01.2022, 07:24 2
Strelok-R, в следующий раз по шапке получите от модератора раздела: одна тема - одна задача! Запомните это на будущее, если оно у Вас будет!
Первое задание:
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
#include <iostream>
 
const int n = 4, max = 15;
const double h = 0.01;
 
double F(double a, double b)
{
    return a * a * a * cos((b + 10 * a) / a);
}
 
int main()
{
    double mXY[2][max];
    double x = n;
    std::cout << "Function value table:\n";
    for (int i = 0; i < max; i++) {
        mXY[0][i] = x;
        mXY[1][i] = F(n, x);
        printf("X = %.4f\tY = %.4f\n", mXY[0][i], mXY[1][i]);
        x += h;
    }
    std::cout << "\nLinear interpolation results:\n";
    x = n + 0.6 * h;
    for (int i = 1; i < max - 1; i++) {
        int k = 0;
        while (x < mXY[0][k]) k++;
        double q = (x - mXY[0][k]) / h;
        double y = mXY[1][k] + q * (mXY[1][k + 1] - mXY[1][k]);
        printf("X = %.4f\tY(p) = %.4f\tY(t) = %.4f\n", x, y, F(n, x));
        x += 0.6 * h;
    }
}
Миниатюры
Перевести из паскаля в с++  
1
Модератор
7957 / 5251 / 2178
Регистрация: 21.01.2014
Сообщений: 22,584
Записей в блоге: 3
10.01.2022, 07:46 3
Третье задание:
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
#include <iostream>
 
const int n = 4, max = 16;
const double h = 0.027;
 
double F(double x)
{
    return sin(n * x) / n;
}
 
double Fp(double x)
{
    return cos(n * x);
}
 
int main()
{
    double mXY[2][max];
    double x = n - h;
    std::cout << "Function value table:\n";
    for (int i = 0; i < max; i++) {
        mXY[0][i] = x;
        mXY[1][i] = F(x);
        printf("x = %.4f\tF(x) = %.4f\n", mXY[0][i], mXY[1][i]);
        x += h;
    }
    std::cout << "\nTable of approximate and exact values of the derivative:\n";
    x = n + 0.6 * h;
    for (int i = 1; i < max - 1; i++) {
        double yp = (mXY[1][i + 1] - mXY[1][i - 1]) / (2 * h);
        printf("x = %.4f\tf'(x)(p) = %.4f\tf'(x)(t) = %.4f\n", mXY[0][i], yp, Fp(mXY[0][i]));
    }
}
Миниатюры
Перевести из паскаля в с++  
1
Модератор
7957 / 5251 / 2178
Регистрация: 21.01.2014
Сообщений: 22,584
Записей в блоге: 3
10.01.2022, 15:40 4
Лучший ответ Сообщение было отмечено Strelok-R как решение

Решение

Второе задание:
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
#include <iostream>
#include <climits>
#include <cmath>
 
const int n = 4, eps = 0.0001;
 
int main()
{
    double X[3][n];
    X[0][0] = 2.531; X[0][1] = -2.45; X[0][2] = -0.879; X[0][3] = 0.737;
    int iter = 0;
    double Max = DBL_MIN;
    do {
        iter++;
        for (int i = 0; i < n; i++)
            X[1][i] = X[0][i];
        X[0][0] -= 0.296 * X[0][1] + 0.143 * X[0][2] - 0.306 * X[0][3];
        X[0][1] += 0.093 * X[0][0] - 0.302 * X[0][2] - 0.349 * X[0][3];
        X[0][2] += 0.168 * X[0][0] - 0.295 * X[0][1] + 0.197 * X[0][3];
        X[0][3] -= 0.234 * X[0][0] + 0.183 * X[0][1] - 0.429 * X[0][2];
        for (int i = 0; i < n; i++) {
            X[2][i] = fabs(X[0][i] - X[1][i]);
            Max = X[2][i] > Max ? X[2][i] : Max;
        }
        std::cout << "\nSolution by Seidel's method:\n";
        for (int i = 0; i < n; i++)
            printf("x[%d] = %.4f\n", i + 1, X[0][i]);
    } while (Max < eps);
}
Миниатюры
Перевести из паскаля в с++  
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2022, 15:40
Помогаю со студенческими работами здесь

Перевести с паскаля
program task_1_3; var i, j, n: integer; m: array of integer; //на экране больше не...

Перевести из Паскаля в Си
Программа в Паскале: uses crt; const nmax=100; var a:array of integer; n,i,i1,k:byte;...

Перевести из паскаля в c++
собственно вот паскалевский код, тут через файлы. На с++ надо через ввод/вывод. var N:integer; ...

Перевести с Паскаля на С++
uses crt; var n,k:byte; p,s:longint; begin clrscr; write('Введите произведение нескольких...

Перевести из паскаля на с++
program laba2; var x,y: real; begin writeln ('введите координаты точки: '); read(x,y); if...

Перевести из паскаля на с++
program laba2; var s,i,n: integer; a: array of integer; begin write ('введите количество...

Перевести из паскаля на с++
Program laba5; var K: array of real; i: integer; begin for i:= 1 to 15 do begin K :=...


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

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

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