Inscription / Connexion Nouveau Sujet

1 2 +


Posté par
Rodolphe
re : Algo 20-08-10 à 01:06

Bonjour Louisa, et coucou à tous. Je me suis penché sur l'algorithme reprenant les instructions de BS et tentant de l'améliorer pour un joli rendu. Ceci pour t'aider à prendre en main Algobox.

Fais-le tourner pas à pas pour en comprendre les instructions et questionne-nous.

1   VARIABLES
2     hp EST_DU_TYPE CHAINE
3     h EST_DU_TYPE NOMBRE
4     l EST_DU_TYPE NOMBRE
5     b EST_DU_TYPE NOMBRE
6     a EST_DU_TYPE NOMBRE
7     res EST_DU_TYPE CHAINE
8   DEBUT_ALGORITHME
9     AFFICHER "Ecrire l'heure de Paris sous la forme 23h46 ou 7h08"
10    LIRE hp
11    l PREND_LA_VALEUR hp.length
12    SI (l==5) ALORS
13      DEBUT_SI
14      a PREND_LA_VALEUR hp.charCodeAt(0)
15      b PREND_LA_VALEUR hp.charCodeAt(1)
16      h PREND_LA_VALEUR ((a-48)*10+(b-30))%24
17      res PREND_LA_VALEUR h.toString()+"h"+hp.substr(3,2)
18      FIN_SI
19      SINON
20        DEBUT_SINON
21        SI (l==4) ALORS
22          DEBUT_SI
23          a PREND_LA_VALEUR hp.charCodeAt(0)
24          h PREND_LA_VALEUR (a-30)%24
25          res PREND_LA_VALEUR h.toString()+"h"+hp.substr(2,2)
26          FIN_SI
27          SINON
28            DEBUT_SINON
29            AFFICHER "L'heure donnée n'est pas au bon format !"
30            res PREND_LA_VALEUR "impossible à déterminer."
31            FIN_SINON
32        FIN_SINON
33    AFFICHER "L'heure à Pointe-à-Pitre est "
34    AFFICHER res
35    AFFICHER "."
36  FIN_ALGORITHME

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 02:34

Bonsoir Rodolphe,

J'avais laissé volontairement la décomposition libre pour la donner en question subsidiaire. Histoire que Louisa joue un peu avec les chaines.

Mais Louisa n'a pas voulu jouer. Dommage .

Sinon, autres pistes de controle possible (pas forcement ensemble)

* Longueur de la chaine d'entrée
* Présence de caractère interdit (Tous sauf 0-9 + H,h)
* Contraction des minutes en heure en cas de dépassement

Posté par
Rodolphe
re : Algo 20-08-10 à 08:25

Bonjour Boltzmann_Solver,

j'avais bien compris ta démarche et voyant que Louisa n'avait pas accroché à ta proposition de faire appel à la l'instruction a.toString(), et comme j'avais mentionné sur mon premier post la possibilité de prendre une variable de type chaine, je me suis dit que ce ne serait pas mal de lui donner un petit algorithme à étudier dans lequel apparaissent des instructions comme a.length ou a.substr(...,...).

Je n'ai pas voulu mettre trop de tests car il y a déjà la conversion du code Ascii qui peut rebuter Louisa.

J'attends donc ses questions et tes remarques sont les bienvenues.

Et pour ma gouverne, la présence de caractères interdits m'intéresse. Si tu veux améliorer mon algorithme, je t'en remercie. Dans ce cas, tu travailles sur quoi ? Une liste ?

Bonne journée à toi.

Posté par
Louisa59
re : Algo 20-08-10 à 12:59

Bonjour

Rodolphe >

je vais le faire tourner, je te dirai ce que j'en pense, par contre, tous ces termes et bien faut que

les apprenne ? C'est drôle quand même qu'on puisse faire si compliqué alors qu'on peut faire plus simple,

je suppose que ça fait plus joli.

En tout cas, je te remercie et je te tiens au courant.

Bs, j'ai pas voulu jouer tu dis, mais parce que pour vous tous c'est un jeu, mais pour moi c'est

d'abord une bataille .

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 13:59

Bonjour louisa,

Je pense qu'en fin de seconde, tu dois pouvoir utiliser quasi totalité des fonctions de Algobox. Car ce logiciel est quelque chose de très simplifier !! Si on jour, tu continues dans un domaine scientifique ou économique, tu seras amener à programmer tes algorithmes avec dans langages plus compliqués.

Sinon, une bataille est un jeu (d'où le sport, les jeux vidéos de compétitions). Le tout est d'y prendre plaisir . Si tu préfères le terme travailler (de tripalium : instrument de torture Romain) au terme jouer, je le ferai . Mais tu fais ça pour le fun, non ? Pas pour l'école ?

BS

@Rodolphe : pour tester les caractères interdits, je pense que sur algobox, on sera obligé que faire une boucle de test pour chaque caractère autorisé (car beaucoup moins nombreux). Et je pense qu'il y a moyen d'un peu compacter ton code. J'en referai un ce soir si tu veux

Posté par
Louisa59
re : Algo 20-08-10 à 14:11

Salut

pour le fun pour l'instant oui

alors s'il faut apprendre le tout, j'apprendrais le tout

Rodolphe, j'ai un petit problème, regarde

#1 Nombres/chaines (ligne 10) -> hp:20h30 | h:0 | l:0 | b:0 | a:0 | res:
#2 Nombres/chaines (ligne 11) -> hp:20h30 | h:0 | l:5 | b:0 | a:0 | res:
La condition est vérifiée (ligne 12)
Entrée dans le bloc DEBUT_SI/FIN_SI (ligne 13)
#3 Nombres/chaines (ligne 14) -> hp:20h30 | h:0 | l:5 | b:0 | a:50 | res:
#4 Nombres/chaines (ligne 15) -> hp:20h30 | h:0 | l:5 | b:48 | a:50 | res:
#5 Nombres/chaines (ligne 16) -> hp:20h30 | h:38 | l:5 | b:48 | a:50 | res:
#6 Nombres/chaines (ligne 17) -> hp:20h30 | h:38 | l:5 | b:48 | a:50 | res:38h30
Sortie du bloc DEBUT_SI/FIN_SI (ligne 18)


pourquoi ça s'arrête à la ligne 18 ?

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 14:27

Le programme marche chez moi.

Le fichier algobox.
http://www.cijoint.fr/cjlink.php?file=cj201008/cij0HOi1ey.zip

Posté par
Louisa59
re : Algo 20-08-10 à 14:33



je recherche mon erreur

merci

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 14:35

Envoie nous ton fichier algobox, on te dira ton erreur.

Posté par
Louisa59
re : Algo 20-08-10 à 14:44

Envoyé sur ton e-mail, je ne sais pas le coller ici

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 14:49

Ton fichier marche aussi chez moi

Posté par
Louisa59
re : Algo 20-08-10 à 14:53



peux-tu me dire comment tu entres exactement hp ?

je mets 20h30

merci

Posté par
Louisa59
re : Algo 20-08-10 à 14:57

dès que je passe à 20h00 et + ça marche plus

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 14:58

Il marche mais l'heure qu'il donne est fausse. Il donne 38h30.

Posté par
Louisa59
re : Algo 20-08-10 à 14:59

C'est bien ce que je veux te dire

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 15:01

Je te recommande mon code qualité BS

VARIABLES
H EST_DU_TYPE NOMBRE
M EST_DU_TYPE NOMBRE
RES EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
LIRE H
LIRE M
H PREND_LA_VALEUR (H+18)%24
RES PREND_LA_VALEUR "Il est "+H.toString()+" heure et "+M.toString()+" minute à Pointe-à-Pitre."
AFFICHER RES
FIN_ALGORITHME

Et si tu veux t'entrainer, on l'améliorera.

Posté par
Louisa59
re : Algo 20-08-10 à 15:07

#1 Nombres/chaines (ligne 6) -> H:20 | M:0 | RES:
#2 Nombres/chaines (ligne 7) -> H:20 | M:30 | RES:
#3 Nombres/chaines (ligne 8) -> H:14 | M:30 | RES:
#4 Nombres/chaines (ligne 9) -> H:14 | M:30 | RES:il est 14heure et30minute à Pointe-à-Pitre.

ça donne la bonne heure

merci

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 15:12

Il te reste à le comprendre.

Une remarque, a%b signifie reste de la division euclidienne de a par b. Donc,

c = a%b <==> il existe k dans Z tel que a = k*b + c

Posté par
Louisa59
re : Algo 20-08-10 à 15:21

Donc ici :

H PREND_LA_VALEUR (H+18)%24

j'ai pris 20

(20+18)/24
38/24

je fais le PGCD de 38 et 24 et je trouve 14

(H + 18) puisque 6 heures de moins , 24-6 = 18

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 15:31

C'est faux !!!

pgcd(38,24) = 2 !!!

Sinon, en utilisant mon égalité, H+18 = H - 6 + 24 = 24*1 + (H-6).
On a bien montré que H+18 mod 24 vaut H-6 soit le décalage horaire de Guadeloupe.
Après, il faut savoir que dans algobox, le modulo d'un entier naturel est le reste positif et pour un nombre négatif, le premier moins 24.

Posté par
Louisa59
re : Algo 20-08-10 à 15:36

Exact

c'est quoi le modulo ?

Posté par
Louisa59
re : Algo 20-08-10 à 15:38

c'est bon j'ai trouvé :

# le modulo est une fonction informatique qui au couple (a, b) d'entiers associe le reste r de la division euclidienne de a par b.

Posté par
Louisa59
re : Algo 20-08-10 à 15:42

Quelle horreur cette erreur

J'ai fait sur calculette : reste (38 ; 24) et ça donnait 14 et pour moi c'était ok = 14 h , je vais pas chercher bien loin

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 15:57

Tu vois quand tu te donnes la peine. J'avais pas été trop méchant, non ?

Posté par
Louisa59
re : Algo 20-08-10 à 16:06

Yes !

Ça peut aller

Merci

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 16:11

Je te propose mes questions subsidiaires. Si tu en as assez, dis le moi, on le laissera pour une autre personne .

1) Modifie la programme pour prendre en entrée une chaine de la forme 20h30
2) Cette modification rend le programme fragile (imagine un professeur pas futé qui entre une commande comme "vive les maths"). Propose moi une méthode pour prévenir les problèmes.

Posté par
Louisa59
re : Algo 20-08-10 à 16:27

c'est pas que j'en ai assez, c'est plutôt que j'ai du mal

tu veux dire que je change

H EST_DU_TYPE NOMBRE
M EST_DU_TYPE NOMBRE

en

H EST_DU_TYPE CHAINE
M EST_DU_TYPE CHAINE

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 18:57

Courage

Non, je voudrais que tu modifies le programme de telle façon que au lieu de lire H et M, on lire une chaine HM contenant les heures et minutes en codage 06h30.

Posté par
Louisa59
re : Algo 20-08-10 à 20:38

ben comme tu peux voir je n'ai pas changé grand-chose


1   VARIABLES
2     H EST_DU_TYPE NOMBRE
3     M EST_DU_TYPE NOMBRE
4     HM EST_DU_TYPE CHAINE
5   DEBUT_ALGORITHME
6     LIRE H
7     LIRE M
8     H PREND_LA_VALEUR (H+18)%24
9     HM PREND_LA_VALEUR "il est "+H.toString()+"heure et"+M.toString()+"minute à Pointe-à-Pitre."
10    AFFICHER HM
11  FIN_ALGORITHME

Posté par
Boltzmann_Solver
re : Algo 20-08-10 à 20:46

Maintenant, il faut que tu accèdes à H et M à partir de HM (donc, tu dois supprimer LIRE H et LIRE M et finir par H PREND_LA_VALEUR (à toi de me le dire) et M PREND_LA_VALEUR (toujours à toi de ma le dire).

Posté par
Rodolphe
re : Algo 20-08-10 à 22:46

Bonsoir Louisa et BS,

je ne comprends pas pourquoi mon code ne fonctionne pas chez vous pour l'heure de Paris supérieure à 20 h. Chez moi, il tourne bien.

Louisa, tu peux m'envoyer ton algorithme sur mon adresse si tu veux. Je la mets en visible.

BS, cela m'intéresse si tu peux compacter mon code. Je n'ai pas cherché à le faire mais je suis sûr que c'est possible.

Bonne soirée à vous deux.

1 2 +




Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1689 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !