Remettre les valeurs de tableau modifiées à la fonction principale en C

Désolé si le titre est toujours ambigu.

Je fais cette affectation pour l’école et, ci-dessous, sont mes prototypes de fonction définis, la fonction principale et la fonction change_array.

L’objective général de ce programme est de permettre aux utilisateurs de saisir 5 numéros différents et d’être stockés dans un tableau. Ensuite, la fonction change_array double (multiplie par 2) les nombres inférieurs à 10; toutefois, elle ne fait actuellement pas ce qui est censé être fait. Je suis vraiment coincé, alors je me demandais si quelqu’un pouvait signaler mes erreurs. Je ne demande pas une réponse exacte, j’ai juste besoin d’indicateurs et de conseils.

Ce qui ne va pas, c’est que la fonction change_array ne change aucune des valeurs données par les utilisateurs. Ainsi, par exemple, si l’utilisateur entre “3, 5, 6, 12, 32”, la sortie de mon programme est toujours “3, 5, 6, 12, 32”. Mais ce que je veux vraiment, c’est «6, 10, 12, 12, 32» après la transmission des tableaux par la fonction change_array.

EDITE avec programme complet:

#include  #define SIZE 5 void fill_array(double x[], int s); void change_array(double x[], int s); void print_array(double x[], int s); main() { double x[SIZE]; fill_array(x, SIZE); printf("The array is as: \n"); print_array(x, SIZE); change_array(x, SIZE); printf("After change, the array is: \n"); print_array(x, SIZE); } void fill_array(double x[], int s) { int i=0; printf("Please input 5 Non-Negative double numbers\n"); for (i=0; i<s; i++) { printf("Number %d: ", i+1); scanf("%d", &x[i]); printf("\n"); } } void change_array(double x[], int s) { int i=0; for (i=0; i<s; i++) { if (x[i] < 10) { (x[i] = (x[i] * 2)); } } } void print_array(double x[], int s) { int i=0; for (i=0; i<s; i++) { printf("%ld \t", x[i]); } printf("\n"); } 

Mon code est écrit en C.

Il n’y a rien de mal avec change_array . Cela modifie effectivement les valeurs du tableau de l’appelant.

Le problème réside dans la fonction d’impression print_array . Vous utilisez une chaîne de formatage incorrecte pour votre printf . Vous devez utiliser %f plutôt que %ld car ce sont des valeurs à virgule flottante et non des nombres entiers.

Les tableaux sont toujours passés par référence, ce n’est donc pas le problème. Cela fonctionne comme prévu lorsque j’ajoute une fonction d’impression et une accolade supplémentaire. Pouvez-vous fournir un exemple de travail minimal (MWE) afin que nous puissions simplement exécuter le code? (Je sais que cela devrait probablement être un commentaire, mais j’ai 3 points de retard pour pouvoir commenter)

J’ai modifié votre code pour en faire un échantillon minimal et cela fonctionne très bien pour moi :

  #include  #define SIZE 5 void change_array(double x[], int s); int main() { double x[SIZE] = {3, 5, 6, 12, 32}; printf("The array is as: \n"); for(int i = 0;i 

Voici la sortie:

Le tableau est comme:

 3.000000 5.000000 6.000000 12.000000 32.000000 

Après modification, le tableau est:

 6.000000 10.000000 12.000000 12.000000 32.000000