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

Messages postés
3
Date d'inscription
dimanche 18 février 2018
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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
15869
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 décembre 2018
1
Merci
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 /

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

IAML_Coding
Messages postés
3
Date d'inscription
dimanche 18 février 2018
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.
Commenter la réponse de KX
Messages postés
175
Date d'inscription
lundi 22 avril 2013
Dernière intervention
30 octobre 2018
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Whismeril
Messages postés
12409
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
Bonjour, je me suis permis de déplacer ton message, en effet il me semble que ça n'était pas adressé à KX....
IAML_Coding
Messages postés
3
Date d'inscription
dimanche 18 février 2018
Dernière intervention
18 février 2018
-
Merci beaucoup à tous.. :)
Commenter la réponse de denisbertin

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.