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

Перевести код из Паскаль в C#

20.05.2019, 18:09. Показов 1057. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код на паскаль. Все работает хорошо, но когда написала то же самое на C#, результат не правильный. Подскажите, где может быть ошибка. Не могу найти.
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
uses crt;
const mf=500;
type
vector=array[1..mf] of real;
var {раздел описания переменных, которые мы будем использовать в
программе}
i, j, N : integer;
T, alfa, beta : vector;
ai, bi, ci, fi : real;
lamda, ro, c, h, tau : real;
Tl, T0, Tr, L, t_end, time : real;
f, g : text;
begin
clrscr;
{с клавиатуры вводим все необходимые входные параметры}
Writeln('Введите количество пространственных узлов, N');
Readln(N);
Writeln('Введите окончание по времени, t_end');
Readln(t_end);
Writeln('Введите толщину пластины, L');
Readln(L);
Writeln('Введите коэффициент теплопроводности материала пластины,lamda');
Readln(lamda);
Writeln('Введите плотность материала пластины, ro');
Readln(ro);
Writeln('Введите теплоемкость материала пластины, c');
Readln(c);
Writeln('Введите начальную температуру, T0');
Readln(T0);
Writeln('Введите температуру на границе х=0, Tl');
Readln(Tl);
Writeln('Введите температуру на границе х=L, Tr');
Readln(Tr);
{определяем расчетный шаг сетки по пространственной координате}
h:=L/(N-1);
{определяем расчетный шаг сетки по времени}
tau:=t_end/100.0;
{определяем поле температуры в начальный момент времени}
for i:= 1 to N do
T[i]:=T0;
{проводим интегрирование нестационарного уравнения
теплопроводности}
time:=0;
while time<t_end do {используем цикл с предусловием}
begin
time:=time+tau;
{определяем начальные прогоночные коэффициенты на основе левого
граничного условия}
alfa[1]:=0.0;
beta[1]:=Tl;
{цикл с параметром для определения прогоночных коэффициентов по
формуле (8)}
for i:= 2 to N-1 do
begin
{ai, bi, ci, fi – коэффициенты канонического представления СЛАУ с
трехдиагональной матрицей}
ai:=lamda/sqr(h);
bi:=2.0*lamda/sqr(h)+ro*c/tau;
ci:=lamda/sqr(h);
fi:=-ro*c*T[i]/tau;
{alfa[i], beta[i] – прогоночные коэффициенты}
alfa[i]:=ai/(bi-ci*alfa[i-1]);
beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]);
end;
{определяем значение температуры на правой границе}
T[N]:=Tr;
{используя соотношение (7) определяем неизвестное поле
температуры}
for i:= N-1 downto 1 do
T[i]:=alfa[i]*T[i+1]+beta[i];
end;
for i:= 1 to N do
WriteLn(T[i]);
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
namespace Areal_Lin
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button_Yr_Click(object sender, EventArgs e)
        {
            int N=11;
            double[] T = new double[500];
            double[] alfa = new double[500];
            double[] beta = new double[500];
            double ai;
            double bi;
            double ci;
            double fi;
            double lamda=46;
            double ro=7800;
            double c=460;
            double h;
            double tau;
            double Tl=300;
            double Tr=100;
            double T0=20;
            double L=0.1;
            double t_end=60;
            double time=0;
 
            h = L / (N - 1);
            label1.Text += h.ToString();
            tau = t_end / 100;
            label2.Text += tau.ToString();
 
            for(int i=0; i<N; i++)
            {
                T[i] = T0;
            }
            for (int i = 0; i < N; i++)
            {
                label3.Text += T[i].ToString() + "\r\n";
            }
 
            while ( time<t_end)
            {
                time = time + tau;
                alfa[1] = 0;
                beta[1] = Tl;
 
 
                for (int i = 2; i < N - 1; i++)
                {
                    ai = lamda / (h * h);
                    bi = ((2 * lamda) / (h * h)) + (ro * c) / tau;
                    ci = lamda / (h * h);
                    fi = (-ro * c * T[i]) / tau;
 
                    alfa[i] = ai / (bi - ci * alfa[i - 1]);
                    beta[i] = (ci * beta[i - 1] - fi) / (bi - ci * alfa[i - 1]);
                   
                }
                
                T[N] = Tr;
               for (int i = N - 1; i > 0; i--)
                {
                    T[i] = alfa[i] * T[i+ 1] + beta[i];
                }
 
                
            }
            for (int i = 1; i < N+1 ; i++)
                label4.Text += i.ToString() + " " + T[i].ToString() + "\r\n";
 
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2019, 18:09
Ответы с готовыми решениями:

Перевести код из паскаль АБС в фри паскаль
Необходимо перевести этот код из паскаля АБЦ в фрипаскаль Спасибо! program test; const n=20; var ...

Нужно код из паскаль перевести в делфи (сортировка выбором), код ниже и условие
нужно добавить в процедуру делфи код сортировки выбором из паскаль чтобы сортировало код делфи procedure TForm1.Button18Click(Sender:...

Перевести код с С++ на паскаль
Товарищи, как перевести код с С++ на паскаль #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt;...

6
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
20.05.2019, 18:29
MonAmii, не забывайте, что в отличие от паскаля в C# нумерация массивов начинается с нуля. Перепроверьте код на этот тезис, в том числе строки 49, 50, 53, 66, 73.
0
0 / 0 / 0
Регистрация: 03.06.2016
Сообщений: 6
20.05.2019, 19:39  [ТС]
Исправила, но это ничего не изменило. Ответ все равно не совпадает. Даже не выполняются граничные условия
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
20.05.2019, 19:40
MonAmii, показывайте исправления.
0
0 / 0 / 0
Регистрация: 03.06.2016
Сообщений: 6
21.05.2019, 08:30  [ТС]
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
 int N=11;
            double[] T = new double[500];
            double[] alfa = new double[500];
            double[] beta = new double[500];
            double ai;
            double bi;
            double ci;
            double fi;
            double lamda=46;
            double ro=7800;
            double c=460;
            double h;
            double tau;
            double Tl=300;
            double Tr=100;
            double T0=20;
            double L=0.1;
            double t_end=60;
            double time=0;
 
            h = L / (N - 1);
            label1.Text += h.ToString();
            tau = t_end / 100;
            label2.Text += tau.ToString();
 
            for(int i=0; i<N; i++)
            {
                T[i] = T0;
            }
            for (int i = 0; i < N; i++)
            {
                label3.Text += T[i].ToString() + "\r\n";
            }
 
            while ( time<t_end)
            {
                time = time + tau;
                alfa[0] = 0;
                beta[0] = Tl;
 
 
                for (int i = 1; i < N - 1; i++)
                {
                    ai = lamda / (h * h);
                    bi = ((2 * lamda) / (h * h)) + (ro * c) / tau;
                    ci = lamda / (h * h);
                    fi = (-ro * c * T[i]) / tau;
 
                    alfa[i] = ai / (bi - ci * alfa[i - 1]);
                    beta[i] = (ci * beta[i - 1] - fi) / (bi - ci * alfa[i - 1]);
                   
                }
                T[1] = Tl;
                T[N] = Tr;
               for (int i = N - 1; i > 0; i--)
                {
                    T[i] = alfa[i] * T[i+ 1] + beta[i];
                }
 
                
            }
            for (int i = 0; i < N ; i++)
                label4.Text += i.ToString() + " " + T[i].ToString() + "\r\n";
 
        }
Ответ остается прежним, изменилась только нумерация.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
21.05.2019, 13:02
66ю строку не исправили (теперь она 55)
C#
55
for (int i = N - 2; i >= 0; i--)
Добавлено через 3 часа 49 минут
53й строки нет в Pascal, удалите ее.
Еще в строке 54 не учли:
C#
54
T[N - 1] = Tr;
https://rextester.com/RDR10002 - Паскаль
https://rextester.com/UGNXT4858 - C#
0
0 / 0 / 0
Регистрация: 03.06.2016
Сообщений: 6
21.05.2019, 20:34  [ТС]
Спасибо, это помогло!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2019, 20:34
Помогаю со студенческими работами здесь

Перевести код из Паскаль в C#
Даны два целочисленных массива, состоящих из одинакового числа элементов. Получить третий массив той же размерности, каждый элемент...

Перевести код с С++ в Паскаль
#include &quot;Chet.h&quot; int main(void) { setlocale(LC_ALL, &quot;Russian&quot;); int k,t,i,j,a; cout&lt;&lt;&quot;Введите длинну массива:...

Перевести код c++ на паскаль
Помогите перевести прогрммму из c++ на паскаль #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; int b, n; char s,...

Перевести код из С++ в паскаль
Помогите, пожалуйста, перевести код из с# в паскаль, очень надо, а сам я в с# ноль без палочки #include &quot;stdafx.h&quot; ...

Перевести код из C++ в Паскаль
Добрый вечер! Нужна помощь в переводе части кода на паскаль, т.к. не шарю в нем и пишу на C++ Весь код #include &quot;pch.h&quot; ...


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru