Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

algorithmique : code secret prof

Posté par
Jasmine
27-01-10 à 16:34

Bonjour


Dans un lycée, un code d'accès à la photocopieuse est attribué à chaque professeur. Ce code est un nombre à 4 chiffres choisis dans la liste {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, chaque chiffre pouvant être repéré à l'intérieur d'un même code. Par exemple 0027 et 5855 sont des codes possibles.

1)Combien de codes peut-on ainsi former ?
2)Ce code permet aussi de définir un identifiant pour l'accès au réseau informatique. L'identifiant est constitué du code à 4 chiffres suivie d'une clé calculée à l'aide de l'algorithme suivant
:

Entrée : N est le code à 4 chiffres
Initialisation : Affecter à P la valeur de N ;
Affecter à S la valeur 0 ;
Affecter à K la valeur 1.
Traitement : Tant que K 4 :
Affecter à U le chiffre des unités de P ;
Affecter à K la valeur K+1 ;
Affecter à S la valeur S+K*U ;
Affecter à P la valeur P −U/10;
Affecter à R le reste de la division euclidienne de S par 7 ;
Affecter à C la valeur 7-R.
Sortie (la « clé ») : Afficher C.


a) Faire fonctionner l'algorithme avec N = 2 282.
b) Dans cette question, toute trace de recherche, même incomplète, ou d'initiative même non fructueuse, sera prise en compte dans l'évaluation.
Un professeur s'identifie sur le réseau informatique en entrant le code 4732 suivi de la clé 7. L'accès au réseau lui est refusé. Le professeur est sûr des 3 derniers chiffres du code et de la clé, l'erreur porte sur le 1er chiffre du code (qui n'est donc pas égal à 4). Quel est ce 1er chiffre ?


Pour la 1) comment doit on procéder pour trouver tous les codes?

Pour la 2)
a-
Entrée : 2282

Initialisation P 2282
S: 0
K 1
K4 :
U---> 2
K---> 1+1 = 2
S--->0+2*2=4
P--->(2282-2)/10 = 2280/10=228
R--->228+(4/7)
C--->7-288.5

Sortie C --->-221.5


C'est correct?
Merci

Posté par
pgeod
re : algorithmique : code secret prof 27-01-10 à 19:31


1/ pour chaque chiffre du code, il y a 10 possiblités.
et il y a 4 chiffres..

2/

Entrée : 2282

Initialisation P 2282
S: 0
K 1
K4 4 :
U---> 2
K---> 1+1 = 2
S---> 0+2*2=4
P---> (2282-2)/10 = 2280/10=228
R---> 4/7 = 0*7 + 4 --> 4
C---> 7-4 = 3

----------- à FAIRE TANt que K 4

...

Posté par
Jasmine
re : algorithmique : code secret prof 27-01-10 à 20:01

Citation :
1/ pour chaque chiffre du code, il y a 10 possibilités.
et il y a 4 chiffres..


Euh! Les réponses ne me sert pas à grand chose! Je voudrais que tu m'expliques. S.V.P

2/
Citation :
----------- à FAIRE TANt que K 4

...
?

C'est fini!
K=1 donc < 4
C=3 donc < 4

On doit juste trouver la clé qui est 3
Non?

Posté par
pgeod
re : algorithmique : code secret prof 27-01-10 à 20:37


1/ 10*10*10*10

2/

K 1
TANT QUE K 4
  FAIRE :
    U---> 2
    K---> 1+1 = 2
    S--->0+2*2=4
    P--->(2282-2)/10 = 2280/10=228
    R--->228+(4/7)
    C--->7-288.5
    ----------- En fin de 1° boucle K = 2 -------
    ---------- donc c'est pas fini ---------
    ---------- on continue tant que K est 4 ------
    ---------- ce qui est bien le cas -----------------------------
    -----------------------------------------------------------------
FIN DE TANT QUE

...

Posté par
Jasmine
re : algorithmique : code secret prof 27-01-10 à 23:02

Bonsoir

Citation :
----------- En fin de 1° boucle K = 2 -------
    ---------- donc c'est pas fini ---------
    ---------- on continue tant que K est 4 ------
    ---------- ce qui est bien le cas -----------------------------
    -----------------------------------------------------------------
FIN DE TANT QUE


Ça ne veut rien dire  "FIN DE TANT QUE" .

A quoi sa sert de faire sa? Tous ces calculs nous prouve que K est inférieure ou égale à 4 donc 24

C'est sa la conclusion?
Citation :
a) Faire fonctionner l'algorithme avec N = 2 282.


La clé de N= 2 282 est 3 ?

Posté par
Jasmine
re : algorithmique : code secret prof 27-01-10 à 23:03

Citation :
donc 24


donc 2 < 4

Posté par
pgeod
re : algorithmique : code secret prof 28-01-10 à 07:48


Il ne s'agit pas ici d'un test conditionnel :

IF (K 4)
ALORS FAIRE ...(1 fois)

mais bien d'une boucle itérative qui doit s'effectuer
plusieurs fois, TANT QUE la condition EST REMPLIE.
On sort de la boucle, quand la condition n'est plus remplie.

Le FIN DE TANT QUE, ... c'est un détail.
Il dépend du language qui est utilisé pour programmer l'algorithme.

...

Posté par
plumemeteore
re : algorithmique : code secret prof 28-01-10 à 09:41

Bonjour Jasmine et Pgeod.
Au premier tour de la boucle, on alimente S avec K fois le chiffre des unités; à ce moment, K = 2; donc S devient le double du chiffre des unités.
Au deuxième tour, le chiffre des unités du reste du code est le chiffre de dizaines du code lui-même; K est devenu 3; on augmente S du triple du chiffre des dizaines.
Au troisième tour, on augmente S du quadruple du chiffre des centaines.
Au quatrième tour et dernier tour, on augmente S du quintuple du chiffre des milliers.
La clef est le nombre qu'il faut ajouter à S pour atteindre le multiple de 7 immédiatement strictement supérieur.

Le signalement de la fin de la boucle est obligatoire, sinon on pourrait considérer que la boucle va jusqu'à la dernière ligne du programme.
La forme de ce signalement dépend du langage de programmation.
Ce signalement doit se situer entre les lignes :
Affecter à P la valeur P −U/10;
et
Affecter à R le reste de la division euclidienne de S par 7 ;
Au début du cinquième tour, K vaut 5 et le programme refuse d'exécuter la boucle une nouvelle fois. Il passera donc à la ligne du calcul du reste, puis au calcul de la clef et à son affichage.

Dans le cas de 4732 on calcule le S provisoire après les trois premiers tours de boucles.
La clef est 7, donc la valeur finale de S doit être divisible par 7.
On cherche donc le chiffre des milliers tel que son quintuple ajouté au S provisoire donne un multiple de 7. Il n'y a ici qu'une solution.

Posté par
Jasmine
re : algorithmique : code secret prof 28-01-10 à 09:43

Bonjour!
Ah! On a remplie la condition puisque 2 < 4 !

Donc pour cette question c'est finie

Citation :

Un professeur s'identifie sur le réseau informatique en entrant le code 4732 suivi de la clé 7. L'accès au réseau lui est refusé. Le professeur est sûr des 3 derniers chiffres du code et de la clé, l'erreur porte sur le 1er chiffre du code (qui n'est donc pas égal à 4). Quel est ce 1er chiffre ?


Il faut faire un algorithme ! La sortie (suivi de la clé 7) est 7
Il faut que le 1er chiffre soit inférieur ou égale à 4
Mais que peut faire comme entré ? Commencer de 0 jusqu'à 4 ?

Posté par
plumemeteore
re : algorithmique : code secret prof 28-01-10 à 09:59

Bonjour.
Le premier chiffre peut être supérieur à 4.
C'est le multiplicateur K, utilisé par le programme et qui ne fait pas partie du code secret, qui ne peut pas être supérieur à 4, sinon la boucle 'Tant que' n'est plus exécutée.

Posté par
Jasmine
re : algorithmique : code secret prof 28-01-10 à 10:09

Bonjour Plumemeteore

Citation :
Au premier tour de la boucle, on alimente S avec K fois le chiffre des unités; à ce moment, K = 2; donc S devient le double du chiffre des unités.


S devient 4
Citation :
Au deuxième tour, le chiffre des unités du reste du code est le chiffre de dizaines du code lui-même; K est devenu 3; on augmente S du triple du chiffre des dizaines.


S devient 24 (chiffre des dizaines est 8:2282 donc 8*3=24)

Citation :
Au troisième tour, on augmente S du quadruple du chiffre des centaines.


S devient 8 (chiffres des centaines est 2 donc 2*4=8)
Citation :

Au quatrième tour et dernier tour, on augmente S du quintuple du chiffre des milliers.


S devient 10 (2*5=10)

Citation :
La clef est le nombre qu'il faut ajouter à S pour atteindre le multiple de 7 immédiatement strictement supérieur.


On prend le 1er tour : c'est le seul qui est inférieur à 7

Posté par
Jasmine
re : algorithmique : code secret prof 28-01-10 à 10:11

Citation :
Le premier chiffre peut être supérieur à 4.
C'est le multiplicateur K, utilisé par le programme et qui ne fait pas partie du code secret, qui ne peut pas être supérieur à 4, sinon la boucle 'Tant que' n'est plus exécutée.


Donc on reprend l'algorithmique sans le K

Posté par
plumemeteore
re : algorithmique : code secret prof 28-01-10 à 15:04

Le K est nécessaire.
S est une somme de produits. Chacun de ces produits est la multiplication d'un chiffre du code et de la valeur de K.
S peut être supérieur à 7 (il peut aller jusqu'a 126).
Exemple avec 2282.
premier tour : K = 2, U = 2, S = 0 + 2*2 = 4
deuxième tour : K = 3, U = 8, S = 4 + 8*3 = 28
troisième tour : K = 4, U = 2, S = 28 + 2*4 = 36
quatrième tour : K = 5, U = 2, S = 36 + 2*5 = 46
K = 5 : on ne recommence plus de tour
S divisé par 7 = 6 reste 4 : R = 4
C = 7-4 = 3 : chiffre affiché

Posté par
Jasmine
re : algorithmique : code secret prof 28-01-10 à 15:37

Citation :
deuxième tour : K = 3,


Comment vous savez que K est égale à 3 déjà au 2ème tour? Ou bien c'est vous qui aviez choisi que K=3,4 et 5 ?

Posté par
pgeod
re : algorithmique : code secret prof 28-01-10 à 16:53


A chaque tour, K est incrémenté de 1 par l'instruction :

Affecter à K la valeur K+1 ; c-à-d K = K + 1

...

Posté par
plumemeteore
re : algorithmique : code secret prof 28-01-10 à 18:19

Bonjour.
C'est le programme qui détermine la valeur de K.
Au début du premier tour de la boucle, K = 1; mais il est augmenté de 1 et devient 2 pour l'affectation à S de S + K*U.
Il reste 2 tant qu'on ne le modifie pas, c'est-à-dire juste encore au deuxième tour juste avant l'instruction qui augmente sa valeur de 1; il devient alors 3 pour l'affectation à S de S + K*U.
Au troisième tour, K devient 4 du fait de sa nouvelle augmentation de 1. De même au quatrième tour, il devient 4+1 = 5.
A la tentative du cinquième tour, le programme note que K n'est plus inférieur ni égal à 4. Il saute la boucle et se retrouve dans les trois premières lignes.

Il importe de comprendre la valeur de chaque variable à chaque moment de l'exécution du programme.

Posté par
Jasmine
re : algorithmique : code secret prof 28-01-10 à 23:21

Bonsoir!
J'ai compris! J'ai tout refais:

1er boucle:
Entrée : 2282
Initialisation: P=2282
S=0
K=1
Traitement: TANT QUE K4
U=2
K=1+1=2
S=0+2*2=4
P=(2282-2)/10=2280/10=228
R=4/7=0
C=7-0=7
Sortie " la clé": 7
K est toujours4

2ème boucle:
Entrée : 2282
Initialisation: P=2282
S=0
K=2
Traitement: TANT QUE K4
U=8
K=2+1=3
S=0+23*8=24
P=(2282-2)/10=2280/10=228
R=24/7=3
C=7-3=4
Sortie " la clé": 4
K est toujours4

3ème boucle:
Entrée : 2282
Initialisation: P=2282
S=0
K=3
Traitement: TANT QUE K4
U=2
K=3+1=4
S=0+4*2=8
P=(2282-2)/10=2280/10=228
R=8/7=1
C=7-1=6
Sortie " la clé": 6
K est toujours4

4ème boucle:
Entrée : 2282
Initialisation: P=2282
S=0
K=4
Traitement: TANT QUE K4

U=2
K=4+1=5
S=0+5*2=10
P=(2282-2)/10=2280/10=228
R=10/7=1
C=7-1=6
Sortie " la clé": 6
FIN DU TANT QUE K4

Voilà! C'est comme ça qu'il faut présenter les boucles?
Je dois avoir tout bon normalement!
Je cherche un algorithme pour le b) maintenant!

Posté par
plumemeteore
re : algorithmique : code secret prof 29-01-10 à 15:12

Bonjour Jasmine.
Dans chaque boucle, il faut tenir compte de la valeur actuelle des variables, qui peut avoir changé, pas de la valeur de départ
Un mot au sujet de l'affectation :
affecter à V le résultat d'un calcul se note souvent V = calcul
si V fait partie du calcul, c'est sa valeur avant affectation qui est utilisée pour le calcul
par exemple au premier tour
affecter à P la valeur (P-U)/10; à propos, (P-U)/10 n'est pas la même chose que P -U/10
P = (P-U)/10
valeur de U : 2; valeur de P avant affectation : 2282
calcul à droite de = : (2282-2)*10 = 228
P est maintenant 228 et restera jusqu'à ce qu'on lui affecte une autre valeur

Entrée : N est le code à 4 chiffres
Initialisation : Affecter à P la valeur de N ; P = 2282
Affecter à S la valeur 0 ; S = 0
Affecter à K la valeur 1. K = 1

Traitement : Tant que K <= 4 :

Premier tour
Affecter à U le chiffre des unités de P ; U = 2
Affecter à K la valeur K+1 ; K = 2
Affecter à S la valeur S+K*U ; S = 0+2*2 = 2
Affecter à P la valeur (P−U)/10; P = 228
Fin du premier tour

Deuxième tour
Affecter à U le chiffre des unités de P ; U = 8; car P est maintenant 228
Affecter à K la valeur K+1 ; K = 3, car avant cette affectation, K = 2
Affecter à S la valeur S+K*U ; S = 4 + 3*8 = 28; car avant cette affectation, S = 4
Affecter à P la valeur (P−U)/10; P = (228-8)/10 = 22
Fin du deuxième tour

Troisième tour
Affecter à U le chiffre des unités de P ; U = 2; car P = 22
Affecter à K la valeur K+1 ; K = 3+1 = 4
Affecter à S la valeur S+K*U ; S = 28 + 4*2 = 36
Affecter à P la valeur P −U/10; P = (22-2)/10 = 2
Fin du troisième tour

Quatrième tour
Affecter à U le chiffre des unités de P ; U = 2; car P = 2
Affecter à K la valeur K+1 ; K = 4+1 = 5
Affecter à S la valeur S+K*U ; S = 36+5*2 = 46
Affecter à P la valeur (P-U)/10; P = (2-2)/10 : 0
Fin du quatrième tour

Cinquième tour
On constate que K n'est pas plus petit ou égal à 4; on passe donc à la suite du programme, après la boucle.




Affecter à R le reste de la division euclidienne de S par 7 ; R = 4, car 46/7 donne un reste 4
Affecter à C la valeur 7-R. C = 7-4 = 3
Sortie (la « clé ») : Afficher C. '3 s'affiche

Posté par
Jasmine
re : algorithmique : code secret prof 29-01-10 à 16:40

Bonjour!
Ah oui! Je viens de comprendre : je gardais toujours 2282 et on disait " le chiffre des unités" mais moi je mettais le chiffre des dixièmes, centaines, millième! Et ce n'ai pas demandé! Pour pourvoir garder le chiffre des unités on doit faire en sorte qu'il reste toujours en dernier!
Et sa grâce à l'algorithme"Affecter à P la valeur (P−U)/10"

!

Sinon pour la b- je n'ai pas trouvé l'algorithme qui convient!
Je pense qu'il faut commencer par l'algorithme du a-avec comme entrée 4732  :

1er boucle

Entrée : 4732
Initialisation : Affecter à P la valeur de N ;4732
Affecter à S la valeur 0 ;
Affecter à K la valeur 2.
Traitement : Tant que K <= 4 :
Affecter à U le chiffre des unités de P ;2
Affecter à K la valeur K+1 ;1+1=2
Affecter à S la valeur S+K*U ;0+2*2=4
Affecter à P la valeur P −U/10;(4732-2)/10=4730/10=473

2ème boucle

Entrée : 473
Initialisation : Affecter à P la valeur de N ;473
Affecter à S la valeur 0 ;
Affecter à K la valeur 1.
Traitement : Tant que K < ou égale à 4 :
Affecter à U le chiffre des unités de P ;3
Affecter à K la valeur K+1 ;2+1=3
Affecter à S la valeur S+K*U ;0+3*3=9
Affecter à P la valeur P −U/10;(473-3)/10=470/10=47

3ème boucle
Entrée : 47
Initialisation : Affecter à P la valeur de N ;47
Affecter à S la valeur 0 ;
Affecter à K la valeur 3.
Traitement : Tant que K = < 7 :
Affecter à U le chiffre des unités de P ;7
Affecter à K la valeur K+1 ;3+1=4
Affecter à S la valeur S+K*U ;0+4*7=28
Affecter à P la valeur P −U/10;(47-7)/10=40/10=4
Affecter à R le reste de la division euclidienne de S par 7 ;28/7=4
Affecter à C la valeur 7-4;7-4=3

Mais: Sortie (la « clé ») : Afficher C qui est 3 mais la clé 7!
Le code devient 3732 ? Mon traitement tant que K < = 4 est juste?
Où est la faute?

Posté par
plumemeteore
re : algorithmique : code secret prof 29-01-10 à 20:59

Bonjour Jasmine.

La boucle du programme se limite à :
Traitement : Tant que K <= 4 :
Affecter à U le chiffre des unités de P ;
Affecter à K la valeur K+1 ;
Affecter à S la valeur S+K*U ;
Affecter à P la valeur P −U/10;
ici, il manque une ligne qui pourrait s'écrire: Revenir à la ligne Tant que
Donc :
la première partie du programme, qui précède la boucle Tant que est exécutée une seule fois
la boucle est exécutée tant que la condition K <= 4 est respectée
la partie après la boucle est exécutée une seule fois

Le programme suivant calcule le premier chiffre manquant du code quand on connaît les trois derniers chiffres et la clef. Les lignes qui commencent par ' sont des commentaires qui ne sont pas exécutés; elles peuvent même être supprimées.

Entrée : N est le nombre formé des trois derniers chiffres du code;
Entrée : C est la clef
Initialisation : Affecter à P la valeur de N ;
Affecter à S la valeur 0 ;
Affecter à K la valeur 1;

'Calcul de la valeur de S après le traitement des trois derniers chiffres du code
Traitement : Tant que K <= 3 :
Affecter à U le chiffre des unités de P ;
Affecter à K la valeur K+1 ;
Affecter à S la valeur S+K*U ;
Affecter à P la valeur (P−U)/10;
Revenir à la ligne Tant que

Affecter à R la valeur 7-C
'R = reste de la division par 7 de la valeur finale de S
'Le S trouvé jusqu'à présent devra être augmenté de 5 autant de fois que nécessaire pour que le S final divisé par 7 donne R comme reste
'Ce nombre de fois sera le premier chiffre inconnu
'Si S est bon dès le début, la boucle n'est pas exécutée et donc X reste 0

X = 0
Tant que le reste de la division euclidienne de S par 7 est différent de R
X = X+1
S = S+5
Revenir à la ligne Tant que
'on teste si la prochaine valeur de S est bonne

Sortie :  afficher "le premier chiffre est "
Afficher X

Posté par
Jasmine
re : algorithmique : code secret prof 29-01-10 à 23:11

Donc comme 3 ne convient pas au code (1er chiffre) on doit le supprimer de l'algorithme:
Donc on prend comme entré 732
1er boucle
Tant que K<=3
U: 2
K: 1+1=2
S:0+2*2=4
P: (732-2)/10=730/10=73
Tant que K<=3
2ème boucle
U:3
K:2+1=3
S:0+3*3=9
P73-3)/10=70/10=7
Fin du tant que K<=4 car dans la 3ème boucle on aura K=4
R:9/7=1
C:7-1=6

Et là! La clé n'est pas 7! Oh là là! Sa recommence! Alors que j'ai tout suivi!

Posté par
Jasmine
re : algorithmique : code secret prof 31-01-10 à 19:58

Bonsoir
Où commence la faute ? S.v.p comme sa je pourrais recommencer

Merci

Posté par
Jasmine
re : algorithmique : code secret prof 05-02-10 à 15:23

Bonjour,
Euh! J'exagère, je sais!
Mais il faut que je comprenne! Je n'arrête pas de refaire cet exercice! Et je n'ai toujours pas réussie!
Je suis découragée!

Posté par
Jasmine
re : algorithmique : code secret prof 25-03-10 à 20:11

Merci pour votre aide

Posté par
fedjer
re : algorithmique : code secret prof 14-04-12 à 11:34

Bonjour
je travaille aussi sur ce devoir et je ne comprends pas pourquoi vous continuez d'affecter à U le chiffre des unités de P lorsque K=5
on n'est plus dans la boucle là, non?

Posté par
fedjer
14-04-12 à 21:39

svp j'ai vraiment besoin d'1 explication
je ne comprends pas pourquoi vous continuez d'affecter à U le chiffre des unités de P lorsque K=5 alors que l'algorithme précise : tant que K4

Posté par
pgeod
re : algorithmique : code secret prof 14-04-12 à 21:57

bonjour fedjer.
c'est déjà un topic un peu ancien.

on fait bien 4 itérations.
Au cours de la 4° itération, K prend la valeur 5
ce qui permet, lorsque la 4° itération est excécutée de sortir de la boucle.

Posté par
fedjer
14-04-12 à 22:12

merci de répondre!
pour K=4 on a :
P=2 S=36 U=2

on a donc fait 3 fois tourner le programme

étape suivante :
Affecter à U le chiffre des unités de P : I=2
K=5
c'est là que je ne comprends plus
pour moi je sortirais de la boucle et je ne calcule plus de nouvelle valeur pour S et P vu qu'on n'est plus dans le cas où K4

pourtant j'ai vu le corrigé 'donné en bac L option Maths et ils ont bien continué l'itération où K=5
et on trouve S=46 C=3

d'ailleurs l'algorithme dit bien  pour K4 et non pas pour i allant de 1 à 4

j'ai besoin de comprendre cet exo pour lundi!

Posté par
Jasmine
re : algorithmique : code secret prof 15-04-12 à 09:12

Eh ben!
Je viens de recevoir le message de notification et je vois que c'est vraiment ancien ce topic
Et dire que je n'ai toujours pas compris!

Désolée pour toi fedjer



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 1724 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 !