Précédent   Forum des professionnels en informatique > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/05/2011, 14h38   #1
 
Femme marjorie
Inscription : décembre 2010
Messages : 34
Détails du profil
Informations personnelles :
Nom : Femme marjorie
Localisation : France

Informations forums :
Inscription : décembre 2010
Messages : 34
Points : -5
Points : -5
Par défaut Afficher les noms des mois

Bonjour a tous!!
j'ai cet exercice:
ecrire un programme en pascal qui lit l'ordre de mois et affiche le nom du mois correspondant:
exemple: le mois 1 cad janvier
le mois 2 cad fevrier

mon idée c'est d'utiliser la structure cas of et j'aurais:
corrigez moi s'il vous plait:
Code :
1
2
3
4
5
6
7
8
9
 
var c:integer;
case c of
1:   write("janvier");
2:   write("fevrier");
3:   write("mars");
4:   write("avril");
5:   write("mai");
.........
brunetta24 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 08/05/2011, 16h48   #2
Membre émérite
 
Avatar de Dr.Who
 
Inscription : septembre 2009
Messages : 831
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : septembre 2009
Messages : 831
Points : 913
Points : 913
on peux utiliser un case of ... en effet, mais ça alourdis le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
program Month;
 
uses
  SysUtils;
 
const
  cMonthNames: array[1..12] of string= (
    'janvier',
    'fevrier',
    'mars',
    'avril',
    'mai',
    'juin',
    'juillet',
    'aout',
    'septembre',
    'octobre',
    'novembre',
    'decembre'
  );
 
 
function getMonthName(aDate: TDateTime): string;
var Y,M,D: word;
begin
  decodeDate(aDate, Y, M, D);
  result := cMonthNames[M];
end;
 
begin
  writeLn(getMonthName(now));
  readln;
end.
__________________
[ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
Ma messagerie n'est pas la succursale du forum... merci!
Dr.Who est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/05/2011, 12h53   #3
Rédacteur
 
Avatar de darrylsite
 
Inscription : juillet 2007
Messages : 1 287
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 1 287
Points : 1 756
Points : 1 756
Salut,
je crois qu'il cherchait seulement un truc du genre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
program Month;
 
const
  cMonthNames: array[1..12] of string= ('janvier', 'fevrier', 'mars',
                                                       'avril', 'mai', 'juin', 'juillet',
                                                       'aout', 'septembre', 'octobre',
                                                       'novembre', 'decembre');
 
var month;
 
function getMonthName(byte m): string;
begin
  getMonthName := cMonthNames[m];
end;
 
begin
  readln(month);
  writeLn(getMonthName(month));
  readln;
end.
darrylsite est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/05/2011, 22h18   #4
Membre habitué
 
Avatar de joreveur
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2010
Messages : 142
Points : 127
Points : 127
bonjour

par une boucle :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program lesmois;
 var mois : array[1..12] of string = (
	'janvier', 'fevrier', 'mars',
	'avril', 'mai', 'juin', 'juillet',
	'aout', 'septembre', 'octobre',
	'novembre', 'decembre' );
 
 i:integer;  
 
begin
  for i:=1 to 12 do
  begin
	writeln(i,' ',mois[i]);
  end;
  readln;
end.
ça m'a permis de réinstaller FreePascal sur mon pc ...
joreveur est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/05/2011, 15h18   #5
 
Femme marjorie
Inscription : décembre 2010
Messages : 34
Détails du profil
Informations personnelles :
Nom : Femme marjorie
Localisation : France

Informations forums :
Inscription : décembre 2010
Messages : 34
Points : -5
Points : -5
Par défaut re

Bonjour:
Corrigez moi SVP:

Code :
1
2
3
4
5
6
7
8
9
Program mois;
Var m:integer;
Begin 
    readln(m);
    if m=1 then write('janvier');
    if m=2 then write('fevrier');
    if m=3 then write('mars');
   ................................. jusqu'à m=12
End.
brunetta24 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/05/2011, 19h27   #6
Membre habitué
 
Avatar de joreveur
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2010
Messages : 142
Points : 127
Points : 127
bonjour,

voila en reprenant ton code, mais ce n'est pas la meilleure méthode.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Program mois;
Var m:integer;
Begin 
    write('num de mois ? ');
    readln(m);
    writeln;
    if m=1 then writeln('janvier');
    if m=2 then writeln('fevrier');
    if m=3 then writeln('mars');
   //................................. jusqu'à m=12
   writeln('programme terminé ');
End.
bonne continuation
joreveur est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 13/12/2011, 21h32   #7
Membre du Club
 
Homme
Webmaster
Inscription : mars 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : mars 2011
Messages : 33
Points : 41
Points : 41
Citation:
Envoyé par brunetta24 Voir le message
Bonjour:
Corrigez moi SVP:

Code :
1
2
3
4
5
6
7
8
9
Program mois;
Var m:integer;
Begin 
    readln(m);
    if m=1 then write('janvier');
    if m=2 then write('fevrier');
    if m=3 then write('mars');
   ................................. jusqu'à m=12
End.

Il est juste votre programme mais le problème c'est quand vous tapez 1, la machine test la 1er condition elle trouve vraie et elle affiche Janvier, mais elle vas continuer le test jusqu'à m=12.
pour corriger il faut mettre à partir de m=2 un else if, comme ça dés qu'il trouve le test de la condition vrai elle ignore les autres et vous gagnerez quelque millisecondes, et aussi à la fin faut mettre un else comme ça vous affichera un message d'erreur si il tape une valeur qui n'appartient pas à l'intervalle [1;12].


Espérant que je vous ai aidé.
Devildz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 17h32   #8
Expert Confirmé
 
Inscription : août 2006
Messages : 3 195
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 195
Points : 3 341
Points : 3 341
Xoe,

Tant qu'à vouloir corriger u, code, autant en proposer un plus "propre".

Dans le cas présent, il faut penser à utiliser un tableau.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h45.


 
 
 
 
Partenaires

Hébergement Web