2017-06-16 6 views
0

Ich habe eine Matrix und eine struct mit 2 int Variablen.Matrix, die eine Struktur verwendet

struct virus { 
int gen; 
int neighbours; 
} 

Ich möchte meine volle gen Matrix mit dem 1 Wert initialisieren. Das Problem ist, dass es für die erste Spalte der Matrix nicht funktioniert. Ich poste unten den Code. Auch wenn ich versuchte, meine Matrix als virus struct zu setzen, funktionierte es nicht und ich musste eine neue Matrix initialisieren, die ich b nannte. Es ist nur eine einfache Initialisierung und ein Drucken.

#include <stdio.h> 

struct virus { 
    int gen; 
    int neighbours; 
    }; 

void initGen(int n, int a[][100]) 
{ 
    struct virus b[n][100]; 

    int i,j; 
    for(i = 0; i < n; i++) 
    { 
     for(j = 0; j < n; j++) 
      { 
       b[i][j].gen = 1; 
      } 
    } 
} 

void printMatrixGen(int n, int b[][100]) 
{ 
    struct virus a[n][100]; 

    int i; 
    for(i = 0; i < n; i++) 
    { 
     int j; 
     for(j = 0; j < n; j++) 
      printf("%d\t", a[i][j].gen); 
     printf("\n"); 
    } 
} 

int main(void) 
{ 
    int a[100][100], n; 
    n = 4; 
    initGen(n,a); 
    printMatrixGen(n,a); 
    return 0; 
} 

Die Ausgabe ist die Matrix

0 1 1 1 
0 1 1 1 
0 1 1 1 
0 1 1 1 

Statt

1 1 1 1 
1 1 1 1 
1 1 1 1 
1 1 1 1 
+2

Warum Sie ein Array als Parameter übergeben kann, ignorieren sie und dann stattdessen ein lokales Array initialisieren? Dieser Code macht keinen Sinn und das ist der Grund für Ihre Fehler. – Lundin

+1

BTW: _Es hat nicht funktioniert_ ist keine Problembeschreibung. Sie müssen uns sagen, was tatsächlich passiert und was Sie erwarten. –

+0

Ich habe gerade den Code bearbeitet und die Ausgabe, die das Programm mir gibt, und die, die es erstellt, hinzugefügt. –

Antwort

2

Der Code übergibt eine falsche Array. Sie müssen Funktionssignaturen wie folgt ändern:

void initGen(int n, struct virus a[][100]); 
void printMatrixGen(int n, struct virus a[][100]); 

Danach entfernen lokale Deklaration von struct virus b Arrays und struct s als Parameter übergeben verwenden.

Schließlich erklären Ihre struct Array innerhalb main, und es für beide Funktionen übergeben:

struct virus a[100][100]; 
int n = 4; 
initGen(n, a); 
printMatrixGen(n, a); 
+0

Große Hilfe! Vielen Dank! Jetzt verstehe ich, wie ich Structures dank dir nutzen soll. –

+0

Dieser Ausdruck: 'struct virus a [100] [100], n = 4;' ist nicht korrekt, da es die Variable 'n' als Instanz eines 'struct virus' deklariert. Schlage vor, diesen Ausdruck in eine neue Zeile ähnlich zu verschieben zu: 'int n = 4;' – user3629249

+0

@ user3629249 Vielen Dank! – dasblinkenlight

Verwandte Themen