Bonjour j'ai un petit soucis avec mon programme...
Après avoir ouvert un fichier-texte j'aimerai pouvoir calculer le nombre de caractère que contient le texte afin de pouvoir calculer le nombre de lignes qu'il contient...
quelqu'un sait m'aider?
Bonjour j'ai un petit soucis avec mon programme...
Après avoir ouvert un fichier-texte j'aimerai pouvoir calculer le nombre de caractère que contient le texte afin de pouvoir calculer le nombre de lignes qu'il contient...
quelqu'un sait m'aider?
Ta question n'est pas claire : un type fichier texte en Pascal est un type fichier 'File of char' qui possède un caractère CR/LF à la fin de chaque ligne.
DONC le fichier texte est déjà structuré sous forme de lignes, inutile par conséquent de compter les caractères pour avoir le nombre de lignes. Le code suivant permet d'obtenir ce nombre de lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Function Nb_Lignes : integer; Var Nom_Fichier : String; Fichier_Source : Text; i: integer; Begin Writeln(' Nom du fichier à ouvrir ? '); Readln(Nom_Fichier); Assign(Fichier_Source,Nom_Fichier); {$i-} reset(Fichier_Source); {$i+} If IOresult<>0 then Begin writeln('Le fichier ', Nom_Fichier, ' n''a pas été trouvé '); readln; Halt; end; i:=1; While not eof(Fichier_Source) do Begin Readln(Fichier_Source); i:=i+1; End; (* lecture fichier *) close(Fichier_Source); {fermeture fichier source} Nb_Lignes := i; End; (* Nb_Lignes *)
Le principe est d'utiliser eoln en effet et de compter les caractères. L'algo est simple.
Si c'est une fonction, deux c'est mieux, pour pouvoir les utiliser séparément.
Si tu utilises une procédure, il faut faire attention aux résultats : variables locales ? Comment les utiliser dans le programme. Si tu modifier l'état de ton fichier, c'est en effet une procédure qu'il te faut.
Bonsoir ,
Je viens de m'apercevoir qu'il y a une erreur dans la fonction que je t'ai donnée : il faut initialiser la variable i à 0 et non pas à 1 comme je l'ai fait (j'avais dû modifier ça pour les besoins d'un programme particulier et je t'ai envoyé la mauvaise version.)
Pour compter les caractères, utilise la fonction Length de TP.
L'algo est quasiment le même que pour le comptage des lignes :
Poste ta solution et je regarderai si ça fonctionne. J'ai aussi une fonction pour ce genre de choses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1) Ouvrir le fichier 2) Tant Que la fin du fichier n''est pas atteinte Faire : a) Lire une ligne du fichier b) Affecter la longueur de la ligne (length) à une variable ('NbCaracteres' par exemple) 3) fermer le fichier.
normalement je sais que ln est prédéfini donc je pensais faire read(ln) mais ça fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while not eoln(fichier_source) do Begin readln(fichier_source); A:=A+1; end; nb_car := A;
relis mon post : je t'ai dit d'utiliser la fonction Length. L'as-tu utilisée ?
d'autre part, il faut faire un Readln sur le fihier texte mais affecter chaque ligne à une variable ('Ligne' ar exemple, c'est original) pour pouvoir lui appliquer la fonction Length.
Ponds un code et je te dirai ce qu'il faut faire faire pour l'améliorer. Je t'ai donné pas mal de pistes, là. Avec l'algo ça devrait normalement t'aider.
En gros je déclare var ligne1,ligne2,ligne3: string
Ensuite pour calculer le nombre de caractère de la ligne je fais
? c'est ce que j'ai compris mais ça m'a l'air faux donc je suppose que j'ai mal compris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 readln(fichier_source) length(ligne1) readln(fichier_source) length(ligne2) etc
La déclaration :
Une boucle pour lire toutes les lignes une par une et calculer leur nombre de caractères :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Nom_Fichier, ligne : String;
lecture et affectation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 While not eof(Fichier_Source) do begin end;
puis dénombrement du nombre de caractères avec length pour chaque ligne. Si c'est un exercice tu aurais dû normalement avoir des cours t'expliquant au moins la lecture d'un fichier, théoriquement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part readln(Fichier_Source, Ligne);
Dans cette partie
Une boucle pour lire toutes les lignes une par une et calculer leur nombre de caractères :
[CODE] While not eof(Fichier_Source) do
begin
end;
Je suppose que je dois mettre quelque chose entre le begin et le end sinon c'est que je comprends pas comment cette boucle lit et calcul
Partager