Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

algorithme en boucle "pour"

Posté par
mimi96
21-12-12 à 15:44

bonjour
alors voila je beugs sur cette exercice, je ne comprend vraiment pas la consigne es ce que quelqu'un pourait m'expliquer sans me donner la reponse car j'aimerai comprendre

on s'intéresse aux entiers naturels qui sont la somme de carré consécutifs d'entiers.C'est le cas par exemple de 29 car :29=2^2+3^2+4^2 . on admet que pour tout entier naturel N inférieur ou egal à 100 l'algorithme ci-dessus nous donne :
-aucun message si N n'est pas la somme de carrés consécutifs d'entiers
-m et k si N est la simme de k carrés d'entiers consécutifs,le plus petit etant m^2(pour l'ecriture précédente de 29 , m=2 et k =3)
Entrée N
Pour k de 1 à 7
Dans A mettre k
Dans B mettre A*(A-1)/2
Dans C mettre (B*(2*A-1)/3)-N
Dans D mettre B^2-A*C
Si D > 0 alors
Si D est entier alors
Dans m mettre ( D-B)/A
Afficher m, k
Fin du Si
Fin du Si
Fin de la boucle pour


1) Faire fonctionner l'algorithme pour N = 91. Écrire alors 91 comme une somme de carrés consécutifs
d'entiers.
  
je n'est pas compris comment on fait marcher cette algorithme  
merci

Posté par
Papy Bernie
re : algorithme en boucle "pour" 21-12-12 à 16:28

Bonjour,

tu peux vérifier ce que tu as tapé pour ton algo : voir s'il ne manque pas qq. chose ou bien des (....) mal mises, etc. car je n'arrive pas à le faire  tourner.

Posté par
Glapion Moderateur
re : algorithme en boucle "pour" 21-12-12 à 16:29

Bonjour, pour le faire marcher, il faut le programmer (dans Algobox ou une calculatrice) sinon tu es obligé de le faire marcher à la main. C.a.d en faisant comme si tu étais un ordinateur et en exécutant chaque instruction. Tu les comprends ces instructions ? donc tu dois être en mesure de faire fonctionner le programme.

Posté par
fontaine6140
re : algorithme en boucle "pour" 21-12-12 à 17:09

Bonjour,

Si on regarde le topic Algorithme
on remarque qu'il manque une instruction  racine carrée.
J'aimerais à titre de curiosité, une démonstration de cet algorithme.
Merci

mimi96  -  21.12.2012

******************************************

******************************************

1   VARIABLES
2     N EST_DU_TYPE NOMBRE
3     K EST_DU_TYPE NOMBRE
4     A EST_DU_TYPE NOMBRE
5     B EST_DU_TYPE NOMBRE
6     C EST_DU_TYPE NOMBRE
7     D EST_DU_TYPE NOMBRE
8     M EST_DU_TYPE NOMBRE
9     RAC EST_DU_TYPE NOMBRE
10  DEBUT_ALGORITHME
11    AFFICHER "Valeur de N:"
12    LIRE N
13    POUR K ALLANT_DE 1 A 12
14      DEBUT_POUR
15      A PREND_LA_VALEUR K
16      B PREND_LA_VALEUR A*(A-1)/2
17      C PREND_LA_VALEUR (B*(2*A-1)/3)-N
18      D PREND_LA_VALEUR B*B-A*C
19      SI (D>0) ALORS
20        DEBUT_SI
21        RAC PREND_LA_VALEUR sqrt(D)
22        SI (RAC==round(RAC)) ALORS
23          DEBUT_SI
24          M PREND_LA_VALEUR (RAC-B)/A
25          AFFICHER "N="
26          AFFICHER N
27          AFFICHER " K="
28          AFFICHER K
29          AFFICHER " A="
30          AFFICHER A
31          AFFICHER " B="
32          AFFICHER B
33          AFFICHER " C="
34          AFFICHER C
35          AFFICHER " D="
36          AFFICHER D
37          AFFICHER " M="
38          AFFICHER M
39          FIN_SI
40        FIN_SI
41      FIN_POUR
42  FIN_ALGORITHME

Posté par
mimi96
re : algorithme en boucle "pour" 21-12-12 à 18:31

merci pour toute vos reponse
mais en relisant l'exercice j'ai remarqué que j'aivais oublié une donnée k=6 donc aprés c'etait baucoup plus facile

Posté par
mimi96
re : algorithme en boucle "pour" 21-12-12 à 18:37

pour repondre a votre question fontaine6140 quand on fait marcher cette algorithme sa nous donne k= et m=1
si je me suis pas tronpé

Posté par
fontaine6140
re : algorithme en boucle "pour" 21-12-12 à 19:08

Je pense que cela donne plutôt ceci:
algorithme en boucle  pour


signifiant
91=0²+1²+2²+3²+4²+5²+6² m=0 et k=7
ou
91=1²+2²+3²+4²+5²+6² m=1 et k=6

Posté par
mimi96
re : algorithme en boucle "pour" 21-12-12 à 19:55

Merci mais cela veux dir qu'il y a deux solutions ?
cela est possible ?

Posté par
fontaine6140
re : algorithme en boucle "pour" 21-12-12 à 22:39

On n'a jamais exclu le nombre 0.
Pour 91 oui.

Posté par
mimi96
re : algorithme en boucle "pour" 21-12-12 à 23:05

Daccort en tout en cas merci pour votre aide

Posté par
mathafou Moderateur
re : algorithme en boucle "pour" 21-12-12 à 23:09

Bonsoir,

pour l'explication du fonctionnement de cet algorithme

1) il se limite volontairement à une somme d'au plus 12 termes

2) je pense que le principe est le suivant :
la somme des n premiers carrés 1² + 2² + ... + n² = n(n+1)(2n+1)/6

la somme des carrés successifs commençant à n+1 et se terminant à n+k est donc

S = (n+k)(n+k+1)(2n+2k+1)/6 - n(n+1)(2n+1)/6
les termes en n3 s'éliminant visiblement.
il s'agit donc de résoudre l'équation en n :
S (donné) = ce polynome du second degré en n, avec k comme paramètre
pour chaque valeur de k, on résoud donc cette équation du second degré et on ne garde que les équations qui donnent un n entier.

modulo quelques ajustements de détail sur les valeurs exactes de n et k (pas vérifié à 1 près)

Posté par
mimi96
re : algorithme en boucle "pour" 21-12-12 à 23:20

vous voulez dir que pour fair marcher l'algorithme on poux utiliser une equation ? ce n'est pas plus simple d'appliquer l'agorithme ?

Posté par
mathafou Moderateur
re : algorithme en boucle "pour" 21-12-12 à 23:33

Non pas besoin d'équation pour faire fonctionner l'algorithme
C'est l'algorithme qui résoud l'équation pour nous !!

Les calculs ci-dessus étaient pour répondre à la question de fontaine6140 :

Citation :
J'aimerais à titre de curiosité, une démonstration de cet algorithme.
pour prouver que l'algorithme marche, il ne suffit pas de l'essayer dans quelques cas !
Et cela passe par "le décortiquer" pour voir pourquoi il calcule des (B*(2*A-1)/3)-N et des B*B-A*C (B² - AC)

Le problème initialement posé est bien :
Citation :
1) Faire fonctionner l'algorithme
à la main ou sur une machine.
car il est bien écrit :
Citation :
on admet que pour tout entier naturel N inférieur ou egal à 100 l'algorithme ci-dessus nous donne...
en d'autre terme une telle preuve que l'algorithme fonctionne n'est pas demandée.
on vérifie exclusivement son résultat avec n = 91 et si on est curieux n = 29, en le faisant juste tourner et rien d'autre.

Posté par
fontaine6140
re : algorithme en boucle "pour" 21-12-12 à 23:36


Merci mathafou d'avoir tenté de répondre à ma demande de démonstration.
Je vais essayer d'approfondir le sujet.

>>mimi96: le message de mathafou s'adresse à ma demande.

Posté par
fontaine6140
re : algorithme en boucle "pour" 21-12-12 à 23:37

Post croisés!

Posté par
mimi96
re : algorithme en boucle "pour" 21-12-12 à 23:43

a ok je n'avais pas compris en tout les cas merci a tous !

Posté par
fedjer
re : algorithme en boucle "pour" 22-12-12 à 09:26

bonjour
pour faire cet ex est ce que vous pensez qu'il faut entrer le programme dans 1 calculatrice ou sur algobox car c'est vraiment trop long à la main; non?

Posté par
fedjer
re : algorithme en boucle "pour" 22-12-12 à 09:29

et au fait l'algorithme demande juste d'afficher m et k

Posté par
fedjer
re : algorithme en boucle "pour" 22-12-12 à 09:30

"il se limite volontairement à une somme d'au plus 12 termes"
qu'est ce qui te fait dire ça mathafou?

Posté par
mathafou Moderateur
re : algorithme en boucle "pour" 22-12-12 à 10:33

POUR K ALLANT_DE 1 A 12
mon étude portait sur l'algo de Fontaine1640, car l'algo du post initial est "visiblement" entaché d'erreurs (la preuve la réponse de PapyBernie ?)

sur l'algo d'origine on est même limité à 7 termes : pour k de 1 à 7

Fedger:

Citation :
pour faire cet ex est ce que vous pensez qu'il faut entrer le programme dans 1 calculatrice ou sur algobox car c'est vraiment trop long à la main; non?
mimi96 :
Citation :
mais en relisant l'exercice j'ai remarqué que j'aivais oublié une donnée k=6 donc aprés c'etait baucoup plus facile
donc "faire marcher" l'algo à la main cela veut dire :

entrer N : N = 91
Pour k de 1 à 7 : k = 1
Dans A mettre k : A = 1
Dans B mettre A*(A-1)/2 : B = 0
Dans C mettre (B*(2*A-1)/3)-N : C = -91
Dans D mettre B^2-A*C : D = 91
Si D > 0 alors : oui D >0
Si D est entier alors : non D n'est pas entier
pas exécuté
Fin du Si
Fin du Si
Fin de la boucle pour : on recommence avec k = 2
... execution semblable que l'on ne développe PAS
on boucle ainsi (sans développement explicite) jusqu'à ce qui est donné dans l'énoncé : k = 6, que l'on développe effectivement
Dans A mettre k : A = 6
Dans B mettre A*(A-1)/2 : B = 15
etc développé (avec sortie du message cette fois)

et on ne développe pas non plus k = 7

Posté par
fontaine6140
re : algorithme en boucle "pour" 22-12-12 à 12:48

Bonjour fedjer,

J'ai corrigé mon erreur au topic Algorithme.



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