[C++]Macierz trójkątna dolna


(bolok) #1

Hej, napisałem program w c++ dodający do ciągu b elementy macierzy a__[j], które znajdują się pod przekątną a nastepnie wyznaczyłem z tych elementów pod przekątną wartość max:

#include 


using namespace std;


int main()

{

int i,j,x;

int a[3][3]={1,2,3,4,5,6,7,8,9};

int b[3];


cout<<"Wyniki:"<

//obliczenia

for (int i=0;i<3;i++)

{

           b[i]=0;	

	  for (int j=0;j
		  {

				b[i]=a[i][j];		   

		  }	  

cout<
}  


cout<

//szukamy max

int max;

max=b[0];

for (int i=0;i<3;i++)

	{

		if(max
		max=b[i];

	}


cout<<"MAX="<
system("pause");

}

[/code]

Po komplilacji wyszło mi że szukanymi liczbami są:0,4,8 a powinno wyjść 4,7,8. Mógłby mi ktoś wytłumaczyć gdzie popełniłem błąd?


(Tomek Matz) #2
int a[3][3]={

	{1,2,3},

	{4,5,6},

	{7,8,9}

};

int k = 0;

for (int i=0;i<3;i++)

{

	for (int j=0;j<3;j++)

	{

		if(i>j)

		{

			b[k]=a[i][j];

			cout<
			k++;

		}	        

	}

}[/code]

Ilość elementów jaka ma być w tablicy b można wyliczyć automatycznie. Przykładowo dla tablicy 3x3 to będzie ((3*3)-3)/2, dla tablicy 4x4 to będzie ((4*4)-4)/2 itd, więc możesz (a raczej powinieneś) to zmienić.