matrix drucken < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:45 Sa 30.01.2010 | Autor: | nana |
Hallo! Ich hatte als Aufgabe eine Matrix zu drucken und zu transponieren, hier geht es aber eigentlich nur um den Druck!
An sich wird alles kompiliert und ich finde auch keinen Fehler (ich hab nur die Methode print implementiert, alles andere war shcon vorgegeben), die Methode ist auch wirklich einfach aber seltsamerweise ist das Ergebnis eine vollkommen andere Matrix als in der main-funktion angegeben...
und zwar
1,1,1,1,1,
1,1,1,2,3,
1,1,3,0,1,
und ich weiß nicht wie auch immer das Programm darauf gekommen ist....ich hoffe ihr findet den Fehler!!
Danke!!!
#include <iostream>
using namespace std;
void print(int matrix[], int m, int n)
{
for (int i=0; i<m; i++)
{
for (int j=0; j<n;j++)
{
cout<< matrix [i*j]<< ",";
}
cout<< endl;
}
}
int main(void)
{
const int m=3;
const int n=5;
int matrix[m*n] =
{
1,1,1,2,3,
0,0,1,1,2,
0,0,0,0,1
};
print(matrix, m, n);
return 0;
}
|
|
|
|
Hallo nana,
1: | > void print(int matrix[], int m, int n)
| 2: | > {
| 3: | > for (int i=0; i<m; i++)
| 4: | > {
| 5: | > for (int j=0; j<n;j++)
| 6: | > {
| 7: | > cout<< matrix [i*j]<< ","; |
Solange die innere j-Schleife ausgeführt wird, ist i auf einen Wert zwischen 0 und m-1 gesetzt. Was passiert denn z.B., wenn i = 0 ist? Dann gilt für beliebige j: 0*j=0. D.h. du greifst ständig auf das gleiche 0-te Element des eindimensionalen Arrays matrix zu. Leider habe ich im Moment keine Möglichkeit es zu testen, aber versuch' es mal mit i*n + j statt i*j. Ich denke, dann sollte es klappen, denn jede Zeile hat die Breite n. Du springst damit immer zum Anfang der i-ten Zeile und gehst dann noch j Schritte weiter in der Horizontalen.
Viele Grüße
Karl
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:20 Sa 30.01.2010 | Autor: | nana |
Hey, es ist mir inzwischen auch selbst aufgefallen, hab matrix [a*b] tdm wie eine matrix [a][b] behandelt...doof von mir!!!
Vielen Dank für die schnelle Antwort!
lg, nana
|
|
|
|