0
votes

Calcul du produit de vecteur de produit

Je veux faire un programme capable de calculer les vecteurs avec le produit DOT mais ma somme est toujours 0 qu'est-ce que j'ai mal fait dans ce code? Je suis nouveau aux pointeurs et aux fonctions si cela est important pour vous. J'ai tout codé uniquement dans la fonction principale et cela a fonctionné, mais je veux que le calcul dans une autre fonction soit plus clair au lieu d'écrire tout dans la fonction principale. Je l'ai compilé avec -wall et -werror et j'ai obtenu 0 avertissements.

serait bien si vous pouviez m'aider ici :)

Voici le code: xxx

c

0 commentaires

4 Réponses :


3
votes

en C, les variables sont transmises par la valeur. Cela signifie que lorsque vous modifiez la valeur de somme dans Calcul (code>, vous ne modifiez qu'une copie locale.

la manière idiomatique lorsque vous n'avez besoin que d'une valeur que vous devez le renvoyer: xxx

et dans la principale: xxx

alternativement, si vous devez renvoyer plusieurs valeurs, vous pouvez transmettre des pointeurs à la Variables de sortie


0 commentaires

0
votes

Cette fonction xxx

doit modifier xxx


1 commentaires

La fonction renvoie un double . S'il devait passer somme par référence, il n'y a pas besoin de type de retour double , il peut être vide .



1
votes

dans double calcul (int o, double * A, double * b, int Sum) Le dernier argument est passé par la valeur 1 . C'est-à-dire que lorsque vous appelez calcul (..., somme); , la variable somme est copié puis transmis à la fonction.

Dans cette fonction, vous modifiez somme , mais cela ne modifie que la copie de la variable d'origine passée. Pour résoudre ce problème, passez un pointeur ou simplement retourner la somme de votre fonction.


  1. En fait, tous les arguments sont transmis par la valeur. Les seconde et les troisièmes arrivent juste des pointeurs.

1 commentaires

Merci beaucoup, j'ai seulement retourné la somme dans la fonction parce que sa seule valeur et maintenant mon programme fonctionne :)



0
votes

Le problème avec votre code est que le somme est une variable locale dans la fonction Calculation . Ainsi, lorsque vous revenez à la page principale, votre variable est la destruction et la somme dans la principale est toujours 0.

aussi si vous obtenez Valeurs de point flottant pour Dimensions alors vous devez utiliser double pour la somme aussi.

Une solution possible pourrait être comme ceci: xxx

ou vous pouvez transmettre l'adresse de somme à la fonction de calcul comme suit: xxx


0 commentaires