2010-11-02 6 views
1

J'ai un problème avec le code suivant:Calcul avec des nombres entiers et nombres à virgule flottante en utilisant c/C++

#include <stdio.h> 
#include <iostream> 

int main() 
{ 
int a, b; 

printf("Please type in your number a: "); 
scanf_s("%d", &a); 

printf("Please type in your number b: "); 
scanf_s("%d", &b); 

printf("Solution 1 (divide and modulus): %f\n", a/b + a % b); 
printf("Solution 2 (cast): %f", (float) a/b); 

std::cin.get(); 
std::cin.get(); 

return 0; 

} 

Je veux que mon programme pour lire deux entiers et je veux utiliser deux méthodes différentes pour les diviser sans erreurs d'arrondi. Sincèrement, la première solution ne fonctionne pas. La sortie est juste des zéros. Je ne sais pas où est le problème.

+1

Quelle est votre entrée? –

+1

En dehors de votre problème qui a déjà été adressée de manière adéquate, je me demande pourquoi utilisez-vous à la fois et . Essayez d'être stylistiquement cohérent, en donnant une énorme préférence à ce dernier choix. IMHO :) –

+0

Et même en utilisant 'stdio.h' à la place du bon' cstdio' –

Répondre

2

Le résultat de a/b + a%b est un integer (%d), mais vous imprimez un float (%f).

+0

Oui. Maintenant, je comprends où était mon erreur. Je vous remercie. – Ordo

1

Vous devez changer

printf("Solution 1 (divide and modulus): %f\n", a/b + a % b); 

à

printf("Solution 1 divide %i modulus %i \n", a/b, a % b); 
2

Je pense qu'il devrait être:

a/b + (a%b)/(float)b 
+0

le fait de lancer n'importe quelle variable avec float fera que toutes les variables seront flottantes n la sortie sera un float, pas un int. – letsc

+0

Oui, mais comme il imprime un flotteur (% f), je pense que sa formule peut être fausse. – George

Questions connexes