Se connecter avec
S'enregistrer | Connectez-vous

type caractère (ADA)

Dernière réponse : dans Programmation

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

Autres pages sur : type caractere ada

Lassé par la pub ? Créez un compte

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 !

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 ?

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde