Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » 2D-Array an Funktion übergeben - Pointer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.11.2009, 13:45 Uhr
~Manda
Gast


Hallo zusammen!
Ich versuche einfach nur ein 2D-Array an eine (oder mehrere) Funktionen zu übergeben und anschließend auszugeben. Leider kommen die Werte nicht richtig herraus.


C++:

#include<stdio.h>
#include<stdlib.h>

#define ZEILE  9
#define SPALTE 9

int main(void)
{
    int matrix[ZEILE][SPALTE] ={    {5,3,0,0,7,0,0,0,0},
                                            {6,0,0,1,9,5,3,0,0},
                                            {0,9,8,0,0,0,0,6,0},
                                            {8,0,0,0,6,0,0,0,3},
                                            {4,0,0,8,0,3,0,0,1},
                                            {7,0,0,0,2,0,0,0,6},
                                            {0,6,0,0,0,0,2,8,0},
                                            {0,0,0,4,1,9,0,0,5},
                                            {0,0,0,0,8,0,0,7,9}
                                        };
    menu(matrix);//aufruf
    return 0;
}

void menu(int (*matrix)[SPALTE])
{
//hier nur eine Weitergabe
    ausgabe(matrix);
}

void ausgabe(int (*matrix)[SPALTE])
{    
    int i = 0;
    int j = 0;
    int *mat[SPALTE];
  
    for(i=0; i<SPALTE; i++)
    {
        mat[i] =  *matrix;
        matrix += ZEILE;
    }
    system("cls");
    printf("Ausgabe :\n");
    printf("========\n");
    printf("\n");
    printf("+---------------------------------+\n");
    for(i=0; i<ZEILE; i++)
    {        
        if( (i > 0) && (i % 3 == 0) )
        {
             printf("+---------------------------------+\n");
        }
        printf("|");
        for(j=0; j<SPALTE; j++)
        {
             if( (j > 0) && (j % 3 == 0) )
             {
                printf(" + ");
             }
             printf(" %d ", mat[i][j]);
        }
        printf("|\n");
   }
    printf("+---------------------------------+\n");
    printf("\n");    
    system("pause");    
}



Ich hoffe ihr könnt mir helfen. Nur die Werte der 1.Zeile sind richtig, der Rest passt nicht mehr. Bin schon am verzweifeln.
Danke.

Gruß
Manda
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.11.2009, 14:32 Uhr
~Manda
Gast


Problem hat sich gelöst, kann geschlossen werden.

Danke.
Gruß
Manda
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.11.2009, 14:49 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

schreib doch an was es lag, dann haben andere auch etwas davon.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.11.2009, 16:49 Uhr
~Manda
Gast


Sorry, wollte nicht unhöflich sein!

1.
Die Matrix in eine andere zu Speichern ist unsinnig. Man kann direkt mit der matrix(parameter Übergabe) arbeiten und ausgeben.


C++:
void ausgabe(int (*matrix)[SPALTE])
{
//...
int *mat[SPALTE];
  
    for(i=0; i<SPALTE; i++)
    {
        mat[i] =  *matrix;
        matrix += ZEILE;
    }
//...
}



2.
Die Aufrufe waren bei mir falsch. So wie es jetzt ist(in den vorrigen Posts) ist es richtig.
So etwa:

C++:
ausgabe(matrix);


C++:
void ausgabe(int (*matrix)[SPALTE])...
<-Für 2D-Arrays (eine Methode).

Gruß
Manda
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: