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

[C] 'Calcullatrice'

killarena76
killarena76
Niveau 9
26 juin 2006 à 23:32:06

Voila , excusez moi d´avoir posté 2fois en 30min mais j´ai un autre probleme avec ce script (Je sais les long au début c´est pas beau :d) et dès que je lance le programme compilé , il me met console.exe ne réponds pas mais le débuggeur ne m´indique aucun probleme

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

int main()
{
long nombre = 0;
long div1 = 0;
long div2 = 0;
long mul1 = 0;
long mul2 = 0;
long ad1 = 0;
long ad2 = 0;
long sou1 = 0;
long sou2 =0;
printf("Bonjour , que voulez vous effectuer ?\ n\n");
printf("Division : Tapez 1 \nMultiplication : Tapez 2 \nAddition : Tapez 3 \nSoustraction : Tapez 4 \n");
scanf("%ld", nombre);
if (nombre == 1)
{
printf("Alors comme ca tu veux faire une division ? Et bien tape le premier nombre \n");
scanf("%ld",div1);
printf("Le deuxieme \n");
scanf("%ld",div2);
printf("Le resultat est de : div1 / div2");
}
else if (nombre == 2)
{
printf("Quel est le premier nombre de ta multiplication ?\ n");
scanf("%ld",mul1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",mul2);
}
else if (nombre == 3)
{
printf("Quel est le premier nombre de ta soustraction ? \n");
scanf("%ld",sou1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",sou2);
} else if (nombre == 4)
{
printf("Quel est le premier nombre de ton addition ?\ n");
scanf("%ld",ad1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",ad2);
}
else if (nombre > 4)
{
printf("euh tu ne sais pas compter ?" );
}

return 0;
}

killarena76
killarena76
Niveau 9
26 juin 2006 à 23:43:07

Meme en faisant intervenir le Switch au lieu des "if" ca ne marche pas , est ce que ca marche chez vous ?

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

int main()
{
long nombre;
long div1 = 0;
long div2 = 0;
long mul1 = 0;
long mul2 = 0;
long ad1 = 0;
long ad2 = 0;
long sou1 = 0;
long sou2 =0;
printf("Bonjour , que voulez vous effectuer ?\ n\n");
printf("Division : Tapez 1 \nMultiplication : Tapez 2 \nAddition : Tapez 3 \nSoustraction : Tapez 4 \n");
scanf("%ld", &nombre);

switch (nombre)
{
case 1:
printf("Alors comme ca tu veux faire une division ? Et bien tape le premier nombre \n");
scanf("%ld",div1);
printf("Le deuxieme \n");
scanf("%ld",div2);
printf("Le resultat est de : div1 / div2");
break;

case 2:
printf("Quel est le premier nombre de ta multiplication ?\ n");
scanf("%ld",mul1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",mul2);
break;

case 3:
printf("Quel est le premier nombre de ta soustraction ? \n");
scanf("%ld",sou1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",sou2);
break;

case 4:
printf("Quel est le premier nombre de ton addition ?\ n");
scanf("%ld",ad1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",ad2);
break;

default:
printf("euh tu ne sais pas compter ?" );
break;
}

return 0;
}

Kaoron
Kaoron
Niveau 9
27 juin 2006 à 00:17:03

Premièrement je te conseillerai de décomposer tes applications en fonctions ( addition(x,y), multiplication(x,y)) ca t´éviterait d´avoir des déclarations de variables qui servent à rien. Ca te permettrait aussi de tester facilement tes applications une par une.
Ensuite, essaye de remplacer tes initialisations de variables par 1 au lieu de 0.

killarena76
killarena76
Niveau 9
27 juin 2006 à 01:09:43

Tout d´abord , merci a toi pour ta réponse , j´ai essayé en remplacant les valeurs initiales des variables a 1 mais ca ne marche toujours pas et je ne comprends pas trop "je te conseillerai de décomposer tes applications en fonctions ( addition(x,y), multiplication(x,y)) "

killarena76
killarena76
Niveau 9
27 juin 2006 à 01:18:27

Voila pour la correction en quelque sorte mais s´il vous plait , pouvez vous essayez de C/C ce qui suit et d´essayer de le compiler pour me dire ce qui ne va pas merci bcp

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

int main()
{
long nombre = 1;
long div1 = 1;
long div2 = 1;
long mul1 = 1;
long mul2 = 1;
long ad1 = 1;
long ad2 = 1;
long sou1 = 1;
long sou2 = 1;
printf("Bonjour , que voulez vous effectuer ?\ n\n");
printf("Division : Tapez 1 \nMultiplication : Tapez 2 \nAddition : Tapez 3 \nSoustraction : Tapez 4 \n");
scanf("%ld", &nombre);

switch (nombre)
{
case 1:
printf("Alors comme ca tu veux faire une division ? Et bien tape le premier nombre \n");
scanf("%ld", &div1);
printf("Le deuxieme \n");
scanf("%ld", &div2);
printf("Le resultat est de : div1 / div2");
break;

case 2:
printf("Quel est le premier nombre de ta multiplication ?\ n");
scanf("%ld", &mul1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld", &mul2);
break;

case 3:
printf("Quel est le premier nombre de ta soustraction ? \n");
scanf("%ld", &sou1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld", &sou2);
break;

case 4:
printf("Quel est le premier nombre de ton addition ?\ n");
scanf("%ld", &ad1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld", &ad2);
break;

default:
printf("euh tu ne sais pas compter ?" );
break;
}

return 0;
}

Kaoron
Kaoron
Niveau 9
27 juin 2006 à 01:35:43

En fait les 1 servent à rien... j´avais pas lu tout le code et juste anticipé un truc genre évaluation de 0/0 sur la div... mais y´en a pas :p.

Je ne code pas en c donc je saurais pas repérer directement d´ou vient l´erreur.
Pour les fonctions, je pense que ce lien
http://www.siteduzero.com/tuto-3-2842-1-les-fonctions.html#ss_part_1
saura t´expliquer mieux que je ne le ferai, et dans ton langage en plus.

_Xaar
_Xaar
Niveau 10
27 juin 2006 à 01:36:49

Moi cà marche, sauf qu´il y avait quelques n à recoller aux \ après le copié collé et que cà sort direct du programme sans attendre après avoir affiché le résultat de l´opération, mais sinon je n´ai pas le bug que tu a.

Vengeur41
Vengeur41
Niveau 10
27 juin 2006 à 01:39:23

Tout d´abord, il est normal que ton programme afiche dans la console
"Le resultat est de : div1 / div2" !
Si tu veux lui demander le resultat de la division, tu tape :
printf("Le resultat est de : %f",float(div1/div2));

Le %f indique au compilateur que l´on a affaire a un nombre réel. (le %d indiquerait que c´est un entier).
Le second argument est le nombre (variable ou constante) qui correspond à ce %f, et tu peux en appeler autant que tu veux.

Exemple :

int e1,e2; //2 entiers e1 et e2
printf("Entrer les 2 entiers puis pressez entree \
n");
scanf("%d %d", &e1, &e2);

printf("e1*e2 = %d , e1+e2 = %d, e1/e2 = %f",e1*e2, e1+e2, e1/e2);

Pour en revenir à ton programme, il est normal que les additions, multiplications et soustractions ne fonctionnent pas puisque tu n´affiche pas le résultat.

Enfin, tu pourrais utiliser seulement 2 variables communes aux 4 opérations plutot que 8...
Ca consomme moins de mémoire et c´est plus lisible.

Vengeur41
Vengeur41
Niveau 10
27 juin 2006 à 01:41:03

Ah oui et maintenant que j´y pense, résoud le problème de la division par 0 !

if (div2!=0)
afficher le resultat
else
printf("Calcul impossible"); !

killarena76
killarena76
Niveau 9
27 juin 2006 à 11:23:06

:hap: ... merci !

killarena76
killarena76
Niveau 9
27 juin 2006 à 11:34:24

Voila , après avoir écouté vos conseils (ne mettre que 2variables , raccoller les \ et les n , prinf pour les 4 operations , et le %f float)

Mais j´ai toujours un probleme et je ne sais pas du tout d´ou ca vient ! C´est a partir du moment ou je valide le nombre demandé par la phrase "Que voulez vous effectuez ?" il me met que console.exe ne reponds pas ... Donc je ne sais pas si ca peut etre du a une erreur dans la suite (Apres le scanf("%ld",nombre); ) ou si ca vient d´avant

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

int main()
{
long nombre;
long v1;
long v2;
printf("Bonjour , que voulez vous effectuer ?\ n\n");
printf("Division : Tapez 1 \nMultiplication : Tapez 2 \nAddition : Tapez 3 \nSoustraction : Tapez 4 \n");
scanf("%ld", nombre);
if (nombre == 1)
{
printf("Alors comme ca tu veux faire une division ? Et bien tape le premier nombre \n");
scanf("%ld",v1);
printf("Le deuxieme \n");
scanf("%ld",v2);
if (v2!=0)
{
printf("Le resultat est de : %f",float(v1/v2));
}
else
{
printf("calcul impossible");
}
}
else if (nombre == 2)
{
printf("Quel est le premier nombre de ta multiplication ?\ n");
scanf("%ld",v1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",v2);
printf("Le resultat est donc de : %f",float(v1*v2));
}
else if (nombre == 3)
{
printf("Quel est le premier nombre de ta soustraction ? \n");
scanf("%ld",v1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",v2);
printf("Le resultat est donc de : %f",float(v1-v2));
} else if (nombre == 4)
{
printf("Quel est le premier nombre de ton addition ?\ n");
scanf("%ld",v1);
printf("Bien et le deuxieme ?\ n");
scanf("%ld",v2);
printf("Le resultat est donc de : %f",float(v1+v2));
}
else if (nombre > 4)
{
printf("euh tu ne sais pas compter ?" );
}

return 0;
}

:merci: a vous de vos reponses !

killarena76
killarena76
Niveau 9
27 juin 2006 à 11:37:25

! je ne devrais pas changer la valeur par hasard en mettant set nombre to 10 apres avoir fait le calcul ? Car la il le lit en boucle non ?

guyver2
guyver2
Niveau 10
27 juin 2006 à 12:16:41

alors voila j´ai corrigé ton CODE (et pas script)

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

int main()
{
int nombre;
int v1;
int v2;
printf("Bonjour , que voulez vous effectuer ?\ n\n");
printf("Division : Tapez 1 \nMultiplication : Tapez 2 \nAddition : Tapez 3 \nSoustraction : Tapez 4 \n");
scanf("%d", &nombre);
if (nombre == 1)
{
printf("Alors comme ca tu veux faire une division ? Et bien tape le premier nombre \n");
scanf("%d",&v1);
printf("Le deuxieme \n");
scanf("%d",&v2);
if (v2!=0)
{
printf("Le resultat est de : %f",(float)((float)v1/v2));
}
else
{
printf("calcul impossible");
}
}
else if (nombre == 2)
{
printf("Quel est le premier nombre de ta multiplication ?\ n");
scanf("%d",&v1);
printf("Bien et le deuxieme ?\ n");
scanf("%d",&v2);
printf("Le resultat est donc de : %d\n",(v1*v2));
}
else if (nombre == 4)
{
printf("Quel est le premier nombre de ta soustraction ? \n");
scanf("%d",&v1);
printf("Bien et le deuxieme ?\ n");
scanf("%d",&v2);
printf("Le resultat est donc de : %d\n",(v1-v2));
} else if (nombre == 3)
{
printf("Quel est le premier nombre de ton addition ?\ n");
scanf("%d",&v1);
printf("Bien et le deuxieme ?\ n");
scanf("%d",&v2);
printf("Le resultat est donc de : %d\n",(v1+v2));
}
else if (nombre > 4)
{
printf("euh tu ne sais pas compter ?\ n" );
}
return 0;
}

    1. ######

les modifs:
-int au lieu de long
-%d au lieu de %ld
-pour caster un résultat en float il faut faire comme ceci
(float)((float)x/y)
le premier (float) n´est pas obligatoire.
une operation (+ - * /) renvoie un int si les deux opérandes sont des int, un float si il y a au moins un float.

-rajout de & dans les scanf, il faut passer tes variables par adresse et non par valeur sinon elle ne sont pas modifiées.

- inversion des cas 3 et 4 (ça colait pas avec le choix)
- changement de %f en %d pour l´addition, la multiplication et la soutraction (aucune ne renvoie de float avec des opérandes entieres)

je crois que c´est tout.

PS si tu es sous windows ajoute
system("pause");
a la fin pour éviter la fermeture de la fenetre.

killarena76
killarena76
Niveau 9
27 juin 2006 à 12:28:24

Merci beaucoup a toi ca marche a merveille (j´avais dit script car j´etais habitué aux editeurs de jeux avec des conditions) merci !

Vengeur41
Vengeur41
Niveau 10
27 juin 2006 à 12:43:55

"
-pour caster un résultat en float il faut faire comme ceci
(float)((float)x/y) "

Bizzare, j´ai toujours fait float(x/y) et ca marche... C´est une question de standart si on fait l´autre truc ?

guyver2
guyver2
Niveau 10
27 juin 2006 à 14:11:18

mon compilo (gcc) me crie dessus quand je fais
float(x)
il faut mettre le type entre parenthèses comme ceci
(float) x

dnob700
dnob700
Niveau 10
27 juin 2006 à 18:26:19

float(x) c´est du C++ je crois (ou alors un ajout récent au C, ou je ne sais quoi).

Mais fut un temps seul (float)x existait. Donc selon les options que tu donne à gcc il peut effectivement n´acepté que cette première forme.

guyver2
guyver2
Niveau 10
27 juin 2006 à 18:32:53

j´utilise gcc 4.0 et sans option il n´accepte que (float)x

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