Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2019, 15:10   #1
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию Перевести с Паскаля на C#

Код:
Program Gauss; 
const n=30; 
var 
pogr,f:array[1..n] of real; 
a: array[1..n, 1..n] of real; 
b: array[1..n] of real; 
x: array[1..n] of real; 
i, j, k: integer; 
r, g, max: real; 

begin 

a[1,1]:= 10; a[1,2]:=5.5; a[1,3]:= 2; a[1,4]:= 1; 
a[2,1]:=5.5; a[2,2]:=10; a[2,3]:=5.5; a[2,4]:= 2; a[2,5]:=1; 
a[3,1]:= 2; a[3,2]:=5.5; a[3,3]:=10; a[3,4]:=5.5; a[3,5]:=2; a[3,6]:=1; 
a[4,1]:= 1; a[4,2]:=2; a[4,3]:= 5.5; a[4,4]:=10; a[4,5]:=5.5; a[4,6]:=2; a[4,7]:=1; 
a[5,2]:=1; a[5,3]:= 2; a[5,4]:=5.5; a[5,5]:=10; a[5,6]:=5.5; a[5,7]:=2; a[5,8]:=1; 
a[6,3]:=1; a[6,4]:=2; a[6,5]:=5.5; a[6,6]:=10; a[6,7]:=5.5; a[6,8]:=2; a[6,9]:=1; 
a[7,4]:=1; a[7,5]:=2; a[7,6]:=5.5; a[7,7]:=10; a[7,8]:=5.5; a[7,9]:=2; a[7,10]:=1; 
a[8,5]:=1; a[8,6]:=2; a[8,7]:=5.5; a[8,8]:=10; a[8,9]:=5.5; a[8,10]:=2; a[8,11]:=1; 
a[9,6]:=1; a[9,7]:=2; a[9,8]:=5.5; a[9,9]:=10; a[9,10]:=5.5; a[9,11]:=2; a[9,12]:=1; 
a[10,7]:=1; a[10,8]:=2; a[10,9]:=5.5; a[10,10]:=10; a[10,11]:=5.5; a[10,12]:=2; a[10,13]:=1; 
a[11,8]:=1; a[11,9]:=2; a[11,10]:=5.5; a[11,11]:=10; a[11,12]:=5.5; a[11,13]:=2; a[11,14]:=1; 
a[12,9]:=1; a[12,10]:=2; a[12,11]:=5.5; a[12,12]:=10; a[12,13]:=5.5; a[12,14]:=2; a[12,15]:=1; 
a[13,10]:=1; a[13,11]:=2; a[13,12]:=5.5; a[13,13]:=10; a[13,14]:=5.5; a[13,15]:=2; a[13,16]:=1; 
a[14,11]:=1; a[14,12]:=2; a[14,13]:=5.5; a[14,14]:=10; a[14,15]:=5.5; a[14,16]:=2; a[14,17]:=1; 
a[15,12]:=1; a[15,13]:=2; a[15,14]:=5.5; a[15,15]:=10; a[15,16]:=5.5; a[15,17]:=2; a[15,18]:=1; 
a[16,13]:=1; a[16,14]:=2; a[16,15]:=5.5; a[16,16]:=10; a[16,17]:=5.5; a[16,18]:=2; a[16,19]:=1; 
a[17,14]:=1; a[17,15]:=2; a[17,16]:=5.5; a[17,17]:=10; a[17,18]:=5.5; a[17,19]:=2; a[17,20]:=1; 
a[18,15]:=1; a[18,16]:=2; a[18,17]:=5.5; a[18,18]:=10; a[18,19]:=5.5; a[18,20]:=2; a[18,21]:=1; 
a[19,16]:=1; a[19,17]:=2; a[19,18]:=5.5; a[19,19]:=10; a[19,20]:=5.5; a[19,21]:=2; a[19,22]:=1; 
a[20,17]:=1; a[20,18]:=2; a[20,19]:=5.5; a[20,20]:=10; a[20,21]:=5.5; a[20,22]:=2; a[20,23]:=1; 
a[21,18]:=1; a[21,19]:=2; a[21,20]:=5.5; a[21,21]:=10; a[21,22]:=5.5; a[21,23]:=2; a[21,24]:=1; 
a[22,19]:=1; a[22,20]:=2; a[22,21]:=5.5; a[22,22]:=10; a[22,23]:=5.5; a[22,24]:=2; a[22,25]:=1; 
a[23,20]:=1; a[23,21]:=2; a[23,22]:=5.5; a[23,23]:=10; a[23,24]:=5.5; a[23,25]:=2; a[23,26]:=1; 
a[24,21]:=1; a[24,22]:=2; a[24,23]:=5.5; a[24,24]:=10; a[24,25]:=5.5; a[24,26]:=2; a[24,27]:=1; 
a[25,22]:=1; a[25,23]:=2; a[25,24]:=5.5; a[25,25]:=10; a[25,26]:=5.5; a[25,27]:=2; a[25,28]:=1; 
a[26,23]:=1; a[26,24]:=2; a[26,25]:=5.5; a[26,26]:=10; a[26,27]:=5.5; a[26,28]:=2; a[26,29]:=1; 
a[27,24]:=1; a[27,25]:=2; a[27,26]:=5.5; a[27,27]:=10; a[27,28]:=5.5; a[27,29]:=2; a[27,30]:=1; 
a[28,25]:=1; a[28,26]:=2; a[28,27]:=5.5; a[28,28]:=10; a[28,29]:=5.5; a[28,30]:=2; 
a[29,26]:=1; a[29,27]:=2; a[29,28]:=5.5; a[29,29]:=10; a[29,30]:=5.5; 
a[30,27]:=1; a[30,28]:=2; a[30,29]:=5.5; a[30,30]:=10; 

b[1]:=173; b[2]:=200; b[3]:=182; b[4]:=180.5; b[5]:=143; 
b[6]:=110; b[7]:=71.5; b[8]:=52; b[9]:=-27.5; b[10]:=-48.5; 
b[11]:=29; b[12]:=64.5; b[13]:=84.5; b[14]:=44.5; b[15]:=54.5; 
b[16]:=120; b[17]:=76; b[18]:=-35; b[19]:=-87.5; b[20]:=-116.5; 
b[21]:=-135; b[22]:=-108; b[23]:=-19.5; b[24]:=-40.5; b[25]:=-131; 
b[26]:=-154.5; b[27]:=-162; b[28]:=-123.5; b[29]:=-56; b[30]:=-34.5; 

for i:=1 to n do {вывод значений элементов массива на экран} 
begin 
for j:=1 to n do 
write(a[i,j],' '); 
writeln(' ',b[i]); 
end;  

for k := 1 to n do { прямой ход Гаусса } 
begin 
for j := k + 1 to n do 
begin 
r := a[j, k] / a[k, k]; 
for i := k to n do 
begin 
a[j, i] := a[j, i] - r * a[k, i]; 
end; 
b[j] := b[j] - r * b[k]; 
end; 
end; 

for k := n downto 1 do { обратный ход Гаусса } 
begin 
r := 0; 
for j := k + 1 to n do 
begin 
g := a[k, j] * x[j]; 
r := r + g; 
end; 
x[k] := (b[k] - r) / a[k, k]; 
end; 
writeln; 
writeln('Корни системы:'); 
for i := 1 to n do 
writeln('x[', i, ']=', x[i]); 
writeln; 

for i:=1 to n do
for j:=1 to n do 
f[i]:=f[i]+a[i,j]*x[j]; 

for i := 1 to n do 
pogr[i]:=abs(f[i]-b[i]); 

max:=pogr[1]; 
for i:=1 to n do 
begin
Writeln('Погрешность: ', pogr[i]); 
if pogr[i]>max then 
max:=pogr[i]; 
end;
Writeln;
Writeln('Максимальная погрешность: ', max); 
Writeln;
end.

Последний раз редактировалось Alex11223; 09.09.2019 в 16:32.
plktre вне форума Ответить с цитированием
Старый 09.09.2019, 15:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от plktre Посмотреть сообщение
Код:
a[1,1]:= 10; a[1,2]:=5.5; a[1,3]:= 2; a[1,4]:= 1; 
a[2,1]:=5.5; a[2,2]:=10; a[2,3]:=5.5; a[2,4]:= 2; a[2,5]:=1; 
a[3,1]:= 2; a[3,2]:=5.5; a[3,3]:=10; a[3,4]:=5.5; a[3,5]:=2; a[3,6]:=1;
заполнение массива впечатляет.

а по сути, что Вас останавливает от того, чтобы переписать код на C# один в один?

массивы в C# есть, цикл for тоже есть, вместо writeLn используйте Console.WriteLine
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2019, 16:29   #3
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию

Не могу понять в каком месте писать массив б.
вот а, но с другими числами и размером, чем я выше писала
Код:
static void Main(string[] args)
        {
            double[,] a = new double[,]

            {
                { 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
                { 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0 }, 
                { 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0 }, 
                { 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0 }, 
                { 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0,},
                { 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2 }, 
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40 }
            };
            Console.WriteLine("Исходный массив:");
            for (int i = 0; i < 15; i++)
            {
                Console.WriteLine("\n");
                for (int j = 0; j < 15; j++)
                {
                    Console.Write(a[i, j] + "\t");
                }
            }
            Console.ReadKey();
        }
    }
}
plktre вне форума Ответить с цитированием
Старый 09.09.2019, 17:06   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от plktre Посмотреть сообщение
Не могу понять в каком месте писать массив б.
сразу после описания массива A
как это сделано в коде из пост #1.

посмотрите пример тут - https://www.programmersforum.ru/showthread.php?t=272459
или тут - http://sources.codenet.ru/download/1464/Gauss.html

Последний раз редактировалось Serge_Bliznykov; 09.09.2019 в 17:10.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2019, 19:53   #5
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication35
{
    class Program
    {
        static void Main(string[] args)
        {
            double[,] a = new double[,]

            {
                { 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
                { 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0, 0 }, 
                { 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0, 0 }, 
                { 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0, 0 }, 
                { 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0, 0,},
                { 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, 2.2 }, 
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5, 4.4, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40, 11.5 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.2, 4.4, 11.5, 40 }
            };
            double[,] b = new double[,] { { 82.4 }, { -245.5 }, { -222.8 }, { 64.3 }, { -44.1 }, { 14.5 }, { -186.1 }, { -45.4 }, { 201.6 }, { -57.3 }, { 296 }, { 169.6 }, { -81.4 }, { 82.1 }, { -172.6 } };
            Console.WriteLine("Исходный массив:");
            for (int i = 0; i < 15; i++)
            {
                Console.WriteLine("\n");
                for (int j = 0; j < 15; j++)
                {
                    Console.Write(a[i, j] + "\t");
                }
                for (int i=0;i<15;i++)
                {
                    Console.Writeline(b[i] + "\n");
                }
            }
            Console.ReadKey();
        }
    }
}
Почему не выводит b((((

Последний раз редактировалось plktre; 09.09.2019 в 20:51.
plktre вне форума Ответить с цитированием
Старый 09.09.2019, 20:41   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ох мои глаза... ) Массив это чудесно ....
Чего то сомневаюсь что оно сеомпилилось у вас. Массив б вроде двумерный а обращаетесь к нему как к одномерному.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.09.2019, 20:44   #7
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию

Почему двумерный? Там 1х15 матрица
plktre вне форума Ответить с цитированием
Старый 09.09.2019, 20:45   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Double [,] это двумерный.
Уберите запятую и будет вектор.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.09.2019, 20:51   #9
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию

да что он все равно не хочет выводить..........
plktre вне форума Ответить с цитированием
Старый 09.09.2019, 20:55   #10
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Код:
for (int i = 0; i < 15; i++) <--------------------------------- Ничего не смущает?
            {
                Console.WriteLine("\n");
                for (int j = 0; j < 15; j++)
                {
                    Console.Write(a[i, j] + "\t");
                }                                                                    
                for (int i=0;i<15;i++)  <------------------------- Ничего не смущает?
                {
                    Console.Writeline(b[i] + "\n");
                }
            }
Вам же студия ошибки и предупреждения подчеркивает. Ну почему вы их не читаете то?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 09.09.2019 в 20:58.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перевести код из паскаля в с++ AlinaV Помощь студентам 1 04.12.2017 15:06
Перевести с Паскаля на С# SheetyG Помощь студентам 1 08.05.2017 07:27
перевести код с Паскаля на С++ Arman107 Паскаль, Turbo Pascal, PascalABC.NET 0 29.05.2013 09:13
перевести из паскаля на с++ екатерина новикова Общие вопросы C/C++ 1 19.12.2011 19:21
перевести из паскаля в си++ екатерина новикова Помощь студентам 0 19.12.2011 19:02