Problèmes de format en C
Discutez d'informatique ici !
-
ghghgh
- Membre Relatif
- Messages: 305
- Enregistré le: 04 Aoû 2006, 15:20
-
par ghghgh » 26 Nov 2006, 00:22
Bonjour tout le monde !
J'ai quelques problèmes avec les unsigned long long en C...
et le format pour printf("%llu", monUnsignedLongLong);
par exemple pour le code suivant, celui ci marche niquel quand je le compile avec des entiers (int) format %d, par contre
il compile mais renvoie des valeurs erronées quand je le fais tourner avec des unsigned long long...
#include
#include
#include
int puissanceP(int N, int P) {
int total = 0;
int puissance = P;
while(floor(N/P) > 0) {
total += (int)floor(N/P);
P *= puissance;
}
return total;
}
int main()
{
int N, P;
scanf("%d%d", &N, &P);
printf("%d\n", puissanceP(N,P));
system("pause");
return 0;
}
vlà le code avec les int...
merci à ceux qui prendront le temps de me répondre je vois pas pourquoi il ne fonctionne pas :s :'(
A++ bonne continuation
-
Patastronch
- Membre Irrationnel
- Messages: 1345
- Enregistré le: 22 Aoû 2005, 23:53
-
par Patastronch » 26 Nov 2006, 01:16
Donne plutot le code qui ne compile pas ...
-
ghghgh
- Membre Relatif
- Messages: 305
- Enregistré le: 04 Aoû 2006, 15:20
-
par ghghgh » 26 Nov 2006, 01:40
#include
#include
#include
unsigned long long puissanceP(unsigned long long N, unsigned long long P) {
unsigned long long total = 0;
unsigned long long puissance = P;
while((unsigned long long)floor(N/P) > 0) {
total += (unsigned long long)floor(N/P);
P *= puissance;
}
return total;
}
int main()
{
unsigned long long N, P;
scanf("%llu%llu", &N, &P);
printf("%llu\n", puissanceP(N,P));
system("pause");
return 0;
}
voilà voilà
mais ça compile... le problème c'est que l'algo ne tourne pas correctement...
merci
par Dominique Lefebvre » 26 Nov 2006, 11:28
Bonjour,
Je viens d'exécuter tes deux codes sous Dev-C++, avec différents couples de Net P (10,2) (100,3) et (1000,4)...
J'obtiens les mêmes résultats...
Où donc ton algo plante-t-il?
-
ghghgh
- Membre Relatif
- Messages: 305
- Enregistré le: 04 Aoû 2006, 15:20
-
par ghghgh » 26 Nov 2006, 17:04
non, c'est bon désolé, j'avais oublié de convertir la valeur que renvoie le floor qui est un double en unsigned long long :-/ pour le while...
désolé de vous avoir déranger, tout fonctionne maintenant :)
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités