Comment multiplier des variables en C ?

Fermé
lajolla - 18 déc. 2013 à 15:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 déc. 2013 à 19:23
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
Modifié par fiddy le 18/12/2013 à 16:07
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
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
Merci quand même pour votre code.
0
Utilisateur anonyme
18 déc. 2013 à 16:24
ok
0
up
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
18 déc. 2013 à 17:17
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
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 déc. 2013 à 16:20
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
19 déc. 2013 à 17:56
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 19/12/2013 à 18:44
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 jeudi 19 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
Modifié par WillyInfo le 19/12/2013 à 18:38
#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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
19 déc. 2013 à 18:31
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
19 déc. 2013 à 19:23
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
18 déc. 2013 à 15:55
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 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
18 déc. 2013 à 16:00
Et
v3
dans tout ça?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
18 déc. 2013 à 16:08
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
18 déc. 2013 à 16:16
dsl
calcul = (rand() % (v2 - v3)) * v1);

si car cela va choisir v2 ou v3 et "*" va le multiplier
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
18 déc. 2013 à 16:59
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
18 déc. 2013 à 17:13
J'aurais pas mieux dit :-)
0