Cześć!
Piszę program jak w temacie:)
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int ilosc=0; // ilosc rozwnan i ilosc niewiadomych
double macierz[2][3];
double X[2]; // wektor niewiadomych
double maximum=0;
int r=0,i=0,j=0;
cout << "Podaj ilosc rownan: " << endl; // dla ilu rownan chcemy wypelnic macierz?
cin >> ilosc;
for(int i =0 ; i<ilosc; i++) /// wypelniamy macierz dowolnymi wartosciami ////////////////////
{
for(int j=0; j<ilosc+1; j++)
{
cout << "Podaj wartosc [" << i << "][" << j << "] : ";
cin >> macierz[i][j];
}
}//////////////// koniec petli pobierajacej wspolczynniki rownania do macierzy ///////
for( int k =1; k<ilosc; k++ )
{
maximum = macierz[k][k];
r=k;
for( i=k; i<ilosc; i++)
{
if (fabs(macierz[i][k]) > fabs(maximum)) // jesli wartosc bezwzgledna...
{
maximum=macierz[i][k];
r=i;
}
}
if(maximum == 0)
{
cout << "Macierz jest macierza osobliwa i rozwiazanie rownania to 0" << endl;
}
else
{
for(j=0; j<(ilosc+1); j++)
{
double macierz2=0;
macierz2 = macierz[k][j];
macierz[k][j] = macierz[r][j];
macierz[r][j] = macierz2;
}
}
for(int i =(k+1);i<ilosc;i++)
{
for(int j=(k+1); j<ilosc;j++)
{
macierz[i][j] = (macierz[i][j] -(macierz[i][j]*macierz[k][j]))/maximum;
}
}
}
for(int i = ilosc; i>1; i--)
{
double s=0; // wprowadzamy zmienna pomocnicza
for(int m=(i+1); m < ilosc; m++)
{
s = s + (macierz[i][m]*X[m]);
}
X[i]=((macierz[i][ilosc+1]-s)/(macierz[i][i]));
}
cout << endl << endl; // przerwa
//////////////// wyswietlanie rozwiazan ////////////////////////////////////////////
for(int i =0; i < ilosc; i++) // zwracamy obliczone wartosci rownania
{
cout << "Rozwiazanie rownania nr [" << i << "] wynosi =" << X[i] << endl;
}
///////////// koniec wyswietlania rozwiazan /////////////////////////////////////
system("PAUSE");
return 0;
}
Tok rozumowania:
1)Pobieram od użytkownika ilosc równan które bede chciał obliczyć
2)Wpisuje wartosci wspolczynnikow do macierzy
3)Wykonuje algorytm
4)Wyswietlam wyniki
Program sie kompiluje, ale wyswietla mi jakies okropnie dziwne liczby i błąd o stosie.
A na wyjsciu mamy:
Wywala mi z warunku ,że macierz jest osobliwa a chyba nie powinno tak być...
Nie wiem o co chodzi.
Pozdrawiam i proszę o pomoc:)