Miért csinálja így (C++)?
int N = 3;
double A[N+1][N+1];
for (int m=1; m<=N; m++)
{
A[1][m] = A[1][m]/A[1][1];
}
Először az m helyébe behelyettesíti az 1-et. Kiszámolja, hogy A[1][1]/A[1][1] = 1. Ez lesz az új A[1][1]. De amikor az m helyébe behelyettesíti a 2-t, kiszámolja, hogy A[1][2]/A[1][1], az eredeti A[1][2]-t kapom vissza, tehát eggyel osztotta az A[1][2]-t. Miért az új A[1][1]-gyel osztja, miért nem a régivel? Hogy lehet ezen segíteni?
Mert így működik a Turing gép. A for vezérlési szerkezeten belül sem egyszerre fut le az összes ciklus, hanem egymás után, tehát a második ciklusnál már a módosított A[1][1] értéket fogja alapul venni. Ha szükséged van az eredeti értékre, akkor célszerű egy külön változóban tárolni:
for (int m=1, double valami = A[1][1]; m<=N; m++){
A[1][m] = A[1][m]/valami;
}
int N = 3;
double A[N+1][N+1];
for (int n=1; n<=N; n++)
{
for (int m=1; m<=N; m++)
{
A[n][m] = A[n][m]/A[n][n];
}
}
Na és ha így van? ↑ Mi legyen az A[n][n]-nel? Ha elmentem egy egydimenziós array-be, az nem működik.
for (int n=1; n<=N; n++){
..for (int m=1, double valami = A[n][n]; m<=N; m++){
....A[n][m] = A[n][m]/valami;
..}
}
Így működnie kellene. Egyébként van valami oka annak, hogy nem 0-ról indexelsz?
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!