Gros probléme d'algo
Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
-
Alleynaz
- Membre Naturel
- Messages: 21
- Enregistré le: 16 Fév 2012, 14:10
-
par Alleynaz » 16 Fév 2012, 15:16
Bonjour,
voici mon sujet, je voudrais savoir si quelqu'un pouvais m'aider car je bloque a la question 2, quand il s'aggit de trouver un algorithme.
" Deux îles A et B sont isolées du monde extérieur. Chaque année, pendant 20 ans, 10% de la population de A quittent l'île pour s'installer dans l'île B; et simultanément 20% de la population de B émigre pour s'installer dans l'île A. En 1990, l'île A comptait 200 000 habitants et l'île B, 800 000 habitants. "
"1) Calculer les effectifs des populations de chaque île en 1991 puis en 1992 " ( cette question j'ai réussis)
"2) Ecrire en langage naturel un algorithme qui calcule les populations de 2 îles chaque année de 1990 à 2010. L'algorithme doit comporter une boucle et afficher les années, et pour chacune, les effectifs des populations des deux îles. Le programmer ensuite sur calculatrice. " ( voilà c'est la que j'aurais besoin d'aide )
Merci beaucoup
-
st00pid_n00b
- Membre Relatif
- Messages: 251
- Enregistré le: 03 Fév 2012, 19:54
-
par st00pid_n00b » 16 Fév 2012, 15:37
Bonjour,
En lisant trop vite j'ai compris "gros problème d'égo" et je mapprêtais à te rabaisser pour y remédier... :lol3:
Donc la première question est sensée te donner une idée de comment marche l'algo. La difficulté ici est le mot "simultanément". En effet, si tu fais:
Initialisation:
A reçoit 200000
B reçoit 800000
1ère année:
B augmente de 10% de A (B reçoit B + 0.1*A)
A augmente de 20% de B (A reçoit A + 0.2*B)
Il y a un problème avec cette approche "naïve", car les 20% de B sont calculés avec le nouveau B et pas l'ancien. Il faut donc utiliser une variable intermédiaire que j'appellerai C par manque d'imagination:
C reçoit la nouvelle valeur de B
A reçoit la nouvelle valeur de A (calculée avec B qui n'a pas encore été modifié)
B reçoit C
Il te reste à faire la boucle, afficher les années, et programmer tout ça, je ne veux pas non plus te mâcher tout le travail, essaye de finir et n'hésites pas si tu as d'autres questions.
-
Alleynaz
- Membre Naturel
- Messages: 21
- Enregistré le: 16 Fév 2012, 14:10
-
par Alleynaz » 16 Fév 2012, 16:04
Oui merci, j'y ai réfléchis et je pense avoir trouver un algorithme j'ai fais ceci :
[CENTER]A = 200 000
B = 800 000
N = 1
Pour N variant de 1 à 20
C = B+(0.1*A)
D = A+(0.2*B)
B = B+C
A = A+D
N = N+1
afficher A
afficher B
afficher N
Fin [/CENTER]
je l'ai essayer et visiblement il fonctionne, mais maintenant le problème que j'ai est que l'écran de ma calculatrice n'est pas assez grand pour afficher les 20 années, il n'y aurais pas un moyen de faire pour que je puisse controler le passage d'une année a l'autre ?
-
st00pid_n00b
- Membre Relatif
- Messages: 251
- Enregistré le: 03 Fév 2012, 19:54
-
par st00pid_n00b » 16 Fév 2012, 18:04
Déjà remplace 20 par 2 ou 3 et vérifie que tu trouves les valeurs de la question 1. Parce que dans ce que tu as écrit il y a un bug... mais c'est peut être une erreur de recopiage.
Il vaudrait mieux faire varier N de 1990 à 2010.
Et oui on peut arrêter le défilement et attendre que l'utilisateur presse une touche. La syntaxe dépend des calculatrices, consulte ton manuel.
-
st00pid_n00b
- Membre Relatif
- Messages: 251
- Enregistré le: 03 Fév 2012, 19:54
-
par st00pid_n00b » 16 Fév 2012, 18:09
Ah oui, et tu devrais afficher N, A, B au début de la boucle, comme ça t'auras les valeurs pour 1990 aussi.
-
st00pid_n00b
- Membre Relatif
- Messages: 251
- Enregistré le: 03 Fév 2012, 19:54
-
par st00pid_n00b » 16 Fév 2012, 18:29
En fait je suis très fatigué et j'ai oublié de prendre en compte les habitants qui quittent l'île chaque année...
En gros faut faire comme ça:
C = 0.1*A (habitants qui vont de A vers B)
D = 0.2*B (habitants qui vont de B vers A)
A = A - C + D
B = B - D + C
On peut utiliser moins de variables mais je pense que c'est plus clair comme ça. Un truc pour vérifier c'est que la somme des populations reste la même.
Va voir aussi
ici pour une discussion sur le même problème.
-
Alleynaz
- Membre Naturel
- Messages: 21
- Enregistré le: 16 Fév 2012, 14:10
-
par Alleynaz » 16 Fév 2012, 19:03
Oui merci,
effectivement j'ai changer mon algorithme et quand je le test pour la première année par exemple je trouve les memes valeurs que a la question 1). Néanmoins, un problème persiste :
j'ai mi dans mon algorithme N=1990 et Pour I variant de 1990 à 1993.
Je lance ensuite mon algorithme et pour 1991 j'ai 340 000 habitant ile A et 660 000 habitants ile B ( jusque ici tout est correct)
Mais aprés il s'affiche 1993, 438 000 habitants ile A et 562 000 habitants ile B. Or, ce sont les valeurs que j'ai trouver pour 1992 ( voir question 1) ).
-
st00pid_n00b
- Membre Relatif
- Messages: 251
- Enregistré le: 03 Fév 2012, 19:54
-
par st00pid_n00b » 16 Fév 2012, 19:31
Quand tu fais "N variant de 1990 à 2010" l'augmentation de N se fait automatiquement à chaque itération de la boucle. Alors si dans la boucle tu fais N=N+1, N a augmenté 2 fois! C'est ça le problème?
-
Alleynaz
- Membre Naturel
- Messages: 21
- Enregistré le: 16 Fév 2012, 14:10
-
par Alleynaz » 16 Fév 2012, 21:55
Oui c'est ca ! mais je ne vois pas comment faire pour que N augmente de 1 alors :/
-
st00pid_n00b
- Membre Relatif
- Messages: 251
- Enregistré le: 03 Fév 2012, 19:54
-
par st00pid_n00b » 16 Fév 2012, 23:21
Alleynaz a écrit:Oui c'est ca ! mais je ne vois pas comment faire pour que N augmente de 1 alors :/
Ben tu enlèves la ligne N = N+1 ...

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 91 invités