[Dev c++]Wpisywanie danych do macierzy

Mam według mnie dość dziwny problem, lecz zacznę od tego co chcę zrobić. Mam macierz 10x10 i chcę wpisać do niej liczby 0 lub 1 a dokładniej to tak:

1 0 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0 0 0

0 0 0 0 1 0 0 0 0 0

0 0 0 0 0 1 0 0 0 0

0 0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 1 0 0

0 0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 0 1

A więc muszę umieścić całą instrukcje w 2 pętlach, tak też zrobiłem:

...

x=1;

while(x<=10)

	{

	y=1;

		while(y<=10)

		{		

			if(y==x)

			{

				A[x][y]=1;

			}

			else

			{

				A[x][y]=0;

			}

			y++;

		}

	x++;

	}

...

według mnie kod jest poprawny lecz program nic nie robi, mam czarny ekran. Program działa jeśli usunę pierwszą pętle i liczby wpisze tylko w pierwszy wiersz macierzy :frowning:

Czy ktoś wie gdzie mam błąd? Pierwszy raz pracuje na macierzach, więc nie wiem wszystkiego ;p

Zacznijmy od tego że twój algorytm jest zły. Zainicjuj tablicę zerami przy jej tworzeniu, a potem jedną pętlą arr[x][x]=0; :stuck_out_tongue:

Poza tym indeksy tablicy liczymy od 0. A same pętle są ok, wrzuć cały program.

#include 

#include 


int A[10][10],x,y;


int main()

{

x=1;

while(x<=10)

{

y=1;

	while(y<=10)

	{      

    		if(y==x)

    		{

			A[x][y]=1;

		}

    		else

    		{

    			A[x][y]=0;

		}

    	y++;

	}

x++;

}


for (x=1;x<=10;x++)

{

	std::cout<
	for (y=1;y<=10;y++)

	{

		std::cout<< A[x][y] << ", ";

	}

}

getch();

}

Potwierdza się to co napisałem na początku. Masz zacząć od 0, dopuki <10 i działa jak należy.

Proponuję jednak zmienić algorytm:

#include 


int A[10][10]={0},x,y;


int main()

{

	for(int x=0;x<10;x++)

		A[x][x]=1;

	for (x=0;x<10;x++)

	{

	   for (y=0;y<10;y++)

		  std::cout<< A[x][y] << ", ";

	   std::cout << std::endl;

	}

	return 0;

}

Masz 10 iteracji zamiast 100, oraz likwidujesz if’a w każdym przejściu.

Aha ok :smiley: Jak wspomniałem, to jest moje pierwsza praca z macierzami ;p Teraz wszystko rozumiem :slight_smile:

Dzięki wielkie za pomoc :slight_smile:

#include 

using namespace std;


int main()

  {

   int A[10][10]={};

   for(int y=0;y<10;++y,cout<
   return 0;

  }