Ce programme ajoute deux masortingces mais donne trop d’erreurs et je ne peux pas les résoudre.
Les erreurs:
ARRAY BOUNDS MANQUANT
et
SYNTAXE DE L’EXPRESSION
Des idées?
#include #include #define ROW=3 #define COL=3 int result[][COL]; void input(int arr[][COL]); void add(int mat1[][COL],mat2[][COL]); void print(int result[][COL]); void main(void) { int mat1[ROW][COL],mat2[ROW][COL]; input(mat1); input(mat2); add(mat1,mat2); print(result); getch(); } void input(int arr[][COL]); { for(int i=0;i<row;i++) for(int j=0;j<col;j++) { printf("Enter element"); scanf("%d",&arr[i][j]); } } void add(int mat1[][COL],int mat2[][COL]) { for(int i=0;i<row;i++) for(int j=0;j<col;j++) { result[i][j]=mat1[i][j]+mat2[i][j]; } } void print(int result[][COL]) { for(int i=0;i<row;i++) for(int j=0;j<col;j++) printf("%d",result[i][j]); }
Ce n’est pas une mauvaise première tentative. Au moins, vous avez essayé avant de demander de l’aide, ce qui est plus que certains ici. Vous avez les problèmes suivants:
conio
). row
minuscules et col
pour les constantes. input
a un point-virgule input
. result
correctement. int
. Plus en détail:
(1) Vos définitions sont du mauvais format.
Vous n’utilisez pas de définitions =
in car elles sont supposées être des substitutions de texte relativement simples. Donc, la ligne #define ROW=3
n’est pas celle que vous voulez, car c’est essentiellement essayer de définir le symbole ROW=3
pour avoir une valeur vide.
Pour obtenir un symbole ROW
de valeur 3
, vous devez utiliser #define ROW 3
.
Bien sûr, dans un code plus moderne, vous utiliseriez static const int ROW = 3;
puisque cela vous donnerait un symbole de compilateur de première classe plutôt qu’une simple substitution de texte. Il n’est vraiment pas nécessaire d’utiliser des définitions de pré-processeur pour les constantes (use const
) ou les fonctions (use inline
) de nos jours.
(2) Vous utilisez des éléments non standard ( conio
).
ISO C (la norme) n’inclut pas de fichier d’en-tête conio.h
. Je comprends que vous l’utilisez pour pouvoir utiliser la fonction getch
mais ISO C fournit une fonction getch
parfaitement adéquate qui remplit ici le même objective.
Vous pouvez utiliser des extensions du langage, mais sachez qu’elles rendent généralement votre code moins portable.
(3) Vous utilisez les row
minuscules et col
pour les constantes.
Puisque vous avez utilisé les majuscules ROW
et COL
pour vos constantes de ligne et de colonne, vous devez utiliser majuscule dans vos instructions for
. C est un langage sensible à la casse et l’utilisation de row
et col
amènera le compilateur à se plaindre de leur inexistence.
(4) Votre fonction d’ input
a un point-virgule supplémentaire.
Ceci est juste un égaré ;
dans la première ligne de cette fonction, à la fin de la ligne contenant la fonction devclaration.
(5) Vous ne définissez pas le result
correctement.
La variable de result
doit avoir une taille définie. La définition int result[][10];
est ce qu’on appelle un type incomplet puisque la taille ne peut pas être connue.
(6) La fonction principale devrait toujours renvoyer un int
.
Il existe deux formes standard de la fonction principale en C. Celles-ci sont:
int main(void); int main (int c, char *v[]);
L’implémentation permet d’append d’autres utilisateurs, mais si vous voulez un code qui peut être exécuté n’importe où, vous devez vous limiter à l’un de ceux-ci.
Cela supprime toutes vos erreurs de syntaxe, vous pouvez maintenant rendre l’interface moins laide 🙂
#include #define ROW 3 #define COL 3 int result[ROW][COL]; void input(int arr[][COL]); void add(int mat1[][COL],int mat2[][COL]); void print(int result[][COL]); int main(void) { int mat1[ROW][COL],mat2[ROW][COL]; input(mat1); input(mat2); add(mat1,mat2); print(result); getchar(); return 0; } void input(int arr[][COL]) { for(int i=0;i
Quelques suggestions pour le rendre plus agréable:
#define ROW=3 #define COL=3
est incorrect pour le préprocesseur C. Essayer:
#define ROW 3 #define COL 3
Voir cette page pour plus d’informations sur l’utilisation du préprocesseur.
La première chose qui apparaît maintenant que le code est formaté:
#define ROW=3 #define COL=3
devrait être
#define ROW 3 #define COL 3