Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2012, 20h55   #1
Naindev
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 0
Points : 0
Par défaut Exercices avec chaînes de caractères sans utiliser les fonctions standard du langage

Bonsoir,

Je suis en train de m'attarder sur une série d'exercices qui travaillent avec des chaînes de caractères, et le plus souvent avec les caractères de cette chaîne.

pour le moment, j'aimerais que vous m'aidiez, si possible, afin de lire les caractères, un à un, d'une chaîne de caractères, sans utiliser les fonctions présentes ici ? Par la suite, si je me vois à d'autres difficultés, c'est pour éviter de créer d'autres topics que ce thread est nommé ainsi

Merci d'avance.
Naindev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 21h16   #2
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 416
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 416
Points : 3 771
Points : 3 771
Xeo,

Pourquoi ne veux-tu pas utiliser les fonctions standards de Pascal ?

Si elles existent, c'est bien pour qu'on les utilise.
__________________
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 21h23   #3
Naindev
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 0
Points : 0
Car nous sommes censés travailler qu'à partir ce qui nous a été transmis en cours, et ces fonctions ne remplissent pas ce critère.
Naindev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 11h59   #4
Alcatîz
Responsable Pascal

 
Avatar de Alcatîz
 
Homme Jean-Luc Gofflot
Ressources humaines
Inscription : mars 2003
Messages : 5 512
Détails du profil
Informations personnelles :
Nom : Homme Jean-Luc Gofflot
Âge : 46
Localisation : Belgique

Informations professionnelles :
Activité : Ressources humaines
Secteur : Service public

Informations forums :
Inscription : mars 2003
Messages : 5 512
Points : 39 398
Points : 39 398
Envoyer un message via ICQ à Alcatîz Envoyer un message via MSN à Alcatîz Envoyer un message via Yahoo à Alcatîz Envoyer un message via Skype™ à Alcatîz
Bonjour,

Pour lire successivement tous les caractères d'une chaîne de type string, il faut d'abord récupérer sa longueur, qui est stockée dans le 1er octet (d'indice 0). Ensuite, tu crées une boucle dont le compteur va de 1 à la longueur ; à chaque itération, chaine[compteur] est le caractère à lire.

__________________
Règles du forum
Tutoriels, exercices, FAQ, sources, compilateurs, outils, livres Pascal
Mes tutoriels et sources Pascal
FAQ Assembleur

Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
Alcatîz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 13h14   #5
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 416
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 416
Points : 3 771
Points : 3 771
Mio,
Citation:
Envoyé par Alcatîz Voir le message
Bonjour,

Pour lire successivement tous les caractères d'une chaîne de type string, il faut d'abord récupérer sa longueur, qui est stockée dans le 1er octet (d'indice 0). Ensuite, tu crées une boucle dont le compteur va de 1 à la longueur ; à chaque itération, chaine[compteur] est le caractère à lire.

Attention, ce n'est vrai que pour les String de TP, et les ShortString pour les compilateurs plus récents (Delphi, FreePascal).

Mais je trouve cet exercice bizarre, sauf si le prof a donné des indications pour trouver la longueur, sinon, un débutant n'a aucun moyen de la trouver, sauf à passer pas mal de temps à débuger, ce qui n'est pas évident quand on débute (déjà, il faut savoir de quoi il s'agit, et comment faire).
__________________
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 15h29   #6
EtherOS
Membre habitué
 
Avatar de EtherOS
 
Homme Lionel Tidjon
Etudiant Polytechnicien
Inscription : juillet 2012
Messages : 51
Détails du profil
Informations personnelles :
Nom : Homme Lionel Tidjon
Localisation : Cameroun

Informations professionnelles :
Activité : Etudiant Polytechnicien
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2012
Messages : 51
Points : 110
Points : 110
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
Uses Crt;
 
Const BUFFER = 100;
 
Function  Mychar (Var Arraystring : string[BUFFER]; Initpos, size: Longint):string[BUFFER] ;
Var  count : Longint;
      T : array[1..BUFFER] of String[1];
 
Begin
              Mychar := '';      
 
              For count:= Initpos To Initpos+size -1 Do
 
              Begin
                    T[count-Initpos + 1] := Arraystring[count];
 
                End;
 
                Mychar := T;
End;  
 
Var arraychar: string[BUFFER];
 
Begin
             Textbackground(1); 
             clrscr;
             Textcolor(10);
             writeln('Entrer une chaine de caracteres :');
             Textcolor(11);
             readln(arraychar);
             Textcolor(10);
             writeln('le deuxieme caractere est :',Mychar(arraychar,2,1));
             readln;
End.
EtherOS est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 31/12/2012, 16h21   #7
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 416
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 416
Points : 3 771
Points : 3 771
Joe,
Citation:
Envoyé par EtherOS Voir le message
Uses Crt;

Const BUFFER = 100;

Function Mychar (Var Arraystring : string[BUFFER]; Initpos, size: Longint):string[BUFFER] ;
Var count : Longint;
T : array[1..BUFFER] of String[1];

Begin
Mychar := '';

For count:= Initpos To Initpos+size -1 Do

Begin
T[count-Initpos + 1] := Arraystring[count];

End;

Mychar := T;
End;

Var arraychar: string[BUFFER];

Begin
Textbackground(1);
clrscr;
Textcolor(10);
writeln('Entrer une chaine de caracteres :');
Textcolor(11);
readln(arraychar);
Textcolor(10);
writeln('le deuxieme caractere est :',Mychar(arraychar,2,1));
readln;
End.
Prends l'habitude de formater ton code, c'est fait pour faciliter la lecture (et donc la maintenance ...)

Ceci étant dit :

1 - Le but du forum n'est pas de fournir du code "clé en mains", mais d'aider à progresser

2 - ton code est plus compliqué que nécessaire.

3 - Pour afficher ton code avec la mise en surbrillance (couleur, ...), il faut l'encadrer avec les balises [*code] [*/code] [sans les *, qui ne sont là que pour les invalider, et non avec les balises [QUOTE], ce qui t'a obligé à faire manuellement cette mise en couleurs.
__________________
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 22h26   #8
Naindev
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 0
Points : 0
Citation:
Envoyé par droggo Voir le message
Mais je trouve cet exercice bizarre, sauf si le prof a donné des indications pour trouver la longueur, [...]
Aucun. En parlant du prof, c'est vrai que ces exercices sont bizarres. Je dis ça car je ne trouve aucune utilité d'un exercice qui demande à afficher une phrase 10000 fois sans utiliser de boucle...
Citation:
Envoyé par Alcatîz Voir le message
Bonjour,

Pour lire successivement tous les caractères d'une chaîne de type string, il faut d'abord récupérer sa longueur, qui est stockée dans le 1er octet (d'indice 0). Ensuite, tu crées une boucle dont le compteur va de 1 à la longueur ; à chaque itération, chaine[compteur] est le caractère à lire.

J'en profite pour te demander comment procéder pour soutirer les informations stockées dans tel ou tel octet d'un objet.

Merci à vous.
Naindev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 18h56   #9
Alcatîz
Responsable Pascal

 
Avatar de Alcatîz
 
Homme Jean-Luc Gofflot
Ressources humaines
Inscription : mars 2003
Messages : 5 512
Détails du profil
Informations personnelles :
Nom : Homme Jean-Luc Gofflot
Âge : 46
Localisation : Belgique

Informations professionnelles :
Activité : Ressources humaines
Secteur : Service public

Informations forums :
Inscription : mars 2003
Messages : 5 512
Points : 39 398
Points : 39 398
Envoyer un message via ICQ à Alcatîz Envoyer un message via MSN à Alcatîz Envoyer un message via Yahoo à Alcatîz Envoyer un message via Skype™ à Alcatîz
L'exemple 14 de ce cours montre comment référencer un caractère particulier dans une chaîne.
__________________
Règles du forum
Tutoriels, exercices, FAQ, sources, compilateurs, outils, livres Pascal
Mes tutoriels et sources Pascal
FAQ Assembleur

Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
Alcatîz est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/01/2013, 22h09   #10
EpiTouille
Membre expérimenté
 
Avatar de EpiTouille
 
Homme Titouan Créac'h
Epitech
Inscription : mai 2009
Messages : 250
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 19
Localisation : France

Informations professionnelles :
Activité : Epitech

Informations forums :
Inscription : mai 2009
Messages : 250
Points : 529
Points : 529
voici un exemple de la fonction qui trouve la taille de la chaine

Code :
1
2
3
4
5
 
function my_strlen(s : string) : byte;
begin
   my_strlen := ord(s[0]);
end;
EpiTouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h42.


 
 
 
 
Partenaires

Hébergement Web