Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.12.2015, 16:44   #1
zevs1112
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 10
Репутация: 10
По умолчанию помогите сделать чтоб количество N было два и работала прога

Код:
program Gauss;

const

N=3;

A:array[1..N,1..N] of real = ((9.1, 5.6, 7.8),

(3.8, 5.1, 2.8),

(4.1, 5.7, 1.2));

B:array[1..N] of real = (9.8, 6.7, 5.8);

type

matrtype=array[1..N,1..N+1] of real;

var

i,j:byte;

matr:matrtype;

procedure Gausse(var matr:matrtype; N:byte);

var i,j,k:byte;

begin

for i:=1 to N-1 do

for j:=i+1 to N do

for k:=N+1 downto i do

matr[j,k]:=matr[j,k]-matr[i,k]/matr[i,i]*matr[j,i];

for i:=N downto 1 do

begin

for j:=i+1 to N do

Matr[i,N+1]:=Matr[i,N+1]-Matr[i,j]*Matr[j,N+1];

Matr[i,N+1]:=Matr[i,N+1]/Matr[i,i];

end;

end;
begin
writeln('reshenie sistemi iz ',N,' linear yravnenii');

for i:=1 to N do

begin

writeln('vvodim yravnenie',i,':');

for j:=1 to N do

begin

write('A[',i

,',',j,']=');

read(A[i,j]);

end;

write('B[',i,']=');

readln(B[i]);

end;

writeln('Sistema linear yravnenii');


for i:=1 to N do

begin

for j:=1 to N do

write(A[i,j]:5:2);

writeln(B[i]:5:2);

end;
for i:=1 to N do

begin

for j:=1 to N do

matr[i,j]:=A[i,j];

matr[i,N+1]:=B[i];

end;
Gausse(matr,N);

writeln('reshenie sistemi yravnenii:');

for i:=1 to N do

writeln('X',i,'=',matr[i,N+1]:5:2);
end.

Последний раз редактировалось Вадим Мошев; 12.12.2015 в 16:52.
zevs1112 вне форума   Ответить с цитированием
Старый 12.12.2015, 17:46   #2
zevs1112
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 10
Репутация: 10
По умолчанию

вот как написать чтоб было из двух элементов? заранее спасибо
zevs1112 вне форума   Ответить с цитированием
Старый 12.12.2015, 17:53   #3
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,767
Репутация: 1655

skype: newerow1989
По умолчанию

Код:
N=2;
A:array[1..N,1..N] of real = ((9.1, 5.6),
(3.8, 5.1));
B:array[1..N] of real = (9.8, 6.7);
Так что ли?
__________________
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.narod.ru
[Паскаль] [Delphi]
newerow1989 вне форума   Ответить с цитированием
Старый 12.12.2015, 18:12   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,673
Репутация: 5617
По умолчанию

zevs1112, а что так сложно заменить N=3 на N=2 ?!
и выкинуть конкретные числа из массивов A и B (кстати, почему они у Вас const, если Вы в них значения считываете?!!!)

короче:
Код:
program Gauss;

const
  N = 2;

type
  matrtype = array[1..N, 1..N + 1] of real;

procedure Gausse(var matr: matrtype; N: byte);
var
  i, j, k: byte;
begin
  for i := 1 to N - 1 do
    for j := i + 1 to N do
      for k := N + 1 downto i do
        matr[j, k] := matr[j, k] - matr[i, k] / matr[i, i] * matr[j, i];
  
  for i := N downto 1 do 
  begin
    for j := i + 1 to N do
      Matr[i, N + 1] := Matr[i, N + 1] - Matr[i, j] * Matr[j, N + 1];
    Matr[i, N + 1] := Matr[i, N + 1] / Matr[i, i];
  end;
end;

var
  i, j: byte;
  A: array[1..N, 1..N] of real;
  B: array[1..N] of real;
  matr: matrtype;
begin
  writeln('reshenie sistemi iz ', N, ' linear yravnenii');
  
  for i := 1 to N do
  begin
    writeln('vvodim yravnenie', i, ':');
    for j := 1 to N do
    begin
      write('A[', i, ',', j, ']=');
      read(A[i, j]);
    end;
    write('B[', i, ']=');
    readln(B[i]);
  end;
  
  writeln('Sistema linear yravnenii');
  for i := 1 to N do
  begin
    for j := 1 to N do
      write(A[i, j]:5:2,' ');
    writeln('  ',B[i]:5:2);
  end;
  for i := 1 to N do
  begin
    for j := 1 to N do
      matr[i, j] := A[i, j];
    matr[i, N + 1] := B[i];
  end;

  Gausse(matr, N);
  
  writeln('reshenie sistemi yravnenii:');
  
  for i := 1 to N do
    writeln('X', i, '=', matr[i, N + 1]:5:2);
end.
p.s. разумеется, можно выкинуть вообще массивы A и B и вводить всё сразу в массив matr


newerow1989, всё верно. Но если Вы разберёте код, то увидите, что заданные числовые константы в коде не используются.
Это результат кривой переделки кода (добавили ручной ввод)...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 12.12.2015, 20:34   #5
zevs1112
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 10
Репутация: 10
По умолчанию

всем большое спасибо посижу конечно по разбираю просто в паскале не очень шарю вот и спросил , спасибо)
zevs1112 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтоб программа работала в фоновом режиме nik-maximal Общие вопросы Delphi 3 25.05.2011 20:14
как сделать чтоб из richedit можно было сохранять txt и rtf на выбор??? betirsolt Общие вопросы Delphi 10 22.05.2011 23:22
Как сделать чтоб при нажатии кнопки форма не работала? quarty Помощь студентам 6 05.11.2010 16:50
Как сделать чтоб вместо file.txt было значение Edit1.text quarty Общие вопросы Delphi 2 22.10.2010 16:54
Помогите кто шарит в паскале - создать ехе файл чтоб программа работала и считала VoLedi Фриланс 4 04.05.2009 03:37


20:20.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru