Comment multiplier des variables en C ?

lajolla -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,
Je commence à peine le C (je ne sais donc casi rien) mais je fais quelques petits programmes or dans un d'eux j'aimerai savoir comment multiplier des variables entre elles au hasard.
Je m'expliqe : imaginer des variables V1 =1,V2 = 2,V3 = 3;
Comment multiplier V1 au hasard avec v2 ou v3
Si vous ne comprenez pas ,dites le moi
Merci Par avance
Lajolla
ps : Désolé pour les fautes d'Orthographes

5 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Tu tires un nombre au hasard :
    int nb;
    srand(time(NULL));
    nb=rand() % 2;


    Si nb vaut 0 alors tu multiplies par V2, sinon tu multiplies par V3.
    int resultat = V1;
    if (nb == 0) 
         resultat *= V2;
    else
         resultat *= V3;


    Ou en plus concis :
    int resultat = V1 * (nb == 0) ? V2 : V3



    Google is your friend
    1
  2. lajolla
     
    Merci de vos réponses mais aucune des deux ne résous mon problème je vais essayer d'être plus clair : j'éssaye de créer un programme pour vérifier ses tables de 0 à 10 et je voudrai que entre ces nombre 2 soient choisis au hasards et multipliés l'un par l'autre à partir de ça je sait faire mais je cherche ce morceau de code
    Comment faire pls ?

    Google is your friend
    0
    1. lajolla
       
      Merci quand même pour votre code.
      0
    2. Utilisateur anonyme
       
      ok
      0
    3. lajolla
       
      up
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Poste le code que tu as fait en tenant compte de mes remarques. N'oublie pas d'utiliser la balise "code" (bouton à droite du bouton souligné).

      J'ai l'impression que tu as changé ton énoncé..
      Donne plutôt un exemple détaillé de ce que tu souhaites faire.
      0
    5. lajolla
       
      Ben en fait , pour le moment j'ai pas grand chose :
      #include <stdio.h>
      #include <stdlib.h>

      int main()
      {
      int V1 = 1,V2 = 2,V3 = 3,V4 = 4,V5 = 5,V6 = 6,V7 = 7,V8 = 8,V9 = 9,V10 = 10,nb1 = 0,nb2 = 0,produit = 0,resultat = 0;

      /*le passage que je ne connais pas cad : on tire deux variable au hasard sachant que l'une deviendra nb1 et l'autre nb2 entre
      V1 et V10 ,elles sont multipliés l'une par l'autre et donnent un multiplication que l'ont affiche à l'utilisateur */

      produit = nb1 * nb2;
      printf("entrez le nombre que vous pensez juste : %d x %d = ",nb1,nb2);
      scanf("%d",&resultat);
      if (resultat == produit)
      {
      printf("Bravo,vous avez trouve le bon resultat !!!");
      }
      else
      {
      printf("Desole,vous vous etes trompe.Vous ferez mieux la prochaine fois !!!");
      }
      system("PAUSE");
      return 0;
      }

      comme dit plus haut je voudrai faire un testeur de table de multiplication :
      le programme choisi 2 des variables au hasard et les multiplie . L'utilisateur entre le resultat qui lui semble juste et si c'est juste le programme lui dit via un printf sinon il le lui dit aussi .
      0
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Je ne connais pas suffisamment le C pour te proposer une syntaxe qui compile.

    Mais sur le principe, le plus extensible serait de placer tes variables dans un tableau, puis d'utiliser RAND pour choisir quelle case du tableau va être utilisée.

    Xavier
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      C'est vrai.
      Mais ici, il n'y a même pas besoin de tableau puisque les valeurs se suivent. Il suffit de générer un nombre entre 0 et 10 (compris). Cf. mon précédent post (#15)
      0
    2. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Oui, enfin sauf que ne connaissant pas la finalité du truc, il est délicat de se prononcer sur ce à quoi ressemblera le programme au final. En utilisant un tableau on facilite l'adaptation future.
      Dans le fil de discussion, on est déjà passé de trois variables indéterminées à 10 variables séquentielles, autant donner une solution qui ne changera pas toutes les heures ;-)

      Bon, ceci étant dit, ton approche est au moins aussi juste que la mienne. Elle est plus rapide, plus directe et plus lisible. Mais je dois avoir un peu plus l'habitude de traiter avec des clients qui changent d'avis en cours de route ^^'
      0
  4. WillyInfo Messages postés 2 Statut Membre
     
    #include <stdio.h> 
    #include <stdlib.h>
    #include <time.h> 
    
    int main(int argc, char **argv)
    {
     int resultat_aleatoire=0;
    
     //3 variables
     int Tab[3] = {1,2,5};
    
     //init nbr aleatoire
     srand(time(NULL));
    
     resultat_aleatoire=Tab[rand()%sizeof(Tab)]*Tab[rand()%sizeof(Tab)];
     printf("Resultat =>%d\n",resultat_aleatoire);
     getchar();
     return 0;
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonjour WillyInfo,

      Quand tu postes un code, merci d'utiliser la balise "code" située à droite du bouton "souligné". C'est plus lisible.

      main => il manque les parenthèses.
      Le bon prototype de main() est : int main(void) ou int main(int argc, char **argv)

      resultat_aleatoire=Tab[rand()%3]*Tab[rand()%3];
      Plutôt que mettre 3, je te conseille de mettre sizeof Tab/sizeof *Tab. C'est plus maintenable.

      Et enfin, n'oublie pas le return 0; en fin de programme pour dire que tout s'est bien déroulé.
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Il a plus de gueule ton post :-). Mais c'est sizeof Tab/sizeof *Tab qu'il faut mettre. C'est pas / pour dire l'un ou l'autre mais c'est l'opérateur de division.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Essaye avec sa :
    calcul = (rand() % (v2 - v2)) * v1);

    ou regarder ici : http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c/les-calculs-de-base
    -1
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Et
      v3
      dans tout ça?
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      v2 - v2 = 0... Et puis ta commande ne répond pas à sa question. Cela ne multiplie pas par V2 ou V3 en fonction de rand()...
      0
    3. Utilisateur anonyme
       
      dsl
      calcul = (rand() % (v2 - v3)) * v1);

      si car cela va choisir v2 ou v3 et "*" va le multiplier
      0
    4. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Non ça va choisir un nombre au pif entre 0 et v2-v3, puis multiplier ça a v1, et c'est pas ce qu'il cherche non plus. Tu ferais mieux de finir de lire le tutoriel que tu lui a envoyé avant de dire n'importe quoi.
      0
    5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      J'aurais pas mieux dit :-)
      0