Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------------------
- -- * sommeslettres.adb
- -- * Role : calculer la somme des lettres d'un mot (avec ' '=0, a=1, b=2, ..., z=26) en affichant un tableau detaillé
- -- * Exemple : Screenshot : http://puu.sh/1czL9
- ----------------------------------------------------------------
- with entrees_sorties; use entrees_sorties; -- librairie de l'université
- with Ada.Strings.Fixed; use Ada.Strings.Fixed; -- permet de convertir une chaîne de caractères en minuscules
- with Ada.Strings.Maps.Constants; use Ada.Strings.Maps.Constants; -- ça aussi.
- procedure sommelettres is
- tableLettres : String := " abcdefghijklmnopqrstuvwxyz"; -- la liste des lettres dans l'ordre alpha
- motEntre : String(1..255); -- le mot entré devra être compris entre 1 et 255 lettres
- i : Integer;
- len : Integer;
- somme : Integer := 0;
- procedure drawLongLine(lineLength : Integer) is -- permet de tracer les lignes du tableau récap.
- k :Integer := 0;
- begin
- put(" |");
- while(k < lineLength) loop
- if((k+1) < lineLength) then
- put("----");
- else
- put("---");
- end if;
- k := k + 1;
- end loop;
- put('|');
- new_line;
- end drawLongLine;
- procedure drawSpaces(nbSpaces : Integer) is -- écrit n "espaces"
- m : Integer;
- begin
- m := 0;
- while(m < nbSpaces) loop
- put(' ');
- m := m + 1;
- end loop;
- end drawSpaces;
- procedure drawSep(spaces : Integer) is -- écrit un "|" entouré de n "espaces"
- begin
- drawSpaces(spaces);
- put('|');
- drawSpaces(spaces);
- end drawSep;
- function getValeurLettre(c : Character) return Integer is -- retourne la valeur numérique d'une lettre
- j : Integer := 1;
- toReturn : Integer := 0;
- begin
- while(j <= tableLettres'Length) loop
- if(c = tableLettres(j)) then
- toReturn := j - 1;
- end if;
- j := j+1;
- end loop;
- return toReturn;
- end getValeurLettre;
- begin
- put("Entrez le mot a calculer : ");
- get_line(motEntre, len); -- le mot entré est stocké dans "motEntre" et sa taille l'est dans "len"
- motEntre := Translate(motEntre, Lower_Case_Map); -- la fonction "Translate" de "Ada.Strings.Fixed" permet de convertir en minuscules une chaîne de caractères.
- new_line;
- i := 1;
- drawLongLine(len);
- drawSep(1);
- while (i <= len) loop -- écriture de la première ligne du tableau => lettres du mot
- put(motEntre(i));
- drawSep(1);
- i := i + 1;
- end loop;
- new_line;
- i := 1;
- drawSep(1);
- while (i <= len) loop -- écriture de la seconde ligne du tableau => valeurs des lettres du mot
- somme := somme + getValeurLettre(motEntre(i)); -- calcul progressif de la somme
- put(getValeurLettre(motEntre(i)), 0);
- if(getValeurLettre(motEntre(i)) >= 10) then
- put("| ");
- else
- drawSep(1);
- end if;
- i := i + 1;
- end loop;
- new_line;
- drawLongLine(len);
- new_line;
- put("Somme : "); -- affichage de la somme en fin de script.
- put(somme, 0);
- end sommelettres;
Advertisement
Add Comment
Please, Sign In to add comment