2ème addition de tableau

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:

  • Vos définitions sont du mauvais format.
  • Vous utilisez des éléments non standard ( conio ).
  • Vous utilisez les row minuscules et col pour les constantes.
  • Votre fonction d’ input a un point-virgule input .
  • Vous ne définissez pas le result correctement.
  • La fonction principale doit toujours renvoyer un 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:

  • Rendez plus évident la valeur que vous entrez en indiquant le numéro et les coordonnées de la masortingce.
  • Faites-le imprimer des espaces entre les numéros de sortie.
  • Faites-le imprimer des nouvelles lignes entre les lignes de sortie.
  • Faites-le imprimer les chiffres largeur fixe (pour bien aligner).
  • Commentez votre code (je ne saurais trop le souligner).
 #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