AmmoxD
(Kio114)
25 Listopad 2013 16:26
#1
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
Czy ktoś wie gdzie mam błąd? Pierwszy raz pracuje na macierzach, więc nie wiem wszystkiego ;p
drobok
(Drobok)
25 Listopad 2013 16:32
#2
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;
Poza tym indeksy tablicy liczymy od 0. A same pętle są ok, wrzuć cały program.
AmmoxD
(Kio114)
25 Listopad 2013 16:42
#3
#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();
}
drobok
(Drobok)
25 Listopad 2013 16:54
#4
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.
AmmoxD
(Kio114)
25 Listopad 2013 18:00
#5
Aha ok Jak wspomniałem, to jest moje pierwsza praca z macierzami ;p Teraz wszystko rozumiem
Dzięki wielkie za pomoc
_alex
([alex])
27 Listopad 2013 00:47
#6
#include
using namespace std;
int main()
{
int A[10][10]={};
for(int y=0;y<10;++y,cout<
return 0;
}