2016-09-03 2 views
1

Die Grundidee des folgenden Codes besteht darin, einen neuen Typ zu erstellen, der eigentlich eine Integer-Matrix ist. Danach machen Sie Funktionen zum Lesen und Schreiben in die Std-Ausgabe. Erwähnte Funktionen müssen mit Zeigern in Argumenten sein. Etwas stimmt nicht, diese Funktionen funktionieren nicht.Füllmatrix mit Zeigern

#include <iostream> 
#include<stdio.h> 
#include<conio.h> 

typedef int SQM[3][3]; 

SQM *m; 


void scan(SQM *sqm){ 

    int size = 3; 
    int column,row = 0; 

    printf("\nEnter matrix : "); 

    for (row = 0; row < size; row++) { 
     for (column = 0; column < size; column++) 
      scanf("%d", &sqm[row][column]); 
    } 
} 
void print(SQM *sqm){ 

int size = 3; 
int row, column = 0; 

printf("Entered matrix is : \n"); 

for (row = 0; row < size; row++) { 
    printf("\n"); 
    for (column = 0; column < size; column++) { 
     printf("\t%d", sqm[row][column]); 
     } 
    } 
} 
int main() { 

scan(m); 
print(m); 

return 0; 
} 

Antwort

2

Sie C und C++ nicht

#include <iostream> /* Delete this line */ 
#include <stdio.h> 

Und Sie brauchen mischen Raum, bevor Sie es für m zu reservieren.

Versuchen:

int main(void) 
{ 
    m = malloc(sizeof *m); 
    if (m != NULL) { 
     scan(m); 
     print(m); 
    } 
    return 0; 
} 

Beachten Sie, dass die globale Bestehen einer Adresse zu vermeiden:

int main(void) 
{ 
    SQM m; 

    scan(&m); 
    print(&m); 
    return 0; 
} 

schließlich (als eine Frage des Stils) verwenden keine magischen Zahlen wie 3:

#define SQM_SIZE 3 

typedef int SQM[SQM_SIZE][SQM_SIZE]; 

... 

for (row = 0; row < SQM_SIZE; row++) { 
    for (column = 0; column < SQM_SIZE; column++) 
+0

Ich habe diese Nachricht erhalten: \t [Fehler] 'malloc' wurde in diesem Bereich nicht deklariert. – Ognjen

+1

'#include ' –