Question de débutant en C

Résolu
lafouinasse Messages postés 3 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 16 novembre 2005 - 15 nov. 2005 à 13:40
lafouinasse Messages postés 3 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 16 novembre 2005 - 16 nov. 2005 à 10:52
Bonjour,
je suis entrain d'apprendre le C/C++
une question stupide pour vous Ô grand gourou de la programmation :

j'ai déclaré ma variable $menu en INT
apres un scanf("%d",&$menu);
si je rentre un chiffre a virgule... vous me direz cela referme mon programme...a marche pas trop... normal me direz vous.

mais comment definir le type d'une variable sans savoir ce que l'utilisateur va saisir (1, 1.5, abc...), comment gérer les erreurs ? (au lieu que le programme se referme)

dans mon programme de division (et oui, faut bien commencer :), lorsque je fais 5/2 j'obtiens 2... normal je suis en int... alors comment m'y prendre pour obtenir un bon resultat

fonction division -- - - - - - - -
float division($num1, $num2)
{
float $tot;
$tot = ($num1 / $num2);
return $tot;
}

appel de fonction- - - - - - - - - - - -
case 4: //division
{
printf("- - - - - - - - - - - - - - - -\n");
printf("DIVISION DE NUM1 par NUM2 : \n\n");
printf("saisir la valeur de NUM1 : ");
scanf("%d",&$num1);
printf("saisir la valeur de NUM2 : ");
scanf("%d",&$num2);
$tot=division($num1, $num2);
printf("la division de %d par %d, resultat : %d\n",$num1,$num2,$tot);
printf("Souhaitez vous realiser une autre multiplication ? (1,0) :");
scanf("%d",&$choix);

if($choix == 1){
main();
}
else
{
fin();
}
}

declaration main()- - - - - - - - - - -
signed long $choix, $menu, $num1, $num2;
float $tot;

en vous remerciant,

ps : j'ai peut être posté au mauvais forum mais je n'ai pas trouvé celui consacré au C/C++, en m'excusant.

6 réponses

vangeurmasker Messages postés 99 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 29 mars 2006
15 nov. 2005 à 14:01
Pourquoi met tu des $ devant tes nom de variables?

pour ton probleme de division : (floaut)a/(float)b



pour ton probleme d'entrées du déclare :

char entree[100]; //Pour stoquer la réponse



ensuite tu utilise les fonctions atoi et atof pour convertir ta chaine en entier ou en float
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
15 nov. 2005 à 15:22
tu peux faire "rentrer" un int dans un float (mais pas l'inverse) alors ne t'embête pas avec ça...travaille avec les float
Un truc à tester avant de faire la division: la division par 0

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
15 nov. 2005 à 14:09
Prends l'habitude d'indiquer les types des paramètres dans les prototypes de tes fonctions:
float division (float num1, float num2);

Attention: le C est BEAUCOUP plus strict que le php

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
lafouinasse Messages postés 3 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 16 novembre 2005
15 nov. 2005 à 15:15
oui ! il est vrai que le c est plus strict. je m'en rends compte surtout pour la déclaration du type des variables, leurs déclaration tout cour en fait... En php, le type change automatiquement en fonction des opérations... un truc de fenéant quoi...

le $ devant les variables est une vieille habitude de codeur PhP comme l'avais deviné bruno, et j'ai lu qu'on pouvait conserver cette syntaxe en C et C++. je trouve qu'on fait mieux la distinction entre les variables et le reste.

si j'indique float, la fonction ne prendra plus en considération les int ?
comment faire une gestion d'erreur simple (pour l'exemple) par ex. si le gars ne rentre pas la bonne donnée (un int au lieu d'un float, ou vice versa..)

grand remerciement
;)
0

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

Posez votre question
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
15 nov. 2005 à 15:21
tu peux faire "rentrer" un int dans un float (mais pas l'inverse) alors ne t'embête pas avec ça...travaille avec les float
Un truc à tester avec de faire la division: la division par 0

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
lafouinasse Messages postés 3 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 16 novembre 2005
16 nov. 2005 à 10:52
OK, merci de la précision
j'ai 'float'er mes variables et fonction ;)
mon petit prog de calculatrice fonctionne bien... éhéhéh, my first little programme

je continu l'apprentissage.

vous risquez de me relire souvent je pense...
merci Bruno
0
Rejoignez-nous