Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 03.06.2016
Сообщений: 6

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

20.05.2019, 18:09. Показов 1038. Ответов 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
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru