PASCAL : Tester l’existence ou non d’un mot donné [Résolu]

Signaler
Messages postés
3
Date d'inscription
dimanche 18 février 2018
Statut
Membre
Dernière intervention
18 février 2018
-
Messages postés
3
Date d'inscription
dimanche 18 février 2018
Statut
Membre
Dernière intervention
18 février 2018
-
Bonjour, j'ai besoin d'aide s'il vous plaît, il n'affiche pas le resultat.. j'ai rencontré une erreur de compilation de ma code, mais cette erreur c'est une ( runtime error 3 )
Correspond : ----> PATH NOT FOUND !
Mais le chemin est totalement vrai !!! :(

Runtime error 3 at $00401672
$00401672
$0040185A
$00407261



------------------
(program exited with code: 3)



-- ÉNONCÉS :
Etant donné un fichier de texte contenant un ensemble de lignes. Il est demandé de chercher
pour chaque ligne, l’existence ou non d’un mot donné et d’afficher suivant le cas l'un des
messages suivants :
Le mot (mot) existe dans ligne (i) ou le mot (mot) n’existe pas dans ligne (i)


PROGRAM ex1 ;
USES WinCrt ;

VAR ft : text ; 
mot :  string ;
i : integer ;

FUNCTION CHERCHE(VAR ft : text ; ch : STRING) : BOOLEAN ;
VAR p : integer ; 
mot2, ligne : string ;
OK : Boolean ;
BEGIN
 Assign(ft,'C:\Users\mongi\Desktop\Enoncés (training pascal)\paragraphe.txt') ;
 Reset(ft) ;
  OK := false ;
  WHILE NOT(OK) AND NOT eof(ft) DO
  BEGIN
   Readln(ft,Ligne) ;
   p := pos(' ',Ligne) ;
   mot2 := copy(Ligne, 1, p-1) ;
   Delete(Ligne, 1, p+1) ;
   OK := (ch = mot2) ;   
  END;
  CHERCHE := OK ;
END;

{-------------------------------------------------------------} 

FUNCTION verif_mot( ch : string) : boolean ;
VAR OK : boolean;
k : integer; 
BEGIN
OK := FALSE ;
 FOR k := 1 TO length(ch) DO
 OK := ch[k] in ['A'..'Z' , 'a'..'z'] ;
 
VERIF_MOT := OK ;
END;

{-------------------------------------------------------------} 

BEGIN
 REPEAT
  Writeln('Tapez un mot : ') ;
  Readln(mot) ;
 UNTIL VERIF_MOT(mot) = TRUE ;
 
 i := 0;
 IF CHERCHE(ft,mot) THEN
 BEGIN
  i := i+1 ;
  Writeln('Le mot ',mot,' existe dans ligne ',i )
 END
  ELSE
   Writeln('Le mot ',mot,' n’existe pas dans ce fichier !! ') ;
END.

2 réponses

Messages postés
16142
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 avril 2020
92
Bonjour,

"une erreur de compilation de ma code, mais cette erreur c'est une ( runtime error 3 )"
Si c'est une erreur de compilation ce n'est pas une erreur de runtime ! Ou alors c'est ton compilateur qui a planté, indépendamment du code qu'il compile...

En partant de l'hypothèse que c'est effectivement une erreur d'exécution lié à ton nom de fichier, essayes ceci :
  • renommes ton fichier, en enlevant l'accent 'é' de 'Enoncés'
  • remplaces les \ par des /
Messages postés
3
Date d'inscription
dimanche 18 février 2018
Statut
Membre
Dernière intervention
18 février 2018

Merci beaucoup pour votre aide.. D'après quelques modification le problème est résolu et mon code est marche bien maintenant ! :)

PROGRAM ex1 ;
USES WinCrt ;

VAR ft : text ; 
mot :  string ;

{-------------------------------------------------------------} 

PROCEDURE affiche(VAR ft: text ; mot : string) ;
VAR i : integer ;
Ligne : string ;
BEGIN
Assign(ft,'C:\Users\mongi\Desktop\Enonces (training pascal)\paragraphe.txt') ;
Reset(ft) ;
i := 0;
 WHILE NOT eof(ft) DO
 BEGIN
 Readln(ft,Ligne) ;
 i := i+1 ;
  IF POS(mot,Ligne)<>0 THEN
   Writeln('Le mot ',mot,' existe dans ligne ',i )
   ELSE   Writeln('Le mot ',mot,' n’existe pas dans ce fichier !! ') ;
 END;
END;

{-------------------------------------------------------------}
FUNCTION verif_mot( ch : string) : boolean ;
VAR OK : boolean;
k : integer; 
BEGIN
OK := FALSE ;
 FOR k := 1 TO length(ch) DO
 BEGIN
 OK := ch[k] in ['A'..'Z' , 'a'..'z'] ;
 END;
VERIF_MOT := OK ;
END;

{-------------------------------------------------------------} 

BEGIN
 REPEAT
  Writeln('Tapez un mot : ') ;
  Readln(mot) ;
 UNTIL VERIF_MOT(mot) = TRUE ;
 
 AFFICHE(ft,mot) ;
END.
Messages postés
195
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
26 février 2020
1
Une petite modification, en effet comme tu procède tu ne trouveras qu'une seule occurrence du mot recherché. et non pas une suite de ligne qui devrait être affichées. la variable i sera soit égale à zéro ou à un mais jamais deux.
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 avril 2020
374
Bonjour, je me suis permis de déplacer ton message, en effet il me semble que ça n'était pas adressé à KX....
Messages postés
3
Date d'inscription
dimanche 18 février 2018
Statut
Membre
Dernière intervention
18 février 2018

Merci beaucoup à tous.. :)