Форум программистов, компьютерный форум CyberForum.ru

метод Зейделя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция, которая копирует строку в другую строку заданное количество раз http://www.cyberforum.ru/cpp-beginners/thread8705.html
Помогите!!!! срочно нужна задача. Не знаю как сделать. Разработать функцию, которая копирует строку в другую строку заданное количество раз При реализации функции запрещается пользоваться функциями библиотек языка C.
C++ Помогите новичку:) { printf("\n\nEshe : "); scanf("%s",&e); if(e=='y') c=1; if(e=='n') c=3; } } printf("%s %i","\nVashu o4ki: ",isumma); http://www.cyberforum.ru/cpp-beginners/thread8703.html
C++ Описать структуру з именем WORKER
Привет уважаемые программисты!. Помогите пожалуйста (очень срочно нада!!) решить две задачи на С++. Очень прошу не оставляйте без внимания. Зарание спасибо!. 1.Даны две группы точек на плоскости. Найти радиус и центр круга, который проходит через n (n>2) точек первой группы и удерживает строго в середине себя одинаковое количество точек первой и второй группы. 2.Описать структуру з именем...
Помогите пожалуйста решить пару задач на зачет! C++
:help: 1. В текстовом файле посчитать процентное отношение гласных и согласных букв 2. Описать класс Треугольник, содержащий координаты вершин, конструктор, функцию, определяющую правильность введения данных, т.е. проверяющую возможность построения треугольника по заданным вершинам, и функцию, рисующую треугольник на экране. Продемонстрировать в программе работу всех функций. помогите...
C++ Помогите люди!!!с файлами.... http://www.cyberforum.ru/cpp-beginners/thread8690.html
Здравствуйте всем...!!!:).Помогите новичку пожалуйста....:'( Вычислить группу файлов "по маске",а затем вычислить перемещение файлов на съемный диск А: Заранее благодарю...:help:
C++ теория графов помогите пожалуйста с методом решения, не понимаю суть задачи, как ее реализовать.. В графе найти максимальное (по кол-ву) ребер подмножество попарно несмежных ребер. И если не трудно опдскажите как в этой задаче лучше всего представить граф в памяти компьютера! заранее боольшое вам спасибо) и здоровья вам.. и счастья.. и добра..)) подробнее

Показать сообщение отдельно
Lord_Voodoo
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
04.06.2008, 09:28     метод Зейделя
вот тебе код на паскале, перевести на с++ несложно:
Код
2.1.4. Листинг программы и результаты работы
Uses CRT;
Const
maxn = 10;
Type
Data = Real;
Matrix = Array[1..maxn, 1..maxn] of Data;
Vector = Array[1..maxn] of Data;
{ Процедура ввода расширенной матрицы системы }
Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);
Var
i, j, r: Integer;
Begin
r := WhereY;
GotoXY(2, r);
Write('A');
For i := 1 to n do begin
GotoXY(i*6+2, r);
Write(i);
GotoXY(1, r+i+1);
Write(i:2);
end;
GotoXY((n+1)*6+2, r);
Write('b');
For i := 1 to n do begin
For j := 1 to n do begin
GotoXY(j * 6 + 2, r + i + 1);
Read(a[i, j]);
end;
GotoXY((n + 1) * 6 + 2, r + i + 1);
Read(b[i]);
end;
End;
{ Процедура вывода результатов }
Procedure WriteX(n :Integer; x: Vector);
Var
i: Integer;
Begin
For i := 1 to n do
Writeln('x', i, ' = ', x[i]);
End;

{ Функция, реализующая метод Гаусса }
Function Gauss(n: Integer; a: Matrix; b: Vector; var x:Vector): Boolean;
Var
i, j, k, l: Integer;
q, m, t: Data;
Begin
For k := 1 to n - 1 do begin
{ Ищем строку l с максимальным элементом в k-ом столбце}
l := 0;
m := 0;
For i := k to n do
If Abs(a[i, k]) > m then begin
m := Abs(a[i, k]);
l := i;
end;
{ Если у всех строк от k до n элемент в k-м столбце нулевой,
то система не имеет однозначного решения }
If l = 0 then begin
Gauss := false;
Exit;
end;
{ Меняем местом l-ую строку с k-ой }
If l <> k then begin
For j := 1 to n do begin
t := a[k, j];
a[k, j] := a[l, j];
a[l, j] := t;
end;
t := b[k];
b[k] := b[l];
b[l] := t;
end;
{ Преобразуем матрицу }
For i := k + 1 to n do begin
q := a[i, k] / a[k, k];
For j := 1 to n do
If j = k then
a[i, j] := 0
else
a[i, j] := a[i, j] - q * a[k, j];
b[i] := b[i] - q * b[k];
end;
end;
{ Вычисляем решение }
x[n] := b[n] / a[n, n];
For i := n - 1 downto 1 do begin
t := 0;
For j := 1 to n-i do
t := t + a[i, i + j] * x[i + j];
x[i] := (1 / a[i, i]) * (b[i] - t);
end;
Gauss := true;
End;
Var
n, i: Integer;
a: Matrix ;
b, x: Vector;
Begin
ClrScr;
Writeln('Программа решения систем линейных уравнений по методу Гаусса');
Writeln;
Writeln('Введите порядок матрицы системы (макс. 10)');
Repeat
Write('>');
Read(n);
Until (n > 0) and (n <= maxn);
Writeln;
Writeln('Введите расширенную матрицу системы');
ReadSystem(n, a, b);
Writeln;
If Gauss(n, a, b, x) then begin
Writeln('Результат вычислений по методу Гаусса');
WriteX(n, x);
end
else
Writeln('Данную систему невозможно решить по методу Гаусса');
Writeln;
End.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru