Forum Liberty Basic France

Le 29/05/2015 à 13h40

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
Bonjour ici , j'ai fais un programme qui sélectionne aléatoirement 2 nombres et en propose leur somme ( addition ), différence ( soustraction ), quotient ( division) et produit ( multiplication)

il faut maintenant que je le modifie de manière a ce que le 1 er chiffre ne puisse être inférieur au second si vous pourriez m'expliquer comment faire



Le code JB :
Code VB :
 
Print " Programme qui propose 2 nombres aléatoires et en donne la  somme, différence, quotient et produit "
Print " __________________________________________________________________________________________________"
 
Print ""
 
 
ChiffreUn=int(100*(rnd(1)))
ChiffreDeux=int(100*(rnd(1)))
 
 
Print " Premier chiffre ";ChiffreUn
Print " Deuxième chiffre " ;ChiffreDeux
 
Print ""
 
'Calcul
Somme=ChiffreUn+ChiffreDeux
Soustraction=ChiffreUn-ChiffreDeux
Quotient=ChiffreUn/ChiffreDeux
Produit=ChiffreUn*ChiffreDeux
 
Print""
 
'Réponse

 
Print " Somme " ;Somme
Print " Soustraction " ;Soustraction
Print " Quotient " ;Quotient
Print " Produit " ;Produit
 
 




Edité par Tazdidix Le 29/05/2015 à 13h44
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   
Le 29/05/2015 à 14h55

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
Pour poster du code, il faut que tu mette: crochet ouvrant code=vb crochet fermant sur la ligne avant le code.
Et: crochet ouvrant /code crochet fermant, sur une ligne après le code

Si tu veux que ce soit toujours le plus petit qui soit soustrait au plus grand, tu peux faire de deux façons (entre autres)
Exemple: nombreUn = 100; nombreDeux = 30
Code VB :
 
if nombreUn > nombreDeux then
    résultat =  nombreUn - nombreDeux
else
    résultat =  nombreDeux - nombreUn
end if
 


Et tu peux les inverser en passant par une variable provisoire
Code VB :
 
varprov = nombreUn : nombreUn =  nombreDeux : nombreDeux = varprov
 


Pour que le premier chiffre ne puisse pas être inférieur au second, il faut que tu teste soit le premier par rapport au second, soit le second par rapport au premier; et si c'est pas bon, il faut en "tirer" un nouveau
Code VB :
 
nombreUN=int(100*(rnd(1)))
while nombreDeux >  nombreUN    
    nombreDeux=int(100*(rnd(1)))
wend
 

Mais s'il te sort "1" pour: nombreUN le prog ne s'arrête plus (il ne te reste plus qu'a faire "run" + "kill prog basic")
____________________
Roro

   
Le 29/05/2015 à 15h09

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
J'ai essayé ton dernier code

nombreUN=int(100*(rnd(1)))
while nombreDeux > nombreUN
nombreDeux=int(100*(rnd(1)))
wend


Malheureusement sois il me donne que le premier comme tu la mis mais si on met '' < '' au lieu de '' > '' il me donne les deux, mais sauf que le premier et inférieur et pas supérieur
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   
Le 29/05/2015 à 15h13

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
ChiffreDeux=int(100*(rnd(1)))
while ChiffreUn < ChiffreDeux
ChiffreUn=int(100*(rnd(1)))
wend

il fonctionne comme ça , merci Roland :)

vue que le premier doit être supérieur si dans le code il est pas en haut ça compte pas comme faux tant que ça affiche ce que veux le prof :p



Edité par Tazdidix Le 29/05/2015 à 15h28
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   
Le 29/05/2015 à 15h44

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
Le problème est le même; s'il te sort pour: ChiffreDeux le chiffre max du générateur (rnd)
Le prog ne s'arrête plus
Pour pallier, il faut que la variable qui vaut: 100 dans: ChiffreUn=int(100*(rnd(1))),
soit supérieure à celle de: ChiffreDeux=int(100*(rnd(1)))
____________________
Roro

   
Le 29/05/2015 à 15h51

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 516
Hello vous deux,

On peut aussi inverser les nombres juste après qu'ils aient étés tirés puis on fait les quatre opérations.

Tazdidix j'ai repris la trame de ton programme (Le chiffre est un seul pictogramme, qui va de 0 à 9, après c'est un nombre :top )

Petite question subsidiaire : que se passe-t-il si les deux nombres valent zéro ? Je te laisse deviner la petite modif à apporter pour éviter le plantage.

Code VB :
 
 
' sélection aléatoire des deux nombres
nombre1 = int(100*(rnd(1)))
nombre2 = int(100*(rnd(1)))
 
print "nombre 1 = ";nombre1
print "nombre 2 = ";nombre2
print
 
'si nombre1 est plus petit que nombre2 (c'est la situation qu'on ne veut pas)
'alors on intervertit nombre1 et nombre2
if nombre1 < nombre2 then
    print "inversion des nombres"
    ValProv = nombre1 '(Comme Roland, s'il ne m'en veut pas)
    nombre1 = nombre2
    nombre2 = ValProv '(et comme Roland aussi)
end if
 
'normalement ici nombre1 devrait être toujours supérieur (ou égal) à nombre2
'on le vérifie de visu :
print "nombre 1 (";nombre1;") > nombre 2 (";nombre2;") ?"
print
 
'il n'y a plus qu'à faire la série de calculs...
plus = nombre1 + nombre2
fois = nombre1 * nombre2
moins = nombre1 - nombre2
sur = nombre1 / nombre2
 
'et à afficher les résultats
print "Somme = ";plus
print "Produit = ";fois
print "Soustraction = ";moins
print "Division = ";sur
 
 
 


Je m'en retourne au code de cassiopee, une petite carabistouille de la vraie vie m'en ayant écarté quelques jours...

A+

(édité le code en ajoutant "print "inversion des nombres"", c'est plus clair à l'éxecution)



Edité par Christophe Le 29/05/2015 à 16h19
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 30/05/2015 à 14h48

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 516
bah alors quoi ? 3 messages arrivent pendant que je prépare ma réponse, je poste puis tout le monde s'en va ? Nan mais allo quoi !

Aurais-je fait comme ces gens qui nous privent du plaisir de regarder le film en nous racontant la fin ? et puis pour un débutant il est bon de réfléchir aussi sur une boucle while/wend. Hein, alors ?

A+

;)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 30/05/2015 à 15h56

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
Mais nan, on est pas partis.
Perso, j'ai données les réponses à: Tazdidix; il ne pose pas d'autres questions --> c'est bon pour moi, je retourne surveiller le mûrissement des cerises.

Tazdidix lui, est retourné mettre au propre son exo. Il ne devrait pas tarder à revenir avec deux ou trois questions à 2 Euros pièce.
Si y en a plus de trois, on lui fait le prix de gros..
____________________
Roro

   
Le 30/05/2015 à 22h45

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 516
Ouf ! J'ai eu peur de me retrouver seul^^

Et on attend Tazdidix, je serais effectivement curieux de savoir comment il a contourné les cas indésirables dans sa production, ou dans les nôtres. Ca n'a rien de sorcier, c'est juste un petit truc en plus, qui permet de mettre le doigt sur la nécessité de faire le tour des éventuels trucs qu'on aimerait bien ne pas voir se produire...

En attendant je pars surveiller les fraises :)
A+



Edité par Christophe Le 30/05/2015 à 22h46
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 30/05/2015 à 23h23

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
Citation:
Ouf ! J'ai eu peur de me retrouver seul^^

Moi vivant, tu ne sera jamais seul ici.
Enfin....Si la connexion ne part pas en sucette.
____________________
Roro

   
Le 01/06/2015 à 10h00

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
Désolé c'était le week end est je n'avais pas envie d'aller voir mon PC ce week , mais merci de vos réponse elles m'ont bien aidé ! :) et j'aurais d'autre questions encore ne t'en fais pas Roland :p
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   
Le 01/06/2015 à 10h25

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
Print " Programme qui propose 2 nombres aléatoires et en donne la somme, différence, quotient et produit le premier chiffre ne sera pas inférieur au deuxième "
Code VB :
 
Print " _______________________________________________________________________________________________________________________________________________________"
 
Print ""
 
ChiffreDeux=int(100*(rnd(1)))
while ChiffreUn < ChiffreDeux
    ChiffreUn=int(100*(rnd(1)))
wend
 
 
Print " Premier chiffre     :";ChiffreUn
Print " Deuxième chiffre    :" ;ChiffreDeux
 
Print ""
 
'Calcul
Somme=ChiffreUn+ChiffreDeux
Soustraction=ChiffreUn-ChiffreDeux
Quotient=ChiffreUn/ChiffreDeux
Produit=ChiffreUn*ChiffreDeux
 
Print""
 
'Réponse

 
Print " Somme               :" ;Somme
Print " Soustraction        :" ;Soustraction
Print " Quotient            :" ;Quotient
Print " Produit             :" ;Produit
 
 



Voilas comme j'ai pu refaire le programme grâce à Roland
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   
Le 01/06/2015 à 12h08

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
C'est bien, ça a l'air de marcher.
____________________
Roro

   
Le 01/06/2015 à 14h58

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 516
Bien vu pour la procédure de tirage au sort.

Cependant, sans vouloir jouer mon enquiquineur (quoi que, hein, si, si ! ) je suppose que la valeur tirée au sort peut valoir zéro.

si c'est ChiffreDeux qui vaut zéro, on ne trouvera jamais ChiffreUn

Zéro étant un nombre valable, il faudrait pouvoir le garder.

Si on garde zéro pour chiffreDeux on aura un soucis lors de la division Quotient=ChiffreUn/ChiffreDeux

Il reste donc encore un petit détail à revoir...

A+
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 01/06/2015 à 15h11

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
oui et non elle peut valoir zéro comme elle ne peut pas,en bref dans les explications que j'ai re4u pour ce programme elles ne sont pas très claires et donc si le programme ne peut afficher zéro le prof ne peut pas me refuser que le programme est quand même juste car c'est pas noté si les chiffres doivent aussi afficher zéro

j'espère que ta compris ce que je voulais dire par-là , moi me suis compris :lol :siffle
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   
Le 01/06/2015 à 15h46

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 516
je crois que j'ai compris ce que tu voulais dire, tu joue avec la floutitude (la flouesse ? la floutée ? bon, imprécision de l'énoncé)

A mon avis ton programme n'est pas compliqué à modifier pour tenir compte d'un tirage "zéro", tu devrais essayer malgré tout, ce serait plus satisfaisant pour toi, et ton code aurait plus de gueule vis à vis du prof, je pense.

Essaie ce bout de code, et tu trouvera des zéros dans le tirage
Code VB :
 
for a = 0 to 5000
    ChiffreUn=int(100*(rnd(1)))
    if ChiffreUn=0 then print "tour ";a;",  ChiffreUn = 0"
next
 


A+
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 01/06/2015 à 15h49

Libertynaute Débutant

Groupe: Membre

Inscrit le: 29/05/2015
Messages: 23
D'accord j'essayerais merci :)
____________________
Je ne sais pas quoi mettre comme signature donc je vous montre un mec qui lèvre les bras \o/

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie