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

Problème sur les Opérations élémentaires

PsychotikMeier
PsychotikMeier
Niveau 7
21 février 2007 à 13:03:50

Bonjour tout le monde

Je suis en train de faire un petit programme en C, et j´ai l´impression que mes opérations de fonctionnent pas.
Même les plus élémentaires : je soustrais un entier par un autre entier, je place le résultat dans un entier et je m´appercois que le résultat n´est pas bon???

Voici les lignes en question :
printf("La somme apres calcul : %d\n",somme);
printf("Le prix : %d\n",prix);
diff=prix-somme;
printf("La difference : %d\n",diff);

Quand je demarre le programme, je vois par exemple que somme vaut 1, que prix vaut 40 et le résultat, diff, m´affiche 9.

Qu´ais-je bien pû oublier d´introduire dans mon programme ?
Merci.

godrik
godrik
Niveau 30
21 février 2007 à 13:23:38

donnes nous tout ton code.

PsychotikMeier
PsychotikMeier
Niveau 7
21 février 2007 à 13:26:49

Le programme n´en est qu´à son début, je fais les fonctions les unes après les autres, mais, voila quand mm le programme : il s´agit d´un monnayeur.

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

typedef struct { int valeur;
int quantite;
}Tunite;

typedef struct { Tunite tab[8];
int somme;
}Tcaisse;

void Initialisation(Tcaisse*);
void Saisie(int *,int *,Tcaisse*);

int main(void)
{
Tcaisse macaisse;
int valeur=0;
int monnaie=0;

Initialisation(&macaisse);
srand((int)time(NULL));
Saisie(&valeur,&monnaie,&macaisse);
getchar();
}

void Initialisation(Tcaisse *caisse)
{
caisse->tab[0].valeur=1;
caisse->tab[1].valeur=2;
caisse->tab[2].valeur=5;
caisse->tab[3].valeur=10;
caisse->tab[4].valeur=20;
caisse->tab[5].valeur=50;
caisse->tab[6].valeur=100;
caisse->tab[7].valeur=200;
caisse->tab[0].quantite=30;
caisse->tab[1].quantite=30;
caisse->tab[2].quantite=30;
caisse->tab[3].quantite=30;
caisse->tab[4].quantite=30;
caisse->tab[5].quantite=30;
caisse->tab[6].quantite=30;
caisse->tab[7].quantite=30;
}

void Saisie(int *prix, int *somme, Tcaisse *coffre)
{
int choix,valeur,nombre,tampon,diff;

somme=0;
prix=rand()%60;
printf("Le prix est de : %d centimes.\n\n",prix);
do
{
printf("Que voulez-vous faire ?\ n");
printf("1. Rajouter des pièces\n");
printf("2. Passer a l´etape suivante\n");
scanf("%d",&choix);
switch(choix)
{
case 1 : do
{
do
{
printf("Les pieces a ajouter sont de quelles valeurs ?\ n1. 1centime\n2. 2 centimes\n3. 5 centimes\n4. 10 centimes\n5. 20 centimes\n6. 50 centimes\n7. 1 euros\n8. 2 euros\n");
fflush(stdin);
scanf("%d",&valeur);
}while((valeur<0)||(valeur>9));
do
{
printf("\nCombien de ces pieces sont a ajouter ?" );
fflush(stdin);
scanf("%d",&nombre);
}while((nombre<0)||(nombre>1000));
printf("La somme initiale : %d\n",somme);
tampon=somme;
somme=coffre->tab[valeur-1].valeur*nombre;
printf("Valeur intermediare : %d\n",somme);
somme=somme+tampon;
printf("dans le tableau : %d\n",coffre->tab[valeur-1].valeur);
printf("le nombre multiple : %d\n",nombre);
printf("La somme apres calcul : %d\n",somme);
printf("Le prix : %d\n",prix);
diff=prix-somme;
printf("La difference : %d\n",diff);
if(somme<prix) printf("Il manque %d centimes\n",prix-somme);
}while(somme>=prix);
break;
case 2 : break;
}
}while(valeur==1);
}

dnob700
dnob700
Niveau 10
21 février 2007 à 13:47:45

dans la fonctions saisie, prix et somme sont des pointeurs.

Pour manipuler leur valeur, il faut donc faire :

diff = *prix - *somme;

et de même partout où ils apparaissent dans la fonction.

PsychotikMeier
PsychotikMeier
Niveau 7
21 février 2007 à 14:04:20

Bon Dieu, mais c´est bien sûr.
Merci dnob700 pour ton aide.
Rhaa, quel noob je fais.

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