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

Probleme dans mon programme en C

gnooooome
gnooooome
Niveau 9
15 mai 2005 à 22:52:25
  1. include < stdio.h>

void evaluation(int a)
{
printf("Entrez votre note a l´évaluaion\n");
scanf("%d",&);
}

void controle(int b)
{
printf("Entrez votre note au controle continu\n");
scanf("%d",&);
}

void calcul(int a, int b, int c, int d)
{

c=a*0.6;
d=b*0.4;

}

void resultat(int c, int d, int r)
{
r=c+d;
printf("Votre note de module est: %d\n",r);
}

int main()
{
int a;
int b;
int c;
int d;
int r;
evaluation(a);
controle(b);
calcul(a, b, c, d);
resultat(c, d, r);
return(0);
}

gnooooome
gnooooome
Niveau 9
15 mai 2005 à 22:55:29

Mon programme compile sans problème, mais quelque soit les notes que je rentre, il renvoit 9.
Je comprend vraiment pas ou est l´erreur.
Merci

MrGoTo
MrGoTo
Niveau 8
15 mai 2005 à 22:59:46

Ce qui ce passe c´est que tes fonctions modifient des copies locales car tu fais un passage par valeur. Donc tes variables dans la fonction main ne sont pas changées. Pour palier le probleme fait un passage par pointeur ou bien sers-toi de return.

grutt
grutt
Niveau 4
15 mai 2005 à 23:02:51

normal : si tu veux faire ca tu doit utiliser des pointeurs . .. ( mais pour un debutant ya plus simple)

ou allors tu doit mettre les valeurs que tu veux stocker en valeur de retour ( la tu les met en entree
( tu ecrit des fonctions style
int evaluation(void)
que tu appelle ensuite dans ton main de cette facon
a=evaluation ( atention pour renvoyer plusieurs
valeurs en meme temps utilise des structures)

gnooooome
gnooooome
Niveau 9
15 mai 2005 à 23:45:39

ca donnerait quoi avec des return? j´y arrive pas la lol

MrGoTo
MrGoTo
Niveau 8
15 mai 2005 à 23:49:11

int evaluation()
{
int a;
printf("Entrez votre note a l´évaluaion\n");
scanf("%d",&);
return a;
}

int controle()
{
int b;
printf("Entrez votre note au controle continu\n");
scanf("%d",&);
return b;
}

Dans le main:

a = evaluation();
b = controle();

Pour calcul faut forcement des pointeurs, on ne peut pas renvoyer deux valeurs. Et pour la dernière elle va bien.

dnob700
dnob700
Niveau 10
15 mai 2005 à 23:53:59

il y a plus simple.

Dans chacune de tes déclaration de fonctions

tu remplace int a par int &. Exemple :
void controle(int &)

ou encore
void resultat(int &, int &, int &)

par contre tu ne touche pas aux
int a;
int b;
int c;
int d;
int r;

C´est pas une méthode très propre mais je pense que ça devrait marcher.

MrGoTo
MrGoTo
Niveau 8
15 mai 2005 à 23:56:28

Faudrait peut-etre expliquer.

Dans ce cas là tu utilises des references qui correspond à un passage par pointeur à cela pret que tu traites les variables comme des variables, le pointeur est masqué en quelque sorte. Par contre c´est du C++.

grutt
grutt
Niveau 4
15 mai 2005 à 23:57:16

pour renvoyer 2 val tu peu aussi declarer une structure avant main
typedef struct {
int c;
int d;
}Mastruct;

et apres il utilise

Mastruct calcul(int a, int b, int c, int d)
{
Mastruct nomstruct;
nomstruct.c=a*0.6;
nomstruct.d=b*0.4;
return nomstruct;
}

grutt
grutt
Niveau 4
15 mai 2005 à 23:59:23

en meme temps c est vrai que le plus joli c est les pointeurs

gnooooome
gnooooome
Niveau 9
16 mai 2005 à 00:19:35

ok, je manie aps trop bien les pointeurs.
Je vais garder le code MrGoto et essayer calcul avec des pointeurs, si tu peux poster les lignes avec pointeurs ca me permettrait de vérifier.
En tt cas merci à tous.

MrGoTo
MrGoTo
Niveau 8
16 mai 2005 à 01:30:25

void calcul(int a, int b, int *c, int *d)
{
c=a*0.6;
d=b*0.4;
}

en mettant calcul(a, b, &, &) dans le main

ou alors

void calcul(int a, int b, int &, int &)
{
c=a*0.6;
d=b*0.4;
}

en laissant le main tel quel ( solution pour le C++)

gnooooome
gnooooome
Niveau 9
16 mai 2005 à 22:20:59

j´ai suivi ta première méthode mais il me dit erreur d´assignements dans la formule calcul, je vais essayer de voir

MrGoTo
MrGoTo
Niveau 8
16 mai 2005 à 23:19:22

Excuse moi j´ai fait un erreur effectivement.

void calcul(int a, int b, int *c, int *d)
{

  • c=a*0.6;
  • d=b*0.4;

}

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