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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 18:48   #1
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
Вопрос Задания в Паскале через двойной массив,с использованием метода Гауса

Добрый вечер всем!

Предупреждаю сразу-условия заданий возможно могут быть не совсем понятными, но так нам в быстром темпе продектовал преподователь....

1-написать программу,которая поменяет местами строки (ряды) в матрице.

2-написать программу,которая делает сравнение. Если равно нулю,тогда выйти из программы и сказать,что нет единого решения.

3-Усовершенстовать программу там,где нет решения уравнения изменённой строки (ряда) (т.е. в том месте где написано writeln('нет решения')).

в этом же задании:

3.1-надо дополнить так,чтобы работала в любое время(т.е.чтобы было одно единственное решение,и небыло одно единственного решения,т.е. когда все нули)
3.2-если в случае.что один из коэффициентовравен 0,надо поменять с первой колонкой (столбцом),которая отличается от нулевой колонки (столбца).Если такое есть,тогда поменять,если нет-тогда одно единственное решение

(К 3-ему ЗАДАНИЮ имеется код,который как раз и надо дополнить по заданию)

Код:
program gauss;
const y=10;
type tips=array [1..y,1..y+1] of real;
     tips1=array [1..y] of real;
var i,j,k,n,u,m:integer;
    z:real;
    a:tips;
    x:tips1;
begin
     readln (n);
     for i:=1 to n do
         for k:=1 to n+1 do readln (a[i,k]);
     u:=0;
     repeat
           writeln ('u=',u);
           u:=u+1;
           k:=u;
           while (a[k,u]=0) and (k<=n) do
                 begin
                 k:=k+1;
                 if k>=n then begin
                              writeln ('Net rewenija');
                              halt (1)
                              end
                 end;
           if k<>u then for m:=u to n+1 do begin
                                           z:=a[u,m];
                                           a[u,m]:=a[k,m];
                                           a[k,m]:=z
                                           end;
           for j:=n+1 downto u do a[u,j]:=a[u,j]/a[u,u];
           for i:=u+1 to n do
               for j:=u+1 to n+1 do
                   a[i,j]:=a[i,j]-a[i,u]*a[u,j]
     until u=n;
     m:=n+1;
     for i:=n downto 1 do begin
                          x[i]:=a[i,m];
                          if i>1 then for k:=i-1 downto 1 do
                             a[k,m]:=a[k,m]-a[k,i]*x[i]
                          end;
     for i:=1 to n do writeln ('x(',i,')=',x[i]);
     readln
end.
Novenkaja вне форума Ответить с цитированием
Старый 26.04.2011, 19:17   #2
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

если трудно решить все 3 задачи,то мне хотя бы решения первых двух))))

а то перепробывала разные варианты,но то не компилирует,то компилирует,но не даёт ран...
Novenkaja вне форума Ответить с цитированием
Старый 26.04.2011, 19:59   #3
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

Код:
program masiv;
const
	size_row = 10;	{ число строк }
	size_col = 10;	{ число столбцов }
type
	tvector = array[1 .. size_col] of integer;
	tmatrix = array[1 .. size_row] of tvector;
var
  mx: tmatrix;
  i, j: integer;

procedure swap_rows(var mx: tmatrix; const i, j: integer);
var T: tvector;
begin
	T := mx[i]; mx[i] := mx[j]; mx[j] := T
end;

procedure print(var mx: tmatrix);
var i, j: integer;
begin
	for i := 1 to size_row do begin
		for j := 1 to size_col do
			write(mx[i][j]:4);
		writeln
	end;
end;


begin
	{ Заполнение матрицы }
	for i := 1 to size_row do
		for j := 1 to size_col do
			mx[i][j] := random(100);

	{ Матрица до обмена }
	writeln('before:'); print(mx);

	{ Обмен строк }
	swap_rows(mx, 1, 5);

	{ Матрица после обмена }
	writeln('after:'); print(mx);
end.
код ко второму заданию

компилирует,но не хочет выдавать ран.в чём ошибка???
помогите пожалуйста
Novenkaja вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Паскале через двойной массив составить матрицу Novenkaja Помощь студентам 5 13.04.2011 11:11
метода Гауса Виктория Нисова Visual C++ 2 01.04.2011 15:02
Решение СЛАУ методом Гауса на Паскале Klik_1602 Помощь студентам 3 04.01.2011 22:00
Использование метода двойной буферизации для динамической графики(избавление от мерцания) noxin Win Api 1 05.04.2010 20:08
Win Api: использование метода двойной буферизации для динамической графики(избавление от мерцания) noxin Помощь студентам 0 05.04.2010 19:55