Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Algorithmique]- Exercices méga cools!

10 mars 2008 à 13:15:15

Bonjour,

Je sollicite votre aide parce que, l'algorithmique c'est sympa, mais c'est moins cool que des choses comme la vie, ou le C (bien que je sois pas une machine de guerre non plus). En un mot, l'algo ça m'em....e!

Je n'ai pas pour autant envie de me foutre de votre gueule et vous demander de me faire tout tout cuit, ceci étant dit, je vous expose mes problèmes avec les résolutions que j'ai tenté d'aborder. J'aimerais par conséquent les corrections qui pourraient être nécessaire au bon fonctionnement de mon algo (ça va de soi que ceux qui n'ont pas envie de m'aider, ne le font pas... :-° ).

Merci par avance.

Exercice 1:

L'utilisateur saisit sa taille, son poids, et indique s'il est de sexe masculin ou féminin.
Suite à cette saisie, son poids idéal s'affiche (c'est-à-dire le poids qu'il devrait idéalement faire), ainsi qu'un message lui indiquant si son poids actuel est correct, s'il est trop léger ou trop lourd.
Enfin, un message indique à l'utilisateur combien de kilos il doit prendre pour atteindre son poids idéal.

Note:
Le poids idéal se calcule à l'aide de la formule de Lorenz:
Poids idéal= (taille en cm - 100) - (taille en cm - 150)/coeff* (le coeff est de 4 pour l'homme, et 2,5 pour la femme)
Pour estimer qu'une personne est trop légère, trop lourde ou de poids normal, on calcule son indice de Masse Corporelle (noté) IMC à l'aide de la formule suivante:
IMC=poids/taille^2
L'OMS estime que le poids d'une personne est normal si son IMC est compris entre 18,5 et 25.
Le poids calculé à l'aide de la formule de Lorenz correspond à un IMC de 21,5.


Mon "ébauche" de solution:

DEBUT
AFFICHER ("Combien mesurez vous?")
SAISIR (taille)
AFFICHER ("Combien pesez vous?")
SAISIR (poids)
AFFICHER ("Quel est votre sexe, homme ou femme? Tapez h pour homme ou f pour femme.")
poids idéal<- poidsIdéal= (taille - 100) - (taille - 150)/coeff
SI taper h
ALORS coeff<-4
SiNON coeff<-2,5
IMC<-poids/taille^2
SI IMC>=18,5 et =<25
ALORS AFFICHER ("Votre poids et correct")
SINON AFFICHER ("Votre poids n'est pas normal")
TANT QUE poids =/ poidsIdéal
AFFICHER ("Vous devriez prendre kilos")
SINON AFFICHER ("Vous devriez prendre kilos")
FIN


Exercice 2:
L'utilisateur saisit un texte sans mettre de majuscule au début des phrases, et sans mettre d'espace après le point se trouvant à la fin des phrases, puis il valide sa saisie.

Le programme de mise en forme de texte réaffiche le texte saisi en ayant remplacé les minuscules par des majuscules au début des phrases, et en ayant rajouté un espace après le point se trouvant à la fin de chaque phrase.


Mon "ébauche de rêve":

Aucune idée, je suppose, qu'il faut utiliser le fait que les majuscules se situent après les points. Et qu'après les points il faut faire un espace systématiquement. Des pistes?


Bon, étant donné que je suis disposé à vraiment comprendre, adapter et corriger (et pas régurgiter les solutions que vous me donnerez), aidez moi. Merci.
  • Partager sur Facebook
  • Partager sur Twitter
10 mars 2008 à 14:00:38

Tu veux des algorithmes "rédigé" comme ce que tu as fait ou tu veux aussi des solution "programmée" (des bouts de code quoi) et si oui lequel ? C ?

Apparemment tu bug plutôt sur le 2e et tu voudrais juste des avis sur le premier c'est ça ?
Au passage il y a quelques incohérences dans le premier comme l'initialisation du coeff après celui du poids idéal dans lequel tu utilises le coeff... Et puis la fin n'est pas correcte puisqu'elle ne calcule pas le poids idéal. Enfin c'est pas vraiment ce que je veux dire mais je dois y aller.

Je repasserais ce soir ;)
  • Partager sur Facebook
  • Partager sur Twitter
10 mars 2008 à 14:16:22

Je préfèrerais du rédigé effectivement, cela étant, si on m'explique précisemment qu'à telle ligne il y a telle erreur, j'apporterais ma version modifié.

A ce soir alors!
  • Partager sur Facebook
  • Partager sur Twitter
10 mars 2008 à 18:04:39

L'exercice 1 est facilement réalisable ... fais des essais aprés chaque fonction crées...

Pour le 2ème dans la bibliothèque fournie avec le C, tu dois avoir une fonction qui doit te permettre de déterminer où se trouve le point (.) dans ta phrase, si il n'y a qu'une phrase c'est encore plus simple ce sera le dernier caractère il te reste ensuite à tester ce qui se trouve à l'index point final -1 (le dernier caractère avant le point) tu dois aussi avoir une fonction C pour ça...

Pour mettre en majuscule c'est la même chose il y a des fonction pour ça...

Si tu ne souhaite pas utiliser les fonctions toutes faites tu peux les écrire:
1- trouver l'index de "." :
tu teste toute les lettres de la phrase dans une boucle... et tu renvoie l'index de "."

2- il te reste plus qu'a tester ce qu'il y a à l'index du "." -1

3-là tu utilise une fonction de C ou tu en crée une qui ajoutera l'espace si il n'y est pas

4-pour la phrase en majuscule tu peux sans les fonctions de C utiliser deux tableau: 1 avec tout les caractères en minuscules et l'autre tous les caractères majuscules puis dans une boucle(se sera un peu compliqué, mais faisable) tu remplace chaque caractère trouvé dans la phrase de tableau 1 par celui du le tableau 2( les index dans les tableau étant les mêmes ça devrait aller...)

Sans les fonction de C tu va te faire C.... ! mais bon si tu est courageux... ;)


  • Partager sur Facebook
  • Partager sur Twitter
12 mars 2008 à 14:30:55

Bonjour,

Tout d'abord merci pour vos réponses. Cela étant, je suis un peu perdu. Dans l'exercice 1, qu'est ce qui concrètement ne va pas? Montrez moi si possible les bouts d'algorithme qui foirent, ou qui manquent (cela s'appliquerait à l'exercice 2 d'ailleurs)

Pour l'exercice 2, le but du jeu est de créer un espace après un point. Et également transformer un caractère (après un point) en majusucle, comment tout ça se traduit en langage algorithmique? J'imagine qu'il y a un booléen style ET, mais après...


kayzra, merci mais, ce n'est pas pour transposer sur du C, je n'ai donc pas de fonctions pour simplifier, je dois raisonner en langage algorithmique simple.

  • Partager sur Facebook
  • Partager sur Twitter
13 mars 2008 à 13:01:21

Je t'expliquerais pour le 1 ce soir mais sur quel langage veux-tu appliquer ces algorithmes ? Parce que cela change (légèrement) ma façon de penser si par exemple c'était du C.
  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2008 à 21:21:09

Ce ne serait pas pour appliquer sur des langages (sauf si l'algorithmique est considérée comme un langage)
  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2008 à 22:26:23

Bonjour cher Batard.

Voici ce que j'en pense, tu m'excuseras si ma syntaxe n'est pas correcte, en tout cas les idées y sont.

Exercice #1 :

Citation : Juanbatard

DEBUT
AFFICHER ("Combien mesurez vous?")
SAISIR (taille)
AFFICHER ("Combien pesez vous?")
SAISIR (poids)
AFFICHER ("Quel est votre sexe, homme ou femme? Tapez h pour homme ou f pour femme.")



Jusque là, pas de soucis... Mais ensuite, enchaîne direct sur le choix du coeff avant de faire les calculs :

Citation : Juanbatard

SI taper h
ALORS coeff<-4
SiNON coeff<-2,5



Là, tu peux calculer le poid idéal, l'IMC, puis afficher les valeurs :

Citation : Juanbatard modifié par Bullrush

poids idéal<- poidsIdéal= (taille - 100) - (taille - 150)/coeff
IMC<-poids/taille^2
AFFICHER poidsIdéal
SI IMC <= 18,5 AFFICHER "Vous devriez prendre du poids"
OU SI IMC >= 25 AFFICHER "Vous devriez perdre du poinds"
SINON AFFICHER "Vous avez un poids correct"



Ensuite, le calcul de ce qu'il doit gagner / perdre pour atteindre le poids idéal, avec une petite astuce pratique :

Citation : Bullrush


SI poidsIdéal = poids AFFICHER "Votre poids est déjà idéal."

SINON {
différence <- poidsIdéal - poids
SI différence <= 0 AFFICHER "Vous devez perdre +différence+ kilos."
SI différence => 0 AFFICHER "Vous devez prendre +différence+ kilos."
}



Exercice #2 :

L'idée ici est de parcourir la chaine de caractères, caractère par caractère, et construire la chaine "propre" à la volée :

Citation : Bullrush

DEBUT
SAISIR (chaine)

nouvelleChaine <- "" // chaine vide
pointeur <- 1 // le pointeur qui va parcourir la chaine "chaine"
marqueur <- 'vrai' // le marqueur, pour savoir si on doit mettre en majuscule la lettre suivante, ici je commence par "vrai" pour mettre la première lettre en majuscule.

TANT QUE pointeur <= longueur de chaine {
{

SI marqueur = 'vrai' // on a eu un point juste avant, il faut donc une majuscule
{
ajout <- MAJUSCULE DE ( caractere en position 'pointeur' dans la chaine 'chaine' ) // on mets en majuscule la lettre en position 'pointeur'
marqueur = 'faux' // et on remet le marqueur sur faux
}
SINON
ajout <- caractere en position 'pointeur' dans la chaine 'chaine' // on laisse la lettre telle quelle


SI caractere en position 'pointeur' de la chaine 'chaine' == '.' // si le caractère est un point
{
ajout <- ". " // on définit ajout comme point + espace
marqueur = 'vrai' // on lui indique qu'il faudra mettre la prochaine en majuscule (au prochain tour de la boucle TANT QUE
}


nouvelleChaine <- nouvelleChaine + ajout // on concatène "ajout" à la fin de la nouvelle chaine
position <- position + 1 // incrémentation de la position du pointeur dans la chaine de caractères


} // fin du TANT QUE

AFFICHER nouvelleChaine
FIN



En tout cas, tu abuses. Tu peux finir des Rubik's en moins de 20 secondes et tu n'arrives pas à faire des algos tout simples comme ceux-là... tu mériterais la fessée. Néanmoins, j'espère que ça t'aidera.
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2008 à 11:24:08

escuse moi loin de moi l'idée de dire que c'est faux mais si tu dit:

Citation : Bullrush

SI poidsIdéal = poids AFFICHER "Votre poids est déjà idéal."

SINON {
différence <- poidsIdéal - poids
SI différence <= 0 AFFICHER "Vous devez perdre +différence+ kilos."
SI différence => 0 AFFICHER "Vous devez prendre +différence+ kilos."
}



alors dans le cas ou la différence est inférieur a 0 cela affichera par exemple:"vous devez perdre -15 kilos." il faut le dire dans un algo?
j'ai un gros doute tout d'un coup mais bon si j'ai faux je me coucherai moins con ce soir.
  • Partager sur Facebook
  • Partager sur Twitter
11 avril 2024 à 17:37:25

ecrire un algo qui permet de lire la taille et le poid d'une personne, le programme calcul l'indice de la masse corporelle de la personne si IMC<13 le programme affiche il est mal nourit si IMC est  entre 13 et 23, la personne est normal si IMC est entre 24 et 25  obèse de niveau 1 sinon c'est l'obesité
  • Partager sur Facebook
  • Partager sur Twitter
11 avril 2024 à 17:47:16

Bonjour,

Merci pour ta question et pour avoir déterré un sujet vieux de 2008.

Sais-tu comment calculer lindice IMC?

Comment le ferais-tu à la main?

À l'avenir, postes ton propre sujet.

  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

11 avril 2024 à 18:21:40

@GlodyKalandula Bonsoir, merci de ne pas squatter le sujet des autres, créer votre propre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter