Algorithmie

Fermé
bernardgent - 13 déc. 2009 à 17:07
vladivostok Messages postés 228 Date d'inscription samedi 6 septembre 2008 Statut Membre Dernière intervention 8 février 2010 - 13 déc. 2009 à 21:34
Bonjour,

j'ai un devoir de programmation a faire qui concerne le lancer de boule de pétanque.
Voici l'intitulé : "Ce programme servira pour la simulation de lancer de boules de pétanque. Les boules auront une masse m=0.7kg, le cochonnet sera à une distance entre 5 et 7m. Chaque joueur lancera 5 boules.
Le comportement du programme attendu est le suivant :
-Saisir les noms des joueurs
-Déterminer la position du cochonnet en utilisant la fonction HASARD()
-Pour le joueur courant, saisir l'angle de lancer et la vitesse
-Calculer la position d'arrivée sachant que x(t)=Vo*cos(a)*t
-Mémoriser cette distance ainsi que la hauteur max = -mg*t²+ Vo*sin(a)*t"

Donc voici comment j'ai commencé:
Déclaration des variables ; n=chaîne de caractères

Début
Répéter
Afficher "Saisir un nom"
Saisir n
Si (n=/ chaine de caractères) alors
Afficher "Veuillez saisir un nom"
Fin si
Tant que (n=chaine de caractère)


Donc ca c'est juste pour saisir les noms mais je dois utiliser des tableaux pour stocker les données mais je vois pas comment ... :/
Un petit peu d'aide serait sympa :D

merci

3 réponses

vladivostok Messages postés 228 Date d'inscription samedi 6 septembre 2008 Statut Membre Dernière intervention 8 février 2010 20
13 déc. 2009 à 17:12
je n'est pas trop bien compris il faut que tu fasse du pseudo-code ou alors il faut que tu écrive tout dans un langage bien précis et que pour le moment tu ne fait que le schéma de ton application ?
0
vladivostok Messages postés 228 Date d'inscription samedi 6 septembre 2008 Statut Membre Dernière intervention 8 février 2010 20
13 déc. 2009 à 17:52
Déjà avant tout définit les constantes c'est a dire la masse de la boule la distance maximum et minimum du cochonnet par rapport au lanceur. (on va dire Masse MAX MIN

ensuite initialise trois tableaux avec dans un le nom des joueur dans un autre la hauteur max de chaque joueurs et dans le troisième pour la distance.

Il ne faut pas oublier non plus que c'est de la 3D car les boules ne se déplace pas en ligne droit mais si l'énonce ne dit rien dessus.

Ensuite tu définit une variable cochonnet par exemple avec la valeur que t'a retourner la fonction HASARD()

la fonction HASARD() quand a elle peut s'écrire peu être sous la forme de :

(rand() % (MAX - MIN + 1)) + MIN

ce qui te permettra d'avoir un nombre au hasard comprit entre tes deux constante.

Ensuite je ne sait pas comme les variables que tu utilise (angles et force) sont définit (au hasard ou par l'utilisateur) mais après c'est simple tu fait ...

le 1er calcul et tu enregistre le résultat dans une variable que tu as définit et initialiser avant.
cette variable va venir se stocker dans le tableau qui correspond par exemple au hauteur max.

si les joueurs tire toute leur boule chacun leur tour tu fait nombre de boule = nombre de valeur qu'a un joueur dans le tableau hors il tire toutes ces boules d'un coup donc les valeurs de se joueur sont les une a coté des autres donc les 3 première valeurs du tableau (s'il y a 3 boules (c'est le cas en générale sauf s'il s'agit de triplette)) correspond au premier joueurs les 3 suivantes au deuxième joueur etc...

Voila très vite fait ce qu'il faut faire si tu as des question pose les.
0
donc j'ai déclarer les constantes. Pour les variables, les tableaux je les déclare comme ceci ?
T1 (1;10) tableau de chaines de caractères // tableau pour le nom des joueurs
T2 (?;?) tableau de réels // tableau pour la hauteur
T3 (?;?) Tableau de réels // tableau pour la distance
je ne vois pas ce qu'il faut mettre à la place des "?" , une variable prédéfinie? du genre T2 (0;nh) avec nh=7m?
pour le cochonet j'ai fait cochonet=HASARD(5;7)

je ne comprend pas très bien quand tu dis "tu enregistre le résultat dans une variable que tu as définit et initialiser avant. cette variable va venir se stocker dans le tableau qui correspond" comment faut-il écrire pour que le résultat se mette dans le tableau ?
0
vladivostok Messages postés 228 Date d'inscription samedi 6 septembre 2008 Statut Membre Dernière intervention 8 février 2010 20
13 déc. 2009 à 21:34
Pour tout te dire je n'est absolument jamais fait d'algorithmique, c'est juste de la logique après je ne sait pas comment il faut l'écrire.

Je ne suis qu'en terminal.

Tout ce que je sait c'est que pour faire cela le mieux serait d'utiliser des tableau dynamique avec n nombre de tableau pour n personne.

ainsi la premiére case serait le nom de cette personne, la deuxième sont prénom et après tout les case impair ce serai la hauteur max atteint lors du lancé et les case paire les longueurs max du même lance ainsi pour chaque lance par exemple le lance n°56
Il te suffirait de faire 56*2 pour tomber sur la premier case qui définit le lancé et après faire 56*2+1 afin de tomber sur la deuxième case du lancé...

Soit en fait un tableau écrit comme suit.

case 0 : nom
case 1 : prenom
case 2 (pair) : longueur du lancé 1
case 3 (impair) : hauteur du lancé 1
....
case n (pair) : longueur du lancé n/2
case n+1 (impair) : hauteur du lancé n/2
....

Ainsi tu peut savoir plus précisément quelle personne a fait quel hauteur et quel distance a tel ou tel tire.

Après non ta fonction HASARD ne prend aucun paramètre vu qu'il s'agit de constante et que tu les déclare tout au début de ton code (pseudo-code)
il te suffit donc d'écrire :

$cochonnet=HASARD();

Bien que théoriquement les fonction s'écrive en minuscule.
En fait s'il y a une notation précise pour écrire les variables ou non car la j'utilise un peu de tout comme code (ici du php) après tu me le dit comment il faut les déclarer ou les écrire et je changerai.

Donc voilà pour les tableaux.
Ensuite :
Il faut savoir comment on détermine l'angle et la force (si c'est aléatoire ou s'il faut le faire marquer à l'utilisateur)

donc en fait tu peut faire en quelque sorte :

coup n pour monsieur X

il tire avec V0 la vitesse initiale et avec un angle de w°
Donc d'après la formule au dessus :

/* je met mes commentaire comme cela */
/* on initialise une variable qui va nous servir a écrire la valeur du résultat dans le tableau */
$val_Result = $Vo * cos($w) * $t /* je ne sait pas ce qu'est t alors je le laisse tel quel */
/* on inscrit la valeur dans le tableau grâce à la formule*/
$case = $coup*2;
/* On a la case et le tableau donc on met la valeur que l'on a trouver au dessus a l'endroit ou il faut */
/* même démarche pour les autre caclul */
$val_Result = 0 - $m * $g * $t * $t + $Vo * sin($w) * $t"
/* Avant de faire le calcul il faut aussi définir la constant de gravité au même endroit que les autre constantes c'est a dire au début du code */
$g = 9.68;
/* Après on calcul la case ou il faut le mettre c'est a dire */
$case = $coup * 2 + 1;
/* Et on recommence ... */


Le mieux serait aussi de faire en sorte que chaque nom de personne corresponde à un chiffre un peu comme la fonction enum en C++
ainsi il te suffirait pour changer de personnage d'ajouter un a une variable a chaque fois.
et de vérifier a chaque fois si le modulo de se nombre n'est pas 0

En fait le joueur serai celui qui correspond au n° qui ressort du calcul :

$i=0; /* tout au debut du code mais pas une constante */

et chaque fois que l'on change de personnage
$personnage = $i % $Le_Nombre_De_Personne;

en exemple avec une sorte de tableau associatif :
array{
[0] => jean
[1] => joe
[2] => toto
[3] => tata
}
ainsi le joueur qui jouera sera :
$i = 75; (pour l'exemple)

$personnage = 75 % 4;
$personnage = 3;
donc le joueur qui joue est celui qui correspond au numéro 3 soit tata.

une fois qu'il a jouer
$i++;
donc $i = 76
$personnage = 76 % 4;
$personnage = 0;

Le joueur qui joue est jean ... etc ...

Voilà c'est tout ce que je pourrait te proposer, car ne connaissant pas l'algorithmique je ne sait pas comment il faut écrire ces démarche, par contre si il te faut du code C++ php C ou même batch je saurait de le faire comme il faut.

Tout sa pour dire que j'ai donner les idées peu être les démarche a suivre mais je ne sait pas l'écrire sous la forme d'un algorithme dans le pseudo langage que tu utilise.

En tout cas bonne chance et tien moi au courant STP.
Sinon c'est pour quand car sinon sa me tente de l'essayer en C++ je te passe le code après, car pour le moment le php, mysql, (x)html, css et REGEXP sa devient un peu soulant et prise de tête alors sa me changera, en plus j'aime bien les tableau dynamique c'est super facile a programmer.

allez bonne soirée.
0