CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Calculette mode console en C,problème

anakinobscur
anakinobscur
Niveau 8
20 décembre 2008 à 11:52:16

Bonjour,je me suis mis a la programmation depuis 1 petit mois avec le site du zero. J'ai voulu créer une calculette en mode console qui gère toutes les opérations de base et les puissances.Je me suis servi de ma logique pour la créer,mais quand je veux choisir quelle opération faire(avec un scanf),ça plante(Quand le programme est lancé). Voici le code source(Je suis sous Code Blocks) :

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <math.h>

long menu()
{
long choix = 0;

while( choix < 1 || choix > 5)
{
printf("Menu\n\n");
printf("1- Addition\n\n2- Soustraction\n\n3- Multiplication\n\n4- Division\n\n5- Puissances d'un nombre\n\n");
printf("Rentrez le chiffre qui definit votre operation ");
scanf("%ld", choix);
}
return choix;

}

double addition()
{ double nombre1 = 0, nombre2 = 0, resultat = 0;

printf("\nEntrez le premier nombre ");
scanf("%lf", &nombre1);

printf("\nEntrez le deuxieme nombre ");
scanf("%lf", &nombre2);

resultat = nombre1 + nombre2;
printf("%lf + %lf = %lf\n\n", nombre1, nombre2, resultat);

}

double soustraction()
{ double nombre1 = 0, nombre2 = 0, resultat = 0;

printf("\nEntrez le premier nombre ");
scanf("%lf", &nombre1);

printf("\nEntrez le deuxieme nombre ");
scanf("%lf", &nombre2);

resultat = nombre1 - nombre2;
printf("%lf - %lf = %lf\n\n", nombre1, nombre2, resultat);

}

double multiplication()
{
double nombre1 = 0, nombre2 = 0, resultat = 0;

printf("\nEntrez le premier nombre ");
scanf("%lf", &nombre1);

printf("\nEntrez le deuxieme nombre ");
scanf("%lf", &nombre2);

resultat = nombre1 * nombre2;
printf("%lf X %lf = %lf\n\n", nombre1, nombre2, resultat);
}

double division()
{
double nombre1 = 0, nombre2 = 0, resultat =0;

printf("\nEntrez le premier nombre ");
scanf("%lf", &nombre1);

printf("\nEntrez le deuxieme nombre ");
scanf("%lf", &nombre2);

resultat = nombre1 / nombre2;
printf("%lf : %lf = %lf\n\n", nombre1, nombre2, resultat);
}

double puissance()
{
double nombre1 = 0, nombre2 = 0, resultat = 0;

printf("\nEntrez le premier nombre(Le nombre de depart) ");
scanf("%lf", &nombre1);

printf("Entrez la puissance ");
scanf("%lf", &nombre2);

resultat = pow(nombre1, nombre2);
printf("%lf puissance %lf = %lf\n\n", nombre1, nombre2, resultat);
}

int main()
{ long recommencer = 1;
do
{

printf("Bienvenue sur la calculette ultime de Vivien Cheneveau!\n");

switch (menu())
{
case 1:
addition();
break;

case 2:
soustraction();
break;

case 3:
multiplication();
break;

case 4:
division();
break;

case 5:
puissance();
break;

}

printf("Voulez-vous faire une autre operation?\n\n 1-Oui\n 2-Non\n\n");
scanf("%ld", &recommencer);

}
while (recommencer != 2);

return 0;
}

Ps: C'est un entrainement sur les fonctions.

PPs: J'ai 12 ans, pouvez-vous me dire si je suis doué?^^(J'ai fait cette calculette uniquement avec la logique,il n'y a pas la correction du site du zero comme pour les tp :p ).

dnob700
dnob700
Niveau 10
20 décembre 2008 à 13:11:29

il faut passer l'adresse de la variable choix à la fonction scanf ("&choix").

"J'ai 12 ans, pouvez-vous me dire si je suis doué?"
"mais quand je veux choisir quelle opération faire(avec un scanf),ça plante"

Ça répond à ta question ?

thebigelephant
thebigelephant
Niveau 9
20 décembre 2008 à 13:15:31

Euh, honnêtement, ton code est vraiment TRES TRES cochon. Et pis, en programmation, si tu bloques à un petit scanf, c'est pas gagné...
C'est pas après un petit programme de calculette que on déterminera si tu es doué ou pas. En algorithmique, tu n'as aucune base en tout cas (désolé de te le dire comme ça, ne le prends pas mal). Peut-être que par la suite après des cours sur l'ALGORITHMIQUE tu seras meilleur, en tout cas n'espères pas devenir "doué" avec le site du zéro. Avec le site du zéro, t'apprends que les bases et pour le reste c'est moyen-moyen... (notions pas du tout détaillées parfois inexistantes...).
Honnêtement, avec une bonne analyse tu pourrais te dire que c'est peut-être à cause de l'âge (la programmation est tout public, comprenez bien ça mais quand on est trop jeune on n'a pas l'outil mathématique pour (normalement une calculette ça peut tenir en moins de 20 lignes tu sais))
Bonne chance et au revoir :)

anakinobscur
anakinobscur
Niveau 8
20 décembre 2008 à 13:18:14

Pas de problèmes j'ai fait une calculette avec des fonctions pour m'entrainer aux fonctions sinon je fais ce code qui est bien plus simple(Il y a beaucoup d'espaces pour plus de visibilité) :

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <math.h>

int main()
{
double resultata = 0, n1a = 0, n2a = 0, resultats = 0, n1s = 0, n2s = 0, resultatm = 0, n1m = 0, n2m = 0, resultatd = 0, n1d = 0, n2d = 0, puiss = 0, nbp = 0, nbdp = 0;
long choixOperation = 0;
printf("Bienvenue sur Calculator,Copyright Vivien Chenevevau,programmeur de ce projet\n\n");
printf("===Menu===\n");
printf("Choisissez votre operation\n\n\n");
printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Puissance d'un nombre\n");

printf("Entrez juste le nombre de votre operation: ");
scanf("%ld", &choixOperation);

switch (choixOperation)
{
case 1:
printf("Entrez le premier nombre ");
scanf("%lf", &n1a);
printf("Entrez le deuxieme nombre ");
scanf("%lf", &n2a);
resultata = n1a + n2a;
printf("%lf + %lf = %lf\n", n1a, n2a, resultata);
printf("Voila le resultat de votre operation!Revenez quand vous voulez!\n");
break;

case 2:
printf("Entrez le premier nombre ");
scanf("%lf", &n1s);
printf("Entrez le deuxieme nombre ");
scanf("%lf", &n2s);
resultats = n1s - n2s;
printf("%lf - %lf = %lf\n", n1s, n2s, resultats);
printf("Voila le resultat de votre operation!Revenez quand vous voulez!\n");
break;

case 3:
printf("Entrez le premier nombre ");
scanf("%lf", &n1m);
printf("Entrez le deuxieme nombre ");
scanf("%lf", &n2m);
resultatm = n1m * n2m;
printf("%lf X %lf = %lf\n", n1m, n2m, resultatm);
printf("Voila le resultat de votre operation!Revenez quand vous voulez!\n");
break;

case 4:
printf("Entrez le premier nombre ");
scanf("%lf", &n1d);
printf("Entrez le deuxieme nombre ");
scanf("%lf", &n2d);
resultatd = n1d / n2d;
printf("%lf : %lf = %lf\n", n1d, n2d, resultatd);
printf("Voila le resultat de votre operation!Revenez quand vous voulez!\n");
break;

case 5:
printf("Entrez votre nombre ");
scanf("%lf", &nbp);
printf("Entrez le nombre de puissance ");
scanf("%lf", &nbdp);
puiss = pow(nbp, nbdp);
printf("%lf puissance %lf = %lf\n", nbp, nbdp, puiss);
printf("Voila le resultat de votre operation!Revenez quand vous voulez!\n");
break;

default:
printf("Vous n'avez pas entre le bon nombre,triple buse!\n");
break;
}
return 0;

}

thebigelephant
thebigelephant
Niveau 9
20 décembre 2008 à 13:18:37

Yop, faut aussi apprendre à relire son code avant de demander de l'aide sur un forum, voir ses erreurs par soi-même et essayer de les corriger etc...

[[Radium]]
[[Radium]]
Niveau 4
04 janvier 2009 à 10:57:46

omg utilise des fonctions, ou alors demande de saisir les nombres avant, parce que la c'est de la répétition de code pour rien ... ton code source pourrait etre 4 fois moins long

dnob700
dnob700
Niveau 10
04 janvier 2009 à 11:42:50

Même s'il est un peu tard, il y a un truc important en programmation, c'est que dès qu'il y a des copier/coller (ici tes lignes qui demande d'entrer les deux nombres), alors c'est qu'il y a une erreur de design.

Tu devrais t'arranger pour que le code qui demande les valeurs n'apparaisse qu'une seule fois dans ton programme. Et ensuite seulement faire un switch selon l'opération à effectuer.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment