Bonjour, voici l'énoncé de mon devoir maison :
A la naissance d'Alban, sa grand-mère dépose sur un compte bancaire 100€ et décide
de verser à chacun de ses anniversaires 100€ auxquels elle ajoute le double de
l'âge d'Alban, en euros.
Ecrire un algorithme permettant de connaître la somme déposée sur le compte d'Alban
au bout de n années.
Déterminer cette somme pour n=10
Voilà ce que j'ai trouvé :
(En langage naturel). Pour les 100€ ajoutés à chacun de ses anniversaires, je pense avoir :
Variables :
N ; P
Début Algorithme :
Lire N
P prend la valeur 100 (Cette ligne est-elle nécessaire?)
P prend la valeur N*100
Afficher P
Fin Algorithme
Ce qui pose problème, c'est le double de l'âge d'Alban qu'elle ajoute :
j'ai essayé de trouver avec Pour... de ... à ou encore Tant que...,
mais à chaque fois, l'algorithme ajoute seulement 20 (il double la dernière valeur n=10).
Comment faire pour qu'il ajoute 2, puis 4, puis 6...etc?
Merci d'avance pour votre aide
Bonjour,
Par exemple, codé dans le langage d'Algobox
1 VARIABLES
2 age EST_DU_TYPE NOMBRE
3 compte EST_DU_TYPE NOMBRE
4 n EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6 compte PREND_LA_VALEUR 100
7 LIRE n
8 POUR age ALLANT_DE 1 A n
9 DEBUT_POUR
10 compte PREND_LA_VALEUR compte + 100 + 2*age
11 FIN_POUR
12 AFFICHER "âge = "
13 AFFICHER n
14 AFFICHER "compte = "
15 AFFICHER compte
16 FIN_ALGORITHME
Bonjour
1an => 100 + 100 +1*2 = 2*100 +1*2
2an => 100 + 100 +1*2 + 100 +2*2 = 3*100 +1*2+2*2
3an => 3*100 +1*2+2*2 + 100 +3*2 = 4*100 +1*2+2*2+3*2 = 4*100 + (1+2+3)*2
4an => 5*100 +1*2+2*2+3*2+4*2 = 5*100 + (1+2+3+4+5)*2 = (4+1)*100 + somme des 5 premiers chiffres *2
5an => (5+1)*100 + somme des (5+1) premiers chiffres *2
....
n an => (n+1)*100 + (1+2+3+4+...+n+1)*2 = (n+1)*100 +(somme d'une suite arithmétique=nbre de termes*(le 1er + le dernier)/2)*2 = (n+1)*100 +[(n+1)(1+n+1)/2]*2 =(n+1)*100 + (n+1)(n+2)
10an => 1100 + 11*12 = 1432
A+
Re-bonjour,
je ne comprends pas pourquoi vous affichez plusieurs fois "compte" ni comment vous pouvez mettre "=" avec l'affichage d'une variable. D'autre part après plusieurs essais je trouve 1210 (avec n=10), alors que géo 3 trouve 1432. Etant débutant dans algobox, pouvez-vous m'éclaircir ?
Tu n'as pas bien lu
Les lignes 12 et 14 affichent des messages (pour que le résultat soit plus agréable à lire) ; il y a des guillemets
les lignes 13 et 15 affichent des variables : il n'y a pas de guillemets
Avec Algobox ce n'est pas sur le même bouton qu'il faut cliquer.
Et, pour information, avec le programme que j'ai posté le 09/02 à 16 h 00, je trouve bien si je rentre n = 10 l'affichage suivant :
âge = 10
compte = 1432
Je suis vraiment désolé pour avoir mal compris les messages affichant les variables.
Malheureusement, je n'obtiens toujours pas 1432, en ayant copié votre algorithme : j'ai fait une capture d'écran pour vous montrer celui que j'ai tapé, et j'ai aussi copié collé les calculs du mode pas à pas : à la fin, il indique 1210.
#1 Nombres/chaines (ligne 6) -> âge:0 | compte:100 | n:0
#2 Nombres/chaines (ligne 7) -> âge:0 | compte:100 | n:10
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#3 Nombres/chaines (ligne 9) -> âge:1 | compte:100 | n:10
#4 Nombres/chaines (ligne 10) -> âge:1 | compte:202 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#5 Nombres/chaines (ligne 9) -> âge:2 | compte:202 | n:10
#6 Nombres/chaines (ligne 10) -> âge:2 | compte:306 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#7 Nombres/chaines (ligne 9) -> âge:3 | compte:306 | n:10
#8 Nombres/chaines (ligne 10) -> âge:3 | compte:412 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#9 Nombres/chaines (ligne 9) -> âge:4 | compte:412 | n:10
#10 Nombres/chaines (ligne 10) -> âge:4 | compte:520 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#11 Nombres/chaines (ligne 9) -> âge:5 | compte:520 | n:10
#12 Nombres/chaines (ligne 10) -> âge:5 | compte:630 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#13 Nombres/chaines (ligne 9) -> âge:6 | compte:630 | n:10
#14 Nombres/chaines (ligne 10) -> âge:6 | compte:742 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#15 Nombres/chaines (ligne 9) -> âge:7 | compte:742 | n:10
#16 Nombres/chaines (ligne 10) -> âge:7 | compte:856 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#17 Nombres/chaines (ligne 9) -> âge:8 | compte:856 | n:10
#18 Nombres/chaines (ligne 10) -> âge:8 | compte:972 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#19 Nombres/chaines (ligne 9) -> âge:9 | compte:972 | n:10
#20 Nombres/chaines (ligne 10) -> âge:9 | compte:1090 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Entrée dans le bloc DEBUT_POUR/FIN_POUR (ligne 9)
#21 Nombres/chaines (ligne 9) -> âge:10 | compte:1090 | n:10
#22 Nombres/chaines (ligne 10) -> âge:10 | compte:1210 | n:10
Sortie du bloc DEBUT_POUR/FIN_POUR (ligne 11)
Enfin, la suite de l'exercice consiste à écrire un autre algorithme, déterminant le nombre d'années dont Alban aura besoin pour avoir 1999€. Je pense avoir trouvé : on reprend le premier algorithme, on supprime "LIRE N", puis on ajoute :
TANT QUE (compte<1999) FAIRE
DEBUT TANT QUE
compte PREND_LA_VALEUR compte + 100 + 2*age
âge PREND_LA_VALEUR âge + 1
FIN TANT QUE
AFFICHER âge
Je trouve ainsi 17.
Est-ce cela?
Je vous remercie de l'aide apportée, je dois commencer à vous ennuyer...
Bonjour,
Je suis vraiment désolé ; j'ai dû rêver... j'ai répondu de mémoire et j'avais lu le message de geo3
La réponse pour n = 10 est bien compte = 1210
Voici ma copie d'écran :
Je reprends le calcul de geo3 le 09/02 à 16 h 06
La ligne "3 ans" est juste
mais l'erreur s'introduit à la ligne "4 ans"
voici la suite corrigée de son message :
Je te donne une solution pour me faire pardonner de t'avoir fait perdre du temps...
1 VARIABLES
2 age EST_DU_TYPE NOMBRE
3 compte EST_DU_TYPE NOMBRE
4 DEBUT_ALGORITHME
5 age PREND_LA_VALEUR 0
6 compte PREND_LA_VALEUR 100
7 TANT_QUE (compte<1999) FAIRE
8 DEBUT_TANT_QUE
9 age PREND_LA_VALEUR age+1
10 compte PREND_LA_VALEUR compte+100+2*age
11 FIN_TANT_QUE
12 AFFICHER "âge = "
13 AFFICHER age
14 AFFICHER "compte = "
15 AFFICHER compte
16 FIN_ALGORITHME
Et voici la copie d'écran :
Donc tu as une bonne solution !
D'accord! (Je n'avais même pas vu que vous aviez posté une solution)
Encore un grand merci pour votre précieuse aide!
Bonsoir
> Cool
je viens seulement de voir la suite de la discussion
merci pour avoir vu mon erreur ( pour 4ans qu'est ce que le 5 est arrivé là de nul part , par hasard ) et de la corriger
pour finir on a bien
n ans : (n+1)*100 + n*(n+1)
A+
Bonjour geo3
Pas de problème
L'erreur peut arriver à n'importe qui ; ce n'est pas toujours facile au clavier de taper ces expressions. Grâce au forum elle a été corrigée. Rien de grave !
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :