Programmation C: fonctions avec tableaux

J’essaie d’écrire une fonction qui trouve la plus grande valeur dans un tableau 2D avec une rangée de 4 et un col de 4 où le tableau 2D est rempli avec une entrée utilisateur. Je sais que mon erreur principale est avec le tableau dans la fonction mais je ne suis pas sûr de ce que c’est.

Il serait grandement apprécié que quelqu’un trouve où je me suis trompé plutôt que d’écrire un nouveau code. À moins que je sois allé au sud.

Ma tentative:

#include  void largest(int array); int main() { int x,y,trash; int array[4][4]; int row = 4; int col = 4; int bigNum,greater; bigNum=largest(array); printf("Please enter a value: ") for(x=0;x<row;x++) { for(y=0;y<(col);y++) { scanf("%d",&array[x][y]); scanf("%d",&trash); } } printf("The largest number in the array is : ",bigNum); } void largest(int array[][]) { for(x=0; x<row; x++) { for(y=0; y array[x][y+1]) { array[x][y+1] = array[x][y]; } } printf("\n") } big = array[x][y]; return big; } 

Il y a quelques problèmes à résoudre ici, le premier est que vous ne pouvez pas avoir int array[][] tant que paramètre, vous devez fournir toutes les dimensions sauf la première, int array[][4] suffirait dans ce cas limité. .

Cependant, puisque row et col sont des variables locales, elles ne sont pas visibles par le corps de votre largest fonction. Elles doivent donc être passées, faites la signature.

 void largest(int row, int col, int array[row][col]); 

S’agissant d’une fonction vide, elle ne peut renvoyer aucune valeur. Cela modifiera le tableau qui a été mis en place, donc les changements seront visibles.

Si vous recherchez une erreur de journal directe, la fonction pour trouver la plus grande est assez folle. Une mise en œuvre plus saine consisterait simplement à suivre l’élément le plus important que vous ayez vu jusqu’à présent:

 int largest(int row, in col, int array[row][col]) { int big = array[0][0]; // assume the first element is the largest for (int i = 0; i < row, ++i) { for (int j = 0; j < col; ++j) { if (array[i][j] > big) big = array[i][j]; } } return big; } 

vous pouvez alors appeler la fonction principale en tant que

 int bigNum = largest(row, column, array); 

Vous avez déclaré la fonction la plus grande vide et vous essayez de stocker la valeur de retour de la fonction, ce n’est pas possible, changez-la donc comme type de données int. Ensuite, la ligne et la valeur de la variable col ne sont pas transmises à la fonction la plus grande. soit vous devez le déclarer globalement, soit le passer comme argument à la fonction la plus grande. Et vous essayez d’obtenir la valeur pour la corbeille, je ne sais pas quelle est la nécessité de cela. vous pouvez l’enlever. Et effectuez les modifications suivantes dans la fonction la plus grande:

 #include  int largest(int [4][4]); int row = 4; int col = 4; int main() { int x,y,trash; int array[4][4]; int bigNum,greater; printf("Please enter a value: "); for(x=0;xbig) { big = array[x][y]; } } printf("\n"); } return big; } 

Essayez ce code !!!!!

Vous devez d’abord obtenir les valeurs du tableau de l’utilisateur. Donc, vous devriez être:

 int main() { int x,y,trash; int array[4][4]; int row = 4; int col = 4; int bigNum,greater; printf("Please enter a value: ") for(x=0;x 

Le tableau n’est pas initialisé et vous le faites.

 bigNum=largest(array); 

Vous devriez trouver le plus grand lorsque vous avez des éléments dans votre tableau.

Il y a beaucoup d’autres bugs dans ce code:

  1. La fonction la plus importante n’est pas appropriée et renvoie du vide
  2. Vous ne pouvez pas avoir le paramètre tableau [] [] et ce devrait être le tableau [] [4].

OMG, quand j’ai parcouru le code, j’ai découvert qu’il y avait un bogue dans presque chaque ligne.

 #include  int largest(int array[][4]); int main() { int x,y; int array[4][4]; int row = 4; int col = 4; int bigNum; printf("Please enter a value: "); for(x=0;xmax) { max = array[x][y]; } } } return max; } 

Erreurs dans votre code

  1. Vous ne pouvez pas transmettre des tableaux bidimensionnels comme vous le faites.
  2. Votre logique pour trouver le plus grand n’est pas appropriée, vous comparez à tout mouvement deux éléments adjacents et si le premier est petit, vous les rendez égaux.
  3. Les erreurs de scope variables, row , col , x et y sont liées à la méthode principale et vous ne pouvez pas y accéder d’une autre méthode. Examinez Global Variables pour y accéder où vous voulez dans le fichier programme.
  4. scanf for trash inutile scanf for trash et printf dans la largest method .

     #include int row = 4; int col = 4; int largestElement(int array[][4],int row); int main() { int x,y; int array[row][col]; int bigNum,greater; printf("Please enter a value: "); for(x=0;x< row;x++) { for(y=0;y< col;y++) { scanf("%d",&array[x][y]); } } bigNum = largestElement(array, sizeof(array) / sizeof(array[0])); printf("The largest number in the array is : ",bigNum); } int largestElement(int array[][4],int row) { int x,y; int big =0; for(x=0;x 

Vous essayez ce code pour rechercher les plus gros éléments du tableau à deux dimensions.

  #include  int largest(int [][4],int ,int); int main() { int x,y,trash; int array[4][4]; int row = 4; int col = 4; int bigNum,greater; printf("Please enter a value: "); for(x=0;x