Tom's Guide > Forum > Programmation > type caractère (ADA)
Mot :    Pseudo :           
 

Il faut que j'écrive un programme qui affiche le nombre de lettres majuscules, de lettres minuscules et de chiffres contenus dans une ligne de texte sachant que ces trois groupes de caractères forment des intervalles distincts dans le code LATIN-1.

Je n'arrive pas à cerner le problème, je ne trouve aucun point de départ pour écrire mon algorithme.
Pouvez vous m'aider en me donnant des indications pour éclaircir le problème svp?

Merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

utilise la fonction character'pos('x')

cela te donnera la valeur ASCII de ta lettre.

tu n'a alors plus qu'a comparer les valeurs ASCII des caractères contenu dans ton texte avec les intervales des caracters 'a'..'z' , 'A'..'Z' , '0'..'9' et tu verra a quel interval le caracter appartiendra !

Répondre à Agent00

Mais comment puis je lire les caractères?
Y a til une fonction déjà prévu?
Je ne vois pas comment commencer

Répondre à delphe411

tu dois d'abord ouvrir un fichier (celui contenant ton texte) la fonction a utiliser est : open() (cherche la documentation sur internet)
ensuite pour récupérer une ligne de ton fichier texte tu devra utiliser la fonction : Get_Line() (pareil, cherche la doc sur le net) ou Get() pour un seul caractère.
et à la fin, utilise la fonction : Close()

voila tu devrai pouvoir terminer ton programme avec ce que je t'ai dis.

question : c'est un TP pour l'école ca ?

Répondre à Agent00

J'ai essayer un programme mais il n'est pas encore correct, il ne donne pas le bon résultat mais je ne vois pas pourquoi

Avez vous une idée?

with ada.text_io, ada.integer_text_io;
procedure caractere is
A,B,C: Integer;
ligne : character;
begin
ada.text_io.put("saisir une ligne de texte :" );
ada.text_io.get(ligne);
A:=0;
B:=0;
C:=0;
for X in Character'First..Character'Last loop
if Character'Pos('A')<=Character'Pos(X)
and Character'Pos(X)<=Character'Pos('Z') then
A:=A+1;
end if;
if Character'Pos('a')<=Character'Pos(X)
and Character'Pos(X)<=Character'Pos('z') then
B:=B+1;
end if;
if Character'Pos('0')<=Character'Pos(X)
and Character'Pos(X)<=Character'Pos('9') then
C:=C+1;
end if;
end loop;
Ada.Text_Io.Put("nombre de lettres majuscules :" ); Ada.integer_Text_Io.Put(A);
Ada.Text_Io.new_line;
Ada.Text_Io.Put("nombre de lettres minuscules :" ); Ada.integer_Text_Io.Put(B);
Ada.Text_Io.new_line;
Ada.Text_Io.Put("nombre de chiffres :" ); Ada.integer_Text_Io.Put(C);
Ada.Text_Io.new_line;
end;

pour répondre à ta question, c'est bien un TP pour la fac que j'ai à faire.

Répondre à delphe411
Tom's Guide > Forum > Programmation > type caractère (ADA)
Aller à :

Il y a 2253 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens