Débutant c

Fermé
FrançoisR - 31 août 2004 à 17:19
 FrançoisR - 31 août 2004 à 18:01
bonjour, je voudrais que quelqu'un m'explique le problème que j'ai. Voici mon programme tt simple :

/*afficher les nombres 123 et 123.456 en les alignants à gauche*/

#include<stdio.h>

main()
{
float x;
x=123.456789;
printf("affichons les valeurs et alignons les à gauche \n");
printf("%-8d \n", x); /*j'affiche x avec %d pour avoir seulement 123*/
printf("%-8.3f\n", x); /*j'affiche x avec %f pour avoir les chiffres après la virgule*/
return 0;
}


Le résultat devrait être :
123
123.456

Le résultat que malheureusement j'ai à chaque fois :

0
123456

Merci pour la réponse . ça doit être tellement simple que ça doit en faire rire certains, mais il faut bien commencer un jour ! :-)

Merci !

9 réponses

Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
31 août 2004 à 17:31
Cast ton float c'est ca qui pose probleme:
printf("%-8d \n", (int)x
);
#include<stdio.h> 

main() 
{ 
float x; 
x=123.456789; 
printf("affichons les valeurs et alignons les à gauche \n"); 
printf("%-8d \n", (int)x); /*j'affiche x avec %d pour avoir seulement 123*/ 
printf("%-8.3f\n", x); /*j'affiche x avec %f pour avoir les chiffres après la virgule*/ 
return 0; 
} 





COIN!
0
Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
31 août 2004 à 17:36
Salut.
Ecris ça tout simplement
printf("%-8.0f\n", x);

A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
NoWiS Messages postés 16 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 15 octobre 2004
31 août 2004 à 17:36
Pour compléter la reponse de Canard007.

Tu peux aussi simplement remplacé "%-8d" par "%-8.f".
Ce qui donne : printf("%-8.f \n", x);

Par contre j'ai une question : Pourquoi aligné a gauche ??

Edit : je me suis fait devancer ^^.
0
Salut, merci de ta réponse

dans le livre, il n'ont pas appris qu'on pouvait mettre int entre (). Cest comme ci tu déclarais une autre variable. Ca equivaut à déclarer une entière et une flottante ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
#include <stdio.h>
#include <stdlib.h>

int main()
{
float x;

x = 123.456789;
printf("affichons les valeurs et alignons les à gauche \n");
printf("%3d \n", (int)x);
printf("%.3f\n", x);
return EXIT_SUCCESS;
}

Ca devrait marcher comme ça.
0
NoWiS Messages postés 16 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 15 octobre 2004
31 août 2004 à 17:40
Non tu ne déclare pas d'autre variable.
Tu indique seulement au compilateur que la variable x flotante doit etre interpreté comme un entier (mais seulement pour cet endroit précis).
D'ailleurs, tu peux voir qu'ensuite rien n'a changer (dans le deuxieme printf() ).
0
Ben à mon avis ça alloue quand même un entier en mémoire alors c'est kifkif.
0
Seulement lorsque l'on cast la porté n'est pas celle d'une variable globale.
0
Merci à tous pour votre aide !
Y'en a un qui m'a demandé pourquoi aligner à gauche : Parce que c'est l'exercice qui est demandé... je viens de finir le chapitre où on apprend à aligner les nombres.

Merci et @+
0