Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 10-11-2014 10:10:01
- MF
- Invité
[Algobox]Deux exercices et j'ai du mal...
Bonjour à tous,
J'ai deux exercices à réaliser avec Algobox, et j'ai du mal à comprendre. C'est la première fois que je touche à ce logiciel.
Si vous avez des pistes... Merci.
On note le nombre ABC, qui aura donc une valeur comprise entre 111 et 999, où A représente les centaines, B les dizaines et C les unités.
Trouvez A, B et C, tel que :
ABC = A3 + B3 + C3
par une méthode itérative, à savoir un test de toutes les valeurs
possibles pour A, B et C.
Ici A3 signifie A au cube, soit A x A x A, et le nombre ABC = A*100 + B*10 + C*1
Le programme affichera les bonnes solutions trouvées au fur et à mesure des itérations.
Ex., si A=2, B=5, C=3, ABC est le nombre 253, maintenant, celui-ci est il solution du problème 253=23+53+33 ? Mystère...:-)
Exo 2
l'alphabet par la nième lettre qui la suit dans l'ordre alphabétique. Par ex. pour une clé de chiffrement n=3, A est remplacé par D, B par E, etc... ainsi le sigle PHP deviendra SKS.
Dernière modification par yoshi (11-11-2014 11:28:21)
#2 10-11-2014 11:02:31
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 947
Re : [Algobox]Deux exercices et j'ai du mal...
Bonjour,
Déclarer 4 variables A, B, C, N comme NOMBRE (4 lignes)
Cliquer sur DEBUT ALGORITHME
Puis sur Nouvelle Ligne
Tu vas créer 3 boucles POUR
POUR A de 1 à 9
POUR B de 1 à 9
POUR C de 1 à 9
et tu vas calculer
N=100A+10B+C
Pour cela, choisir : AFFECTER VALEUR A UNE VARIABLE
Et tu choisis N et tu lui affectes la valeur A*100+B*10+C
Cela fait tu dois tester.
Donc clic sur Nouvelle Ligne
Choisir Ajouter SI ALORS
Et là ta condition est N==pow(A,3)+pow(B,3)+pow(C,3)
Double signe = (parce que c'est un test d'égalité)
Moi, je choisirais alors : Ajouter AFFICHER MESSAGE, le message étant : Solution : (un espace avant et après les deux ponts)
Puis Ajouter AFFICHER VARIABLE , tu choisis N et et coches la case pour retourner à la ligne.
Cela fait, tu choisis Tester Algorithme puis Lancer Algorithme.
Tu auras deux réponses.
Je regarde Cesar...
Ton énoncé est-il complet ? J'en doute un peu...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#3 10-11-2014 12:36:41
- MF
- Invité
Re : [Algobox]Deux exercices et j'ai du mal...
Bonjour Yoshi,
Merci de ton aide.
J'ai scrupuleusement respecté tes indications, mais l'algo se lance et se termine sans rien afficher.
#4 10-11-2014 13:07:34
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 947
Re : [Algobox]Deux exercices et j'ai du mal...
Bonjour,
Dommage !
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
C EST_DU_TYPE NOMBRE
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR A ALLANT_DE 1 A 9
DEBUT_POUR
POUR B ALLANT_DE 1 A 9
DEBUT_POUR
POUR C ALLANT_DE 1 A 9
DEBUT_POUR
N PREND_LA_VALEUR A*100+B*10+C
SI (pow(A,3)+pow(B,3)+pow(C,3)==N) ALORS
DEBUT_SI
AFFICHER "Solution : "
AFFICHER N
FIN_SI
FIN_POUR
FIN_POUR
FIN_POUR
FIN_ALGORITHME
Ce code fonctionne.
Concernant Cesar, ton énoncé est incomplet : il y manque au moins ce qu'on te demande de faire...
Avec AlgoBox, ça va pas être de la tarte...
Sais-tu ce qu'est le code ACSCII d'une lettre ?
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#5 10-11-2014 13:24:18
- MF
- Invité
Re : [Algobox]Deux exercices et j'ai du mal...
Merci Yoshi,
Concernant l'énoncé de l'exercice, le voici :
l'alphabet par la nième lettre qui la suit dans l'ordre alphabétique. Par ex. pour une clé de chiffrement n=3, A est remplacé par D, B par E, etc... ainsi le sigle PHP deviendra SKS.
Le recours aux tableaux peut être utile.
Voir le chiffre de César en ligne, et différentes techniques de chiffrage.
D'ailleurs, savez vous quel fût le premier chiffrement (Stéganographie)?
Les lettres de la phrase à chiffrer seront saisies l'une après l'autre, et sauvegarder dans un tableau.
#6 10-11-2014 13:54:35
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 947
Re : [Algobox]Deux exercices et j'ai du mal...
RE,
Les lettres de la phrase à chiffrer seront saisies l'une après l'autre, et sauvegardées dans un tableau.
Oui...
Sauf que AlgoBox est un langage simpliste et que les tableaux y sont des listes... et, sauf erreur (Aide pas claire), les listes ne peuvent contenir que des nombres !
Je cherche encore à vérifier ce que j'avance... parce que si j'essaie de stocker une lettre dans un tableau, j'ai un plantage à l'exécution...
Voilà ce que dit le manuel :
Les listes AlgoBox sont des listes numérotées de nombres.
Donc, celui qui a posé l'exercice doit programmer dans un autre langage et avoir supposé - sans vérifier - que c'était le cas avec AlgoBox...
On va contourner le problème.
Mais ce n'est pas trouvable par un novice en programmation.
@+
Dernière modification par yoshi (10-11-2014 14:11:29)
Arx Tarpeia Capitoli proxima...
Hors ligne
#8 10-11-2014 15:04:47
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 947
Re : [Algobox]Deux exercices et j'ai du mal...
Re,
Bin, y a rien de plus à expliquer...
La consigne ligne 7 dit :
Les lettres de la phrase à chiffrer seront saisies l'une après l'autre, et sauvegardées dans un tableau.
Mais le manuel AlgoBox (ici : http://www.xm1math.net/algobox/doc.html) dit, au point 3. Autres règles d'utilisation d'AlgoBox puis Opérations avec les listes,
Les listes AlgoBox sont des listes numérotées de nombres.
Donc je ne peux pas mettre une lettre dans une liste, seulement un nombre...
Preuve :
Déclarer Variable Tableau comme liste
Puis Début Algorithme
Et Affecter valeur à variable
Choisir Tableau prend valeur "A"
pour le rang 0.
C'est tout.
Et tu lances...
Messages d'erreur :
***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***
Si je sélectionne la ligne Tableau[0] prend la valeur "A", que je clique sur Modifier Ligne et que je remplace "A" par 65 (par ex), plus d'erreur !
Essaie !
Je propose de contourner la difficulté comme ça:
Je crée deux chaines une Texte_Clair qui contiendra le texte à coder et texte_code qui contiendra le message codé...
J'initialiserai la chaine Texte-code à vide --> ""
Tu dois savoir que chaque caractère dispose d'un code unique qui permet à une touche du clavier de ne pas envoyer un caractère alphanumérique, mais ce code à l'Unité Centrale de ton ordi, lequel retransformera ce code en un caractère... Voilà grosso-modo expliquée cette histoire de code..
Le code du A est 65, celui du Z est 90.
Supposons un décalage de 10 je passe du A(65) au 75 qui est le code de K...
Mais supposons que je parte de la lettre P (80) et que j'aie un décalage de 20 : 80+20, je dépasse 90...
Je dois donc retirer 26 (26 lettres) à 100 et je me retrouve à 74, code de J
Donc P--> J.
Dans ma phrase à coder, écrite en majuscules, je vais
- lire caractère après caractère
- trouver, avec la bonne instruction, son code
- ajouter le décalage à ce code
- tester si le résultat est > 90 et si oui enlever 26
- à partir du code modifié, avec la bonne instruction, retransformer le code en une lettre que je concaténerai à la suite des autres dans Texte_code.
A la fin je demanderai d'afficher le texte codé...
Pigé ?
@+
[EDIT] Code mis en place et testé : ça marche.
Dernière modification par yoshi (10-11-2014 15:47:43)
Arx Tarpeia Capitoli proxima...
Hors ligne
#9 16-11-2014 15:46:15
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 947
Re : [Algobox]Deux exercices et j'ai du mal...
Re,
Voilà le code un peu plus élaboré.
J'ai choisi un décalage de 10 : A --> K
Texte_Clair EST_DU_TYPE CHAINE
Texte_Code EST_DU_TYPE CHAINE
carac EST_DU_TYPE CHAINE
code EST_DU_TYPE NOMBRE
decale EST_DU_TYPE NOMBRE
long EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
Texte_Clair PREND_LA_VALEUR "JE SUIS FOU DU CHOCOLAT LANVIN DISAIT DALI DANS UNE PUB"
long PREND_LA_VALEUR Texte_Clair.length-1
decale PREND_LA_VALEUR 10
AFFICHER " -+ Codage selon Cesar +-"
AFFICHER "Phrase à coder : "
AFFICHER " "
AFFICHER "Phrase Codée : "
POUR i ALLANT_DE 0 A long
DEBUT_POUR
carac PREND_LA_VALEUR Texte_Clair.substr(i,1)
SI (carac==" ") ALORS
DEBUT_SI
Texte_Code PREND_LA_VALEUR Texte_Code+carac
SINON
DEBUT_SINON
code PREND_LA_VALEUR carac.charCodeAt(0)+decale
SI (code>90) ALORS
DEBUT_SI
code PREND_LA_VALEUR code-26
FIN_SI
Texte_Code PREND_LA_VALEUR Texte_Code+String.fromCharCode(code)
FIN_SINON
FIN_POUR
AFFICHER Texte_Code
FIN_ALGORITHME
-+ Codage selon Cesar +-
Phrase à coder : JE SUIS FOU DU CHOCOLAT LANVIN DISAIT DALI DANS UNE PUB
Phrase Codée : TO CESC PYE NE MRYMYVKD VKXFSX NSCKSD NKVS NKXC EXO ZEL
***Algorithme terminé***
Encore un qui ne voit pas la nécessité de venir donner des nouvelles (ici réaction du Prof) ?
@+
Arx Tarpeia Capitoli proxima...
Hors ligne