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

Random en c

dnob700
dnob700
Niveau 10
26 juin 2005 à 23:22:44

srand(time(NULL));
tu doit le mettre au début de la fonction main, et pas au début de ton programme, car c´est un appel de fonction, il ne peut pas s´exécuter n´importe où.

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 23:31:04

Il doit inclure time.h aussi non ?

dnob700
dnob700
Niveau 10
26 juin 2005 à 23:42:13

peut-être, j´ai pas fait gaffe à ça.

gnooooome
gnooooome
Niveau 9
26 juin 2005 à 23:45:49

j´avais anticipé les deux, mais il me renvoit toujours le meme chiffre lol.
Moi qui pensait que ca me prendrait 20 minutes pour faire ca.

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 00:42:47

Maintenant que j´arrive à tirer un dé je voudrais en tirer deux.
Jusqu´à là tout va bien, je défini b qui fera comme a.
Mais ce qui m´intéresse c´est la somme des deux dés.
Le programme suivant essaie de calculer la somme de deux dés a et b.
A priori il n´est pas bon, il donne des chiffres ahurissant lol.
Je pense que je vais devoir utiliser les pointeurs, si qq peut m´éclairer...
Merci d´avance

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

void lancer(a, b)
{
a=rand() % 10+1;
b=rand() % 10+1;
}

void somme(a, b, r)
{
r=a+b;
printf("%d",r);
printf("\n");
}

int main()
{
int a;
int b;
int r;
srand(time(NULL));
lancer(a, b);
somme(a, b, r);
return(0);
}

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 00:47:20

Déjà, a, b et r ne sont pas définis dans lancer(a,b) et somme(a,b,r) puisque déclarés dans main() donc tu dois les déclarer en tant que variables globales.

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 00:52:26

tu veux dire quoi par défnir en variable global?

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 01:03:23

Variables globales c´est variables visibles par tout le programme.
Comme tu as défini tes variables, une fois sorti de main(), elles n´existent plus, et ne sont plus visibles par les autres fonctions, ce qui entraîne une ou des erreurs.

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 01:46:04

Ah ok, je pensais qu´une variable est locale quand je la définie dans une fonction et globale quand je la defini dans le main.

Il faut que je fasse quoi comme chang

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 01:46:04

Ah ok, je pensais qu´une variable est locale quand je la définie dans une fonction et globale quand je la defini dans le main.

Il faut que je fasse quoi comme changement alors?

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 02:12:19

Je te mets un exemple :

  1. include < ….h>

int a; / /variable globale

type_de_retour function(paramètre)
{
int b; / / variable locale pour function(paramètre)

}

int main(void)
{
int c; / / variable locale pour main()

}

dnob700
dnob700
Niveau 10
27 juin 2005 à 02:20:30

solution facile :

dans le programme que tu nous a donnée à 00:42:47 tu remplace

void lancer(a, b)
et
void somme(a, b, r)

par :
void lancer(int &,int &)
et
void somme(int &,int &,int &)

bon déjà il faut donnée des types au variable, mais surtout, là, avec les & tu dit de passer les variables par référence plutot que par valeur et donc elle seront bien modifié là où tu veux.

MrGoTo
MrGoTo
Niveau 8
27 juin 2005 à 04:55:41

Ou plus simplement.

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

int lancer()
{
return ( rand() % 10+1);
}

void somme(int a, int b)
{
return ( a + b);
}

int main()
{
int a, b;
srand(time(NULL));
a=lancer();
b=lancer():
printf("%d\n", somme(a, b));
return(0);
}

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 12:00:04

j´ai essayé la solution de dnob700 et j´ai pas mal d´erreurs:

perception.c:6: error: parse error before ´&´ token
perception.c: In function `lancer´:
perception.c:8: error: `a´ undeclared ( first use in this function)
perception.c:8: error: ( Each undeclared identifier is reported only once
perception.c:8: error: for each function it appears in.)
perception.c:9: error: `b´ undeclared ( first use in this function)
perception.c: At top level:
perception.c:19: error: parse error before ´&´ token
perception.c: In function `somme´:
perception.c:21: error: `r´ undeclared ( first use in this function)
perception.c:21: error: `a´ undeclared ( first use in this function)
perception.c:21: error: `b´ undeclared ( first use in this function)

novembre
novembre
Niveau 18
27 juin 2005 à 12:17:16

void somme(int a, int b)
{
return ( a + b);
}

void ?
Moi je dirais plus int.

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 12:17:37

Ecris ton code, je pense savoir d´où vient l´erreur mais je préfère vérifier :)

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 12:18:09

Bien vu novembre ^^

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 12:39:26
  1. include < stdio.h>
  2. include < stdlib.h>
  3. include < time.h>

int lancer(int &, int &)
{
a=rand() % 10+1;
b=rand() % 10+1;
return(0);
}

int somme(int &, int &, int &)
{
r=a+b;
printf("%d",r);
printf("\n");
return(0);
}

int main()
{
int a;
int b;
int r;
srand(time(NULL));
lancer(a, b);
somme(a, b, r);
return(0);
}

gnooooome
gnooooome
Niveau 9
27 juin 2005 à 12:40:57

ah voilà les erreurs affichés :D

perception.c:5: error: parse error before ´&´ token
perception.c: In function `lancer´:
perception.c:7: error: `a´ undeclared ( first use in this function)
perception.c:7: error: ( Each undeclared identifier is reported only once
perception.c:7: error: for each function it appears in.)
perception.c:8: error: `b´ undeclared ( first use in this function)
perception.c: At top level:
perception.c:19: error: parse error before ´&´ token
perception.c: In function `somme´:
perception.c:21: error: `r´ undeclared ( first use in this function)
perception.c:21: error: `a´ undeclared ( first use in this function)
perception.c:21: error: `b´ undeclared ( first use in this function)

MrGoTo
MrGoTo
Niveau 8
27 juin 2005 à 12:56:21

Oui int pardon ( le copier coller c´est mauvais très mauvais).

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