Comment multiplier des variables en C ?

lajolla -  
fiddy Messages postés 11069 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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
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
lajolla
 
Merci quand même pour votre code.
0
Utilisateur anonyme
 
ok
0
lajolla
 
up
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
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
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   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
WillyInfo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
#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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
Et
v3
dans tout ça?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Utilisateur anonyme
 
dsl
calcul = (rand() % (v2 - v3)) * v1);

si car cela va choisir v2 ou v3 et "*" va le multiplier
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
J'aurais pas mieux dit :-)
0