2016-07-01 8 views
-5

Ich versuche, ein Programm zu machen, das zweidimensionale Arrays summiert. Die Werte werden in ganz constantees Anordnungen vorbelastetSumme der zweidimensionalen Arrays

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

/*PROGRAM EJERC102 */ 
const int m1[2][2]={ {3,1},{4,5} }; 
const int m2[2][2]={ {1,3},{4,2} }; 
const int m3[2][2]; 
int f, c; 

int main(){ 
    for (f=0; f <= 1; f++) 
     for (c=0; c <= 1; c++) 
     { 
      m3[f][c]=(m1[f][c] + m2[f][c]); // Why is an assignment of read-only location? 
      printf ("(%d,%d)",f,c); 
      printf ("%d\n",m3[f][c]); 
     } 
    getch(); 
    return 0; 
} 
+3

Versuchen Sie, die 'const' Qualifier aus dem' m3' Erklärung zu entfernen? – jacob

+0

@Olaf: Wie ruft dies ein undefiniertes Verhalten hervor, wenn man bedenkt, dass dies nicht einmal kompiliert wird? – Fang

+0

Ich denke, die Frage ist im Code selbst: '// Warum ist eine Zuweisung von schreibgeschützten Speicherort? Die Antwort, nun, ich zitiere @jacob, 'Versuchen Sie, den const-Qualifier aus Ihrer m3-Deklaration zu entfernen?' – rpadovani

Antwort

0

Sie ein Array von const int-Typ Einstellung, so dass die Hauptfunktion es als Nur-Lese-Werte sehen. Entfernen Sie einfach die const an der dritten Array-Deklaration:

#include <stdio.h> 

/*PROGRAM EJERC102 */ 
const int m1[2][2]={ {3,1},{4,5} }; 
const int m2[2][2]={ {1,3},{4,2} }; 
int m3[2][2]; 
int f, c; 

int main(){ 
    for (f=0; f <= 1; f++) 
     for (c=0; c <= 1; c++) 
     { 
     m3[f][c]=(m1[f][c] + m2[f][c]); // Why is an assignment of read-only location? 
     printf ("(%d,%d)",f,c); 
     printf ("%d\n",m3[f][c]); 
    } 
getchar(); 
return 0; 

}

+0

Es ist auch eine gute Idee, die Standardfunktion getchar() anstelle von getchr von conio.h zu verwenden –