pour m'entrainer a manipuler les fonctions,j'ai voulu faire une mini calculette (trés simple),mais avec des fonctions.
Alors la 1ere chose,est ce que je mit prend bien ?
Et ensuite j'ai besoin de quelques explication sur le pourquoi mon code me donne ce résultat ?
Cad par exple,quel est l'ordre des variable entre parenthèse lorsque que l'on appelle une fonction ? (cf le dernier printf).
Mon code :
#include <stdio.h>
#include <stdlib.h>
long operation()
{ //Demande du choix de l'operation
long choix = 0;
{
printf("Quel operation voulez vous faire ?\n");
printf("1- Multiplication\n");
printf("2- Addition\n");
printf("3- Soustraction\n");
printf("Votre Choix : ");
scanf("%ld", &choix);
}
return choix;
}
long calcul(long nombre1, long nombre2, long resultat, long choix)
{
switch(choix) //execution de l'operation en fonction du choix
{
case 1 :
resultat = nombre1 * nombre2;
break;
case 2 :
resultat = nombre1 + nombre2;
break;
case 3 :
resultat = nombre1 - nombre2;
break;
}
return resultat;
}
int main(int argc, char *argv[])
{
long resultat = 0, nombre1 = 0, nombre2 = 0, choix = 0;
operation(calcul);
//Demande des nombre a calculer
printf("Entrez le 1er nombre : ");
scanf("%ld", &nombre1);
printf("Entrez le 2nd nombre : ");
scanf("%ld", &nombre2);
printf("le resultat est %ld\n\n", calcul(choix, nombre1, nombre2, resultat));
system("PAUSE");
return 0;
}
Et sa me donne :
Citation : Pas de titre
Quel operation voulez vous faire ?
1- Multiplication
2- Addition
3- Soustraction
Votre Choix : 2
Entrez le 1er nombre : 2
Entrez le 2nd nombre : 2
le resultat est 2
Appuyez sur une touche pour continuer...
Alors pour arriver a ça,j'ai un peu fait du piffomètre pendant pas mal de temps.Alors je pense qu'a force de bidouiller sans savoir je trouverais la solution.
Mais j'aimerais plutôt comprendre.
Merci d'avance,.
A+++
L'IA se détecte par des fautes d'orthographe on la bloque en lui répondant des choses sans sens.
Mieux ?
Lis les commentaires et va relire le cours sur les fonctions car pour arrivé à un tel "bidouillage" !
#include <stdio.h>
#include <stdlib.h>
long operation(void)
{ //Demande du choix de l'operation
long choix = 0;
printf("Quel operation voulez vous faire ?\n");
printf("1- Multiplication\n");
printf("2- Addition\n");
printf("3- Soustraction\n");
printf("Votre Choix : ");
scanf("%ld", &choix);
/* K : Les accolades que tu avais mis ne
signifie rien. */
return choix;
}
/* K : Tu prenais resultats en paramètre ? (Il te faut les pointeur pour faire ça) */
long calcul(long nombre1, long nombre2, long choix)
{
long resultat = 0;
switch(choix) //execution de l'operation en fonction du choix
{
case 1 :
resultat = nombre1 * nombre2;
break;
case 2 :
resultat = nombre1 + nombre2;
break;
case 3 :
resultat = nombre1 - nombre2;
break;
default:
printf("/!\\ Choix non valide !\n");
/* K : Je te conseille de TOUJOURS mettre le default d'un switch. */
}
return resultat;
}
int main(void) /* K : Les arguments du main ne te servent pas. */
{
long nombre1 = 0, nombre2 = 0, choix = 0;
/* K : Ce n'est pas plutôt ça ? */
choix = operation();
//Demande des nombre a calculer
printf("Entrez le 1er nombre : ");
scanf("%ld", &nombre1);
printf("Entrez le 2nd nombre : ");
scanf("%ld", &nombre2);
printf("le resultat est %ld\n\n", calcul(nombre1, nombre2, choix));
/* system("PAUSE");
K : A éviter C'est pas multi-plateforme :
moi qui suis sous linux ça ne fonctionne pas.
Préfère utiliser getchar(); (il attend juste l'appui d'un lettre,
il n'affiche pas de message par contre) ! */
getchar();
return 0;
}
salut code rom
moi je comprend rien dans tes fonction et je vois que ca fatigue la memoire. Mieux vaut employer les methode de debutant comme moi exemple de calculette assez repetitf mais ca marche quand meme c'est l'essentiel.
la voici :</couleur><couleur nom="rose"><couleur nom="rose"><couleur nom="rose"><couleur nom="rose">
#include <stdio.h>
#include <stdlib.h>
pour m'entrainer a manipuler les fonctions,j'ai voulu faire une mini calculette (trés simple),mais avec des fonctions.
- Les commentaires en C90, c'est /* */ et non //
- long operation () Quand une fonction n'a pas de paramètres, on le précise avec (void)
- operation (calcul); La fonction a pour paramètre une autre fonction ? C'est possible, mais je doute que ce soit ce que tu veux faire... C'est du C très avancé...
- int main (int argc, char *argv[]) Les paramètres de main() n'étant pas utilisés, on peut utiliser la forme simplifiéeint main (void)
-calcul (choix, nombre1, nombre2, resultat)est incohérent avec la définition de la fonction :long calcul (long nombre1, long nombre2, long resultat, long choix) En effet, ce qui compte, c'est l'ordre des paramètres et non leur nom qui est purement documentaire.
D'autre part, il est tout à fait inutile de passer 'resultat' en paramètre, car dans la fonction, sa valeur n'est jamais lue et qu'elle par contre renseignée (écrite ou affectée) et retournée.
- il manque une saisie pour déterminer quelle opération tu veux effectuer.
Je te laisse déjà réfléchir à tout ça... Fait de ton mieux et poste ton code corrigé.
Correction :
#include <stdio.h>
#include <stdlib.h>
long operation (void)
{
long choix = 0;
/* Choix de l'operation */
printf ("Quel operation voulez vous faire ?\n");
printf ("1- Multiplication\n");
printf ("2- Addition\n");
printf ("3- Soustraction\n");
printf ("Votre Choix : ");
scanf ("%ld", &choix);
getchar ();
return choix;
}
long calcul (long nombre1, long nombre2, long op)
{
long resultat;
/* execution de l'operation en fonction du choix */
switch (op)
{
case 1:
resultat = nombre1 * nombre2;
break;
case 2:
resultat = nombre1 + nombre2;
break;
case 3:
resultat = nombre1 - nombre2;
break;
default:
printf ("choix invalide\n");
resultat = 0;
}
return resultat;
}
int main (void)
{
long nombre1 = 0, nombre2 = 0, op = 0;
op = operation ();
/* Demande des nombre a calculer */
printf ("Entrez le 1er nombre : ");
scanf ("%ld", &nombre1);
getchar ();
printf ("Entrez le 2nd nombre : ");
scanf ("%ld", &nombre2);
getchar ();
printf ("le resultat est %ld\n\n", calcul (nombre1, nombre2, op));
return 0;
}
/* 3 comments processed by CMT2 1.0 (c) ED 2007 */
J'ai rejeter un oeil au cours des fonction et au code de Keiristos.
Alors je vais essayer d'etre le plus clair possible dans ma question.
Dans le cours il y a cette exple :
le code :
#include <stdio.h>
#include <stdlib.h>
long triple(long nombre)
{
return 3 * nombre;
}
int main(int argc, char *argv[])
{
long nombreEntre = 0;
printf("Entrez un nombre... ");
scanf("%ld", &nombreEntre);
// Le résultat de la fonction est directement envoyé au printf et n'est pas stocké dans une variable
printf("Le triple de ce nombre est %ld\n", triple(nombreEntre));
system("PAUSE");
return 0;
}
L'explication :
Citation : Pas de titre
Que fait l'ordinateur quand il tombe sur cette ligne ?
C'est très simple. Il voit que la ligne commence par printf, il va donc appeler la fonction printf.
Il envoie à la fonction printf tous les paramètres qu'on lui donne. Le premier paramètre est le texte à afficher, et le second est un nombre.
Votre ordinateur voit que pour envoyer ce nombre à la fonction printf il doit d'abord appeler la fonction triple. C'est ce qu'il fait : il appelle triple, il effectue les calculs de triple, et une fois qu'il a le résultat il l'envoie directement dans la fonction printf !
Donc ok l'exple du cours je le comprend,mais je n'ai pas encore assimiler le truc.
Pour le code de Keiristos dans le dernier printf,l'ordi affiche d'abord le texte (1er parametre),après il voit la fonction calcul.Il apelle donc la fonction calcul...
Jusqu'a la ok je suit,mais après c'est la que j'ai du mal,quand il y a plusieur variable entre parenthèses.
Comment savoir l'ordre dans laquelle les mettrent sans faire du piffomètres ?
PS: en fait c'est par exple pour la variable choix que je bloque.
je sait pas si je suis suffisament clair dans ma demande
PS²:merci pour vos réponses,c'est bon j'ai compris l'ordre dans lequel il faut mettre les variables lors de l'appelle d'une fonction.
Il suffit de remmettre l'ordre des variables de la fonction appellée.
Je ne remet pas de corriger car Keiristos l'a mit.
Encore merci,vos post m'ont été très utiles.
L'IA se détecte par des fautes d'orthographe on la bloque en lui répondant des choses sans sens.
Mini calculette avec des fonctions
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
L'IA se détecte par des fautes d'orthographe on la bloque en lui répondant des choses sans sens.
L'IA se détecte par des fautes d'orthographe on la bloque en lui répondant des choses sans sens.
L'IA se détecte par des fautes d'orthographe on la bloque en lui répondant des choses sans sens.