Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C > probleme de constante > Lecture du sujet

probleme de constante

ma constante affiche 0

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne théoden # Posté le 03/12/2005 à 14:19:43
Avatar
Groupe : Membres
bon voila mon programme

Code : C

#include <stdio.h>
#include <stdlib.h>

int main(int argc,int *argv[])
{
 float taille =0 ;
 const long MATRICULE = 60 ;
 unsigned char age =0 ;
 int poid =0 ;
 
 printf("indiquez votre age\n");
 scanf("%d", &age);
 printf("indiquez votre taille\n");
 scanf("%f", &taille);
 printf("indiquez votre poid\n");
 scanf("%d", &poid);
 printf("vous avez donc %d ans,\n vous mesurez %f metres,\n vous pesez %d\n",age, taille, poid);
 printf("votre matricule assignez est le %d \n",MATRICULE);
 
    system("pause");
    return 0;
}


j'ai fait ce programme ne esseyan de regrouper la plupart des informations aprise dans le cour sur les variables en c
Mais j'ai un problème

quand je veux afficher ma constante "matricule" sa m'affiche 0

Ou est le problème svp?


merci d'avance
Hors ligne drexil # Posté le 03/12/2005 à 14:23:07
Acolyte du pourfendeur
Groupe : Membres
%ld pas %d, %d est un int, %ld est un long
Hors ligne théoden # Posté le 03/12/2005 à 14:31:28
Avatar
Groupe : Membres
Dans le dernier printf je remplace %d par %ld comme tu me l'as dis mais ca fait toujour pareil
dois-je me suicider?
Hors ligne Saimoun # Posté le 03/12/2005 à 14:36:04
La vie est la vie !
Avatar
Groupe : Membres
Non, ça ne vient pas de là, un long et un int est considéré pareil, il peut très bien mettre %d.

En plus, je l'ai testé ton code marche très bien !
(sous Dev-cpp ;) )
Édité le 03/12/2005 à 14:36:22 par Saimoun

Image utilisateur
www.inzeprog.net... Du nouveau, la version Ice est disponible en bêta :)

 
Hors ligne théoden # Posté le 03/12/2005 à 14:38:38
Avatar
Groupe : Membres
o_O c'est pas possible moi aussi j'utilise dev c++ et tout marche bien sauf la derniere ligne ou au lieu de m'afficher
"votre matricule est le 60"
sa m'écrit
"votre matricule est le 0"

je prépare la corde
Hors ligne Saimoun # Posté le 03/12/2005 à 14:43:54
La vie est la vie !
Avatar
Groupe : Membres
Essaye d'utiliser un int ou même un char, des fois les compilateurs gèrent mal les long int !
C'est pas sûr que ça change quelque-chose, mais ça ne coûte rien d'essayer :) !

Image utilisateur
www.inzeprog.net... Du nouveau, la version Ice est disponible en bêta :)

 
Hors ligne Polak # Posté le 03/12/2005 à 14:44:11
Groupe : Membres
En effet aussi j'ai la meme erreur que toi je ne comprends pas pourquoi :x

YEAH :) :D :D :D :D :D :D :D :D :D
 
Hors ligne Seeme # Posté le 03/12/2005 à 14:46:44
Gnap!
Avatar
Groupe : Membres
Déja, il vaut mieux définire tes constantes après les commandes préprocesseur (c'est pas obligé, mais bon...)
Ensuite, un long, pour mettre 60 dedans, c'est inutile, met plutôt int, et chez moi aussi, le prog marche correctement... et il y a pas de fautes apparement dans ton code....
Édité le 03/12/2005 à 14:47:07 par Seeme
 
Hors ligne théoden # Posté le 03/12/2005 à 14:47:10
Avatar
Groupe : Membres
j'ai remplacer le
const long matricule = 60;
par const int puis const char mais sa ne fonctionne tjr pas
et puis même si sa avait fonctionner sa m'embete de contourner le pblm au lieu de le régler
Hors ligne Polak # Posté le 03/12/2005 à 14:48:53
Groupe : Membres
Citation : Carter
En effet aussi j'ai la meme erreur que toi je ne comprends pas pourquoi :x


EDIT: quand je remplace "long" par "int", je n'ai que le 6 :x

YEAH :) :D :D :D :D :D :D :D :D :D
 
Hors ligne théoden # Posté le 03/12/2005 à 14:51:14
Avatar
Groupe : Membres
ca y'est sa marche j'ai déclarer la constante en premier et sa marche (c'est bon a savoir)
pour ce qui est du 60 au début j'avais mis 2059 et j'ai mis 60 ensuite pour voir si le bug venait de la
merci Seeme

et aussi comment on fait pour préciser le nbr de chiffre a affiché avec le float?
Édité le 03/12/2005 à 14:55:00 par théoden
Hors ligne Seeme # Posté le 03/12/2005 à 15:02:44
Gnap!
Avatar
Groupe : Membres
Je ne crois pas que ce soit possible, au pire, tu le transformes en tableau de caractère et tu coupes (en ajoutant "\0") là ou tu veux.
 
Hors ligne Saimoun # Posté le 03/12/2005 à 15:10:54
La vie est la vie !
Avatar
Groupe : Membres
Non, il y a plus simple, tu fais par exemple :
Code : C
printf("%0.2Lf", maVar);

Là, ça affiche 2 chifres après la virgule ;) !

Image utilisateur
www.inzeprog.net... Du nouveau, la version Ice est disponible en bêta :)

 
Hors ligne rz0 # Posté le 03/12/2005 à 16:13:15
meuh
Avatar
Groupe : Membres
Je viens de compiler le prog avec quelques mineurs ajustement pour que ça ressemble à quelque chose et ça marche.

Les ajustements sont :
- j'ai mis char *argv[] comme il se doit
- j'ai mis %hhu au lieu de %d pour le premier scanf avec unsigned char * en argument
- j'ai enlevé le system("pause") car je ne suis pas sous windows et que c'est une ...

Je ne vois pas ce qui n'allait pas avec le premier code excepté ce que j'ai dit...
 
Hors ligne théoden # Posté le 03/12/2005 à 16:32:04
Avatar
Groupe : Membres
ok est ce que quelqu'un pourrait me dire la correspondance par exemple

pour un int il faut un %d
avec int, char, long, float, double

et aussi quelle est la regle pour la précision après la virgule

merci
Hors ligne rz0 # Posté le 03/12/2005 à 16:42:38
meuh
Avatar
Groupe : Membres
Hors ligne théoden # Posté le 03/12/2005 à 17:23:40
Avatar
Groupe : Membres
Vous voulez vraiment que j'utilise ma corde

je demande juste par exemble

Code : C

int variable1 = 5;
long variable2 = 10;
char variable3= 15;
float variable4 = 20;
double variable5 = 25;

printf("%d", variable1);
printf("%(je met quoi la?)", variable2);
printf("%(je met quoi la?)", variable3);
printf("%(je met quoi la?)", variable4);
printf("%(je met quoi la?)", variable5);



bon c'est un peu lourd mais je pense que c'est assez clair.
Hors ligne pacool # Posté le 03/12/2005 à 17:39:51
J'aime le C Car le C C Cool
Avatar
Groupe : Membres
Pour int long et char c'est %d et pour float et double c'est %f ;) (%f = nombre décimal, %d = nombre entier)
Hors ligne rz0 # Posté le 03/12/2005 à 17:42:58
meuh
Avatar
Groupe : Membres
Bon bah je veux bein t'accorder qu'avec juste les cours de m@t actuels tu ne puisses pas lire de doc donc pour tes "types de base" que tu as appris :

%c char

Note : pour les entiers de petite taille tu dois utiliser signed char à la place de char comme t'enseigne m@t, char c'est pour contenir des caractères (qui sont en effet des entiers mais traités un peu spécialement).

%hhd signed char
%hhu unsigned char
%d int
%u unsigned int
%ld long int
%lu unsigned long int
%f float (valable pour les double aussi dans les printf pour une raison que vous verrez plus tard)
%lf double (valable aussi pour les float dans les printf pour une raison blahblah)

pacool tu dis n'imp
 
Hors ligne théoden # Posté le 03/12/2005 à 17:45:47
Avatar
Groupe : Membres
Citation : drekil
%ld pas %d, %d est un int, %ld est un long


alor %ld sa correspond a quoi

Citation : rz0
- j'ai mis %hhu au lieu de %d pour le premier scanf avec unsigned char * en argument


et %hhu sa correspond a quoi et si y'en a d'autre vous pouvez me les dires svp

édit moi: dsl j'avai pas vu ton msg

édit2: c'est quoi long int (ca éxiste pas long tout court)

édit3: désoler de poser toute ces questions mais plus j'en aprend et plus j'ai de question
rz0 j'ai pas bien compris le truc sur le char j'ai relu le cour en diagonal et je vois des "signed" nul part juste des unsigned pour dire que c'est que positif

Citation : rz0
pacool tu dis n'imp

n'empeche que c'est ce qui est écrit dans le cour ;)
Édité le 03/12/2005 à 18:16:48 par théoden
Hors ligne théoden # Posté le 04/12/2005 à 19:36:45
Avatar
Groupe : Membres
Code : C

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char*argv[])
{
 const long MATRICULE = 2059 ;
 float taille =0 ;
 unsigned char age =0 ;
 int poid =0 ;
 
 printf("indiquez votre age\n");
 scanf("%d", &age);
 printf("indiquez votre taille\n");
 scanf("%f", &taille);
 printf("indiquez votre poid\n");
 scanf("%d", &poid);
 
 printf("vous avez donc %hhu ans\n",age);
 printf("vous mesurez %0.2f metres\n", taille);
 printf("vous pesez %d kg\n", poid);
 printf("votre matricule assignez est le %d \n",MATRICULE);
 
    system("pause");
    return 0;


Voila mon code final qui marche parfaitement mais je voulait vous demandez est ce que j'ai oublié une convention de c ou alors et ce que j'ai mis un truc (du style %d au lieu de %hhu: dans les 2 cas sa marche très bien mais il faut mettre hhu a ce que j'ai lu) qui n'empeche pas le bon fonctionnement mais ou c'est pas éxactement ce que je dois faire.
Ou encore des sauts de ligne manquant (ou en trop) enfin
des ptits truc pour que mon code (même si c'est pas grand chose :euh: ) soit irréprochable.
Merci bien
Hors ligne bluestorm # Posté le 04/12/2005 à 19:55:18
dont ask to ask
Avatar
Groupe : Membres
assign_é_, sinon il a bien dit (et répété) que c'était %hhu pour le scanf de l'age, non ?

De plus, si le matricule est un long, il faut faire un printf.. %ld et pas %d.
 

Retour au forum "Langage C" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 141 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1198s (0.1042s)