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

IAML_Coding 3 Messages postés dimanche 18 février 2018Date d'inscription 18 février 2018 Dernière intervention - 18 févr. 2018 à 01:09 - Dernière réponse : IAML_Coding 3 Messages postés dimanche 18 février 2018Date d'inscription 18 février 2018 Dernière intervention
- 18 févr. 2018 à 15:18
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

5 réponses

Meilleure réponse
KX 15557 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 18 juin 2018 Dernière intervention - 18 févr. 2018 à 09:21
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 /

Merci KX 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

IAML_Coding 3 Messages postés dimanche 18 février 2018Date d'inscription 18 février 2018 Dernière intervention - 18 févr. 2018 à 15:05
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
Meilleure réponse
denisbertin 170 Messages postés lundi 22 avril 2013Date d'inscription 5 juin 2018 Dernière intervention - Modifié par denisbertin le 18/02/2018 à 11:42
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.

Merci denisbertin 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Whismeril 11624 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 18 févr. 2018 à 12:00
Bonjour, je me suis permis de déplacer ton message, en effet il me semble que ça n'était pas adressé à KX....
IAML_Coding 3 Messages postés dimanche 18 février 2018Date d'inscription 18 février 2018 Dernière intervention - 18 févr. 2018 à 15:18
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.