J'essaie de calculer l'exposant d'un nombre. Quand je fais tout en int j'obtiens le résultat correct, mais la sortie doit être flottante, quand j'essaye de convertir avec f dans printf() j'obtiens 0, quand j'utilise% d j'obtiens le bon résultat. Je ne peux pas modifier la partie main() du programme, je ne peux modifier la fonction * powerArgs(). L'entrée du programme est 3, 5.Comment générer un produit flottant de multiplicateurs int?
Divulgation complète, cela fait partie d'une tâche scolaire. Je ne demande pas de code complet. J'apprécierais une réponse plus générale me montrant ce que j'oublie, peut-être quel domaine je devrais étudier plus pour trouver la réponse moi-même.
#include <stdio.h>
#include <stdlib.h>
int *powerArgs(int *pA, int *pB);
/* MAIN */
int main(int argc, char **argv)
{
if (argc != 3)
{
printf("?Invalid number of arguments\n");
system("pause");
exit(1);
}
int parmA = atoi(argv[1]);
int parmB = atoi(argv[2]);
int idx;
/* Part C: Raise parmA to the power of parmB. Return pointer to the result */
/* Reset the original values after we print the result */
printf("%d raised to the %d power is %0.1f\n", parmA, parmB, *powerArgs(&parmA, &parmB));
printf("\n");
system("pause");
exit(0);
}
int *powerArgs(int *pA, int *pB)
{
int idx, result = *pA;
for (idx = 1; idx < *pB; idx++)
{
result *= *pA;
}
return &result;
}
Non, non, non. Vous ne pouvez pas renvoyer un * pointeur * à 'result' de' powerArgs'. 'result' est une * variable locale * dans cette fonction. Il n'existe pas une fois la fonction terminée. Vous devez renvoyer une valeur int (ou float) * *. –
J'ai en fait un commentaire différent: ne pas nommer, même dans les devoirs, quoi que ce soit parmA, parmB ou des variantes de ceux-ci. Au lieu de cela, nommez votre base de variables et exposant. Les gens lisant votre code plus tard (vous avez inclus) le trouveront beaucoup plus facile à lire s'ils n'ont pas à continuer à chercher pour voir si parmA était la base ou l'exposant et pour voir que vous ne les avez pas échangés. – novalis
Je n'ai pas écrit la partie avec parmA et parmB. La partie main() a été donnée par l'enseignant, et nous devons écrire la fonction appelée pour renvoyer le résultat attendu affiché comme show. C'est pourquoi je ne peux pas simplement sortir en int. Mais j'apprécie le point, j'ai habituellement plus de noms de variables descriptifs, tels que l'interation, la base, le produit. – cyotee