Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Problème sur scilab

Posté par
Froggy
16-12-14 à 16:52

Bonjour, je n'arrive pas à résoudre un problème poser dans un exercice avec scilab.

Je sollicite votre aide : je poste l'énoncé et ce que j'ai fait.

Voici l'énoncé: En l'an 2000, le lycée A compte 2000 élèves et le lycée B en compte 8000. Une étude a montré que chaque année :
-10% des élèves quittent le lycée A pour le lycée B
-15% des élèves quittent le lycée B pour le lycée A

Créer une boucle permettant de calculer et d'afficher le nombre d'élèves de chacun des lycées A et B en 2001,2002,2020.

Ce que j'ai fait:

clear
A=2000
B=8000
for i=1:10
    A=A-0.1*A+0.15*B
    B=B-0.15*B+0.1*A
end
disp(A)
disp(B)


Le problème avec ce code, c'est que dans le calcul de B ligne 6, la valeur de A est 3100 (vient de la ligne 5) alors qu'il faudrait qu'elle soit de 3000 pour que le calcul soit juste au rang 1.

Posté par
Froggy
re : Problème sur scilab 16-12-14 à 16:56

Je me suis trompé, il s'agit de 3000(au lieu de 3100) et de 2000(au lieu de 3000) dans ma dernière phrase.

Posté par
Froggy
re : Problème sur scilab 16-12-14 à 16:57

J'ai mis i=1:10 par défaut, pour tester le code.

Posté par
J-P Posteur d'énigmes
re : Problème sur scilab 16-12-14 à 17:23

Voila un algo fait pour Algobox ...

Mais, il te fera comprendre ce qui ne va pas dans le tien.


VARIABLES
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
Annee EST_DU_TYPE NOMBRE
tempo EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
A PREND_LA_VALEUR 2000
B PREND_LA_VALEUR 8000
POUR Annee ALLANT_DE 2001 A 2020
	DEBUT_POUR
	tempo PREND_LA_VALEUR A
	A PREND_LA_VALEUR 0.9 * A + 0.15 * B
	B PREND_LA_VALEUR 0.85 * B + 0.1 * tempo
	SI (Annee == 2001 ou Annee == 2002 ou Annee ==2020) ALORS
		DEBUT_SI
		AFFICHER "En l'année"
		AFFICHER* Annee
		AFFICHER "Le Nombre d'élèves dans le lycée A :"
		A PREND_LA_VALEUR floor(A)
		AFFICHER* A
		AFFICHER "Le Nombre d'élèves dans le lycée B :"
		B PREND_LA_VALEUR floor(B)
		AFFICHER* B
		AFFICHER* " "
		FIN_SI
	FIN_POUR
FIN_ALGORITHME

Sauf distraction  

Posté par
J-P Posteur d'énigmes
re : Problème sur scilab 16-12-14 à 17:25

Cogite spécialement sur les 3 lignes :


tempo PREND_LA_VALEUR A
A PREND_LA_VALEUR 0.9 * A + 0.15 * B
B PREND_LA_VALEUR 0.85 * B + 0.1 * tempo 

Posté par
Froggy
re : Problème sur scilab 16-12-14 à 17:50

Merci J-P, super sympa.

Posté par
Froggy
re : Problème sur scilab 16-12-14 à 18:34

Désolé de revenir, mais je n'arrive pas à faire totalement fonctionner le code , j'ai un problème avec l'affichage de A et B en fonction de l'année (que j'ai nommée i).

clear
A=2000
B=8000
  for i=2001:2020
      tempo=A
    A=0.9*A+0.15*B
    B=0.85*B+0.1*tempo
end
if i==2001 | i=2002 | i==2020
    printf("En l'année %d le nombre d'élèves dans le lycée A est %d\n",i,A);
    printf("En l'année %d le nombre d'élèves dans le lycée B est %d\n",i,B);
end




Voici le code d'erreur:



printf("En l'année %d le nombre d'élèves dans le lycée A est %d\n",i,A);
                    !--error 276
Opérateur, virgule ou point-virgule manquant.

-->    printf("En l'année %d le nombre d'élèves dans le lycée B est %d\n",i,B);
                    !--error 276
Opérateur, virgule ou point-virgule manquant.

-->end
  !--error 34
Syntaxe de l'instruction de contrôle erronée

Posté par
Froggy
re : Problème sur scilab 16-12-14 à 21:00

Problème résolu, encore mer J-P.

Voici le code au cas où qqu aurait le même problème

clear
A=2000
B=8000
  for i=2001:2020
      tempo=A;
    A=0.9*A+0.15*B;
    B=0.85*B+0.1*tempo;
    
    if i==2001 | i==2002 | i==2020
    printf("Annee %d : le nombre etudiants dans le lycee A est %d\n",i,A)
    printf("Année %d : le nombre etudiants dans le lycee B est %d\n",i,B)
       end
end

Posté par
Froggy
re : Problème sur scilab 16-12-14 à 21:01

C'était un problème d'accent

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


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

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 !