+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2012
    Messages : 17
    Points : 0
    Points
    0

    Par défaut Erreur de compilation : Illegal expression

    Bonjour, je n'arrive pas à trouver mes erreurs avec l'aide du compilateur:
    MERCI de m'aider

    Il est marqué: (22;1) Error: Illegal expression et sur la meme ligne encore
    (22;10) Fatal: Syntax error, ";" expected but "identifier ESTUNEFAUSSEDATE" found

    A cette ligne, sur on compilateur j'ai:
    function estUneFausseDate(jour,mois,annee : Integer) : Boolean;
    (je ne vois ou peut etre l'erreur) ???????




    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    program calcule_age;
     
    function estUneAnneeBissextile(annee : Integer) : Boolean;
    begin
    	if annee mod 4=0 then
    	     estUneAnneeBissextile:=true
    	else
    	      estUneAnneeBissextile:=false
    end; {estUneAnneeBissextile}
     
     
    function estUnMoisA31Jours(mois : Integer) : Boolean;
    begin
    	case mois of
    	     1,3,5,7,8,10,12 : estUnMoisA31Jours:=true
    	       else  estUnMoisA31Jours:=false;
    end; {estUnMoisA31Jours}
     
     
    function estUneFausseDate(jour,mois,annee : Integer) : Boolean;
    begin
    	if not(estUnMoisA31Jours(mois)) and (jour:=31) then
    	     estUneFausseDate:=true;
    	if mois:=2 and estUneAnneeBissextile(annee) and jour>29 then
    	      estUneFausseDate:=true;
    	if mois:=2 and not(estUneAnneeBissextile(annee)) and jour>28 then
    	       estUneFausseDate:=true
    	else
    	       estUneFausseDate:=false
    end; {estUneFausseDate}
     
     
     
    procedure saisieDate(S jour, mois, annee : Integer);
    var	bJour, bMois, bAnnee : Boolean;
    begin
     
    bJour:=true;
    bMois:=true;
    bAnnee:=true;
     
    repeat
    	repeat
    	        writeln('Entrez le jour :')
    	        readln(jour)
    	        if (jour<1) or (jour>31) then
    		        bJour:=false
    		        writeln('Ce jour est invalide, recommencez svp')
    	 until bJour
    	 repeat
    	         writeln('Ce mois est invalide, recommencez svp')
    	          readln(mois)
    	          if(mois<1) ou (mois>12) then 
    	                  bMois:=false
    		       writeln('Ce mois est invalide, recommencez svp')
    until not(estUneFausseDate(jour,mois,annee))
     
    end; {saisieDate}
     
     
     
    procedure saisie(S jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance : Integer);
    begin 
     
    writeln('Entrez la date actuelle');
    sasieDate(jourActuel, moisActuel, anneeActuelle);
     
    writeln('Entrez votre date de naissance');
    saisieDate(jourDeNaissance, moisDeNaissance,anneeDeNaissance);
     
    end; {saisie}
     
     
    function calculDeLAge(jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance : Integer) : Integer;
    begin
    	if moisActuel>moisDeNaissance then
    	     calculDeLAge:=(anneeActuelle-anneeDeNaissance)
    	else
    	      if moisActuel:=moisDeNaissance then
    		if jourActuel>=jourDeNaissance then
    		      calculDeLAge:=(anneeActuelle-anneeDeNaissance)
    		else
    		       calculDeLAge:=((anneeActuelle-anneeDeNaissance)-1)
    	       else
    		calculDeLAge:=((anneeActuelle-anneeDeNaissance)-1)
     
    end; {calculDeLAge}
     
     
    function ageNegatif(age : Integer) : Boolean;
    begin
    	if age<0 then
    	     ageNegatif:=true
    	else
    	      ageNegatif:=false
    end; {ageNegatif}
     
    procedure affichageAge(age : Integer);
    begin
    	if ageNegatif(age) then
    		writeln('Vous n"êtes pas encore né')
    	else
    		writeln('Vous avez',age,'ans')
     
    end; {affichageAge}
     
     
    procedure ageActuel();
    var	jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance : Integer;
    begin
     
    saisie(jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance);
     
    affichageAge(calculDeLAge(jourActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance));
     
    end. {ageActuel}

  2. #2
    Expert Confirmé Sénior

    Inscrit en
    août 2006
    Messages
    3 577
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 577
    Points : 4 618
    Points
    4 618

    Par défaut

    Koe,

    Il manque un end; pour fermer le case of dans la fonction précédente.

    Code :
    1
    2
    3
    4
    5
    6
    function estUnMoisA31Jours(mois : Integer) : Boolean;
    begin
    case mois of
    1,3,5,7,8,10,12 : estUnMoisA31Jours:=true
    else estUnMoisA31Jours:=false;
    end; {estUnMoisA31Jours}
    La prochaine fois, utilise la balise [CODE] pour encadrer ton programme, afin de le rendre plus lisible.

    Ta fonction estUneAnneeBissextile est fausse.
    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.

  3. #3
    Membre chevronné
    Avatar de EpiTouille
    Homme Profil pro Titouan Créac'h
    Étudiant
    Inscrit en
    mai 2009
    Messages
    332
    Détails du profil
    Informations personnelles :
    Nom : Homme Titouan Créac'h
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 332
    Points : 721
    Points
    721

    Par défaut

    Code :
    if not(estUnMoisA31Jours(mois)) and (jour:=31) then
    Attention ici, là tu affectes 31 à jours et tu regarde si jour est vrai sauf que jour ici n'est pas du type boolean, donc ça ne marchera pas.
    Je pense que tu voulais mettre "jour=31" ce qui semble logique dans ton code

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •