Il y a actuellement 207 visiteurs
Mardi 23 Avril 2024
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

On ne se moque pas ^^

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

On ne se moque pas ^^

Message le 13 Mai 2008 20:58

Bonsoir à tous,

Voilà, j'ai voulu me lancé dans un peu de programmation. Je débute donc c'est simple, pourtant ça coince ..

Je teste juste la fonction if en faisant une petite calculatrice.

Je programme avec dev en C, programme en mode console.

Voici mon code :

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

int main(int argc, char *argv[])
{
printf ("Ceci est une calculatrice en cours d'amelioration permettant simplement de faire 4 operations de base avec des chiffres entiers.

Tapez 1 pour une addition, 2 pour une soustraction, 3 pour pour une multiplication ou encore 4 pour une division puis faites Entree.

Votre choix -->");
long reponse = 0;
scanf ("%ld", &reponse);
if (reponse==1)
{
long nombre1=0;
long nombre2=0;
printf ("C'est parti pour une addition.
");
printf ("Quel est votre 1er nombre ?
");
scanf ("%ld", &nombre1);
printf ("Quel est votre deuxieme nombre ?
");
scanf ("%ld", &nombre2);
long resultat=nombre1+nombre2;
printf ("%ld + %ld = %ld
", nombre1, nombre2, resultat);
}
if (reponse==2);
{
long nombre1=0;
long nombre2=0;
printf ("C'est parti pour une soustraction.
");
printf ("Quel est votre 1er nombre ?
");
scanf ("%ld", &nombre1);
printf ("Quel est votre deuxieme nombre ?
");
scanf ("%ld", &nombre2);
long resultat=nombre1-nombre2;
printf ("%ld - %ld = %ld
", nombre1, nombre2, resultat);
}
if (reponse==3);
{
printf ("test");
}

system("PAUSE");
return 0;
}

Voilà. Si je tape 1, l'addition se lance, 2 la soustraction se lance, pas de souci. Mais si je tape 3, je devrais avoir "test" à l'écran or c'est la soustraction qui se lance..qui se lance d'ailleurs avec tous les autres chiffres (sauf 1).

Voilà pour illustrer si ce n'est pas totalement clair :

Image

Voilà merci de votre aide.
vico493
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 227
Inscription: 11 Jan 2008 20:58
 


Message le 13 Mai 2008 21:26

Salut,

Si tu remplaces tes deuxième et troisième if par des else if, le problème se pose toujours ?
Autre petit détail, réponse n'a pas besoin d'être un long, un int suffit.

La faute a dû m'échapper, je ne vois rien d'autre qui pourrait causer ce problème, à première vue.
Avatar de l'utilisateur
coyote89
PC-Infopraticien
PC-Infopraticien
 
Messages: 7862
Inscription: 07 Mai 2003 17:39
Localisation: Chine :)
 

Re: On ne se moque pas ^^

Message le 13 Mai 2008 21:41

vico493 a écrit:if (reponse==2);
...
if (reponse==3);

La faute t'as effectivement échappé Coyote :)
Pas de ; après le if () il me semble en C.
Le ; arrête l'instruction... bizzarement je ne voyais pas le programme faire ça mais bon.
Du coup le ; fait que les instructions entre accolades ne sont pas soumises au test des deux derniers IF.

Bref... voilà.
Pas mal pour un début mais y'a 90% d'optimisation à faire ;)
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9041
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Message le 13 Mai 2008 22:08

Mouarf, bien vu. Et effectivement, moi je n'avais pas vu... les lemmings vieilliraient mieux que les coyotes ? :lol:

Bref, en effet la validation des 2 conditions n'entraîne aucune action, à cause de ce point virgule. Et les blocs de code de la soustraction et du test sont exécutés. Il est même fort probable qu'à la fin de ton addition (choix 1), on te propose de faire une soustraction sans que tu ne le demandes, et qu'à la fin de cette soustraction, tu vois s'afficher le mot "test " ;)
Avatar de l'utilisateur
coyote89
PC-Infopraticien
PC-Infopraticien
 
Messages: 7862
Inscription: 07 Mai 2003 17:39
Localisation: Chine :)
 

Message le 13 Mai 2008 22:17

Problème corrigé après la suppression des ; (après les if).

Merci à tout les deux.

Ps : Je me doute bien que pour quelqu'un qui programme vraiment, je dois perdre beaucoup de temps..par exemple je crois que je peux raccourcir...

long nombre1=0;
long nombre2=0;

... en une seule ligne mais je ne sais plus trop exactement.

Vous risquez de me revoir bientôt avec d'autres question de .. débutants ^^.

Bonne soirée
vico493
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 227
Inscription: 11 Jan 2008 20:58
 

Message le 15 Mai 2008 17:09

vico493 a écrit:Pje crois que je peux raccourcir...
long nombre1=0;
long nombre2=0;

Moui ..
long nombre1=0, nombre2=0;
tout simplement.... et encore plus :
long nombre1, nombre2;
.. car vu que tu saisies les valeurs derrière je ne vois pas trop l'intérêt de perdre une instruction à les initialiser à 0.

coyote89 a écrit: les lemmings vieilliraient mieux que les coyotes ? :lol:

Naturellement... on construit des escaliers quand on arrive au bord des falaises, on ne tombe pas bêtement dans le canyon "nous" :lol:
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9041
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 



Sujets similaires

Message mangera ou mangera pas ? on ne se moque pas de la PS3 !
http://www.info-mods.com/actualite-7367 ... a_PS3.html elle a pas faim ! faut mettre de l'huile
Réponses: 4


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.