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++] problème dans une fonction

tauruxbis
tauruxbis
Niveau 10
24 mai 2006 à 11:13:06

Voilà, alors je créai un programme qui donnait des nombres aléatoire suivant certaines condition, et pour ne pas avoir a refaire la condition a chaque fois, j´ai fait une fonction qui renvoie la valeur selon l´ancienne valeur :

int fonction(int r)
{
if (r==22)
{
r=100;
}
if (r==21)
{
r=75;
}
if (r==20)
{
r=50;
}
if (r==19)
{
r=25;
}
if (r==18)
{
r=10;
}
if (r==0 || r==1)
{
r=1;
}
if (r==2 || r==3)
{
r=2;
}
if (r==4 || r==5)
{
r=3;
}
if (r==6 || r==7)
{
r=4;
}
if (r==8 || r==9)
{
r=5;
}
if (r==10 || r==11)
{
r=6;
}
if (r==12 || r==13)
{
r=7;
}
if (r==14 || r==15)
{
r=8;
}
if (r==16 || r==17)
{
r=9;
}
cout << endl << a << " " << b << " " << r; //
je vérifie les valeurs de a , b et r a chaque fois que la boucle s´execute.
system("PAUSE");
return r;
}

fonction(a);
fonction(b);
fonction(c);
fonction(d);
fonction(e);
fonction(f);

et j´apelle la fonction de cette façon :
la valeur de a , b , c , d , e , f , ne change jamais, mais a la fin , j´affiche les valeurs, et elles sont toutes entre 0 et 22 (comme quand je les initialyse avant d´appeler la fonction) et la fonction n´a rien changer...

voila le programme en entier :

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

using namespace std;
int a;
int b;
int c;
int d;
int e;
int f;
int z;
int fonction(int r)
int main( void )
{
int r;
int total;
srand(time(NULL));
a=rand()%23;
b=rand()%23;
c=rand()%23;
d=rand()%23;
e=rand()%23;
f=rand()%23;
total=rand()%951;
total=total+50;
fonction(a);
fonction(b);
fonction(c);
fonction(d);
fonction(e);
fonction(f);
cout << endl << endl << "les nombres sont :" << endl << a << endl << b << endl << c << endl << d << endl << e << endl << f << endl;
system("PAUSE");
return 0;
}
int fonction(int r)
{
if (r==22)
{
r=100;
}
if (r==21)
{
r=75;
}
if (r==20)
{
r=50;
}
if (r==19)
{
r=25;
}
if (r==18)
{
r=10;
}
if (r==0 || r==1)
{
r=1;
}
if (r==2 || r==3)
{
r=2;
}
if (r==4 || r==5)
{
r=3;
}
if (r==6 || r==7)
{
r=4;
}
if (r==8 || r==9)
{
r=5;
}
if (r==10 || r==11)
{
r=6;
}
if (r==12 || r==13)
{
r=7;
}
if (r==14 || r==15)
{
r=8;
}
if (r==16 || r==17)
{
r=9;
}
cout << endl << a << " " << b << " " << r;
system("PAUSE");
return r;
}

voila merci !

(pour savoir, c´est pour avoir des nombres aléatoirement pour les chiffres dans "des chiffres et des lettres" , donc je veux 2 fois plus de chance pour les nombres de 1 à 9 (d´où les 2 possibilité de valeur) , et une valeur entre 50 et 1000 pour le total)

Fvirtman
Fvirtman
Niveau 10
24 mai 2006 à 11:17:27

Normal, tu traites une copie de r, et non r

prototypes simplement ta fonction ainsi :
int fonction(int& r)
au lieu de
int fonction(int r)

Fvirtman
Fvirtman
Niveau 10
24 mai 2006 à 11:20:29

void fonction(int& r)
{
int corr[] =
{1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,25,50,75,1
00};
r= corr[r];
}

tauruxbis
tauruxbis
Niveau 10
24 mai 2006 à 11:31:25

merci fvirtman :)

Altonfrere
Altonfrere
Niveau 10
24 mai 2006 à 13:07:02

juste une remarque, tu ferais mieux d´utiliser un switch plutôt qu´une série de if ... surtout dans un cas comme celui ci

je te montre le début :
switch(r)
{
case 0 :
case 1 : r = 1; break;

case 2 :
case 3 : r = 2; break;

etc ...

Altonfrere
Altonfrere
Niveau 10
24 mai 2006 à 13:07:42

(en dehors du tableau comme Fvirtman t´as montré)

Arnold38
Arnold38
Niveau 10
24 mai 2006 à 21:23:56

oui oui, c´est ce que je m´était dis , mais j´avais la flemme de tout réecrire quand je m´en suis apperçu ^^

tauruxbis
tauruxbis
Niveau 10
24 mai 2006 à 21:25:10

aaah, ça a utilisé le pseudo de mon frère a cause qu´il a mit "retenir mon mot de passe" !! c´est pas trop grave mais je tenais a le signaler :p

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