Petite aide C++

Signaler
Messages postés
2
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
22 avril 2005
-
Messages postés
2
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
22 avril 2005
-
Salut,

Voici un prgm pr afficher dans une ligne la fréquence d'apparition des lettres :

#include // cin, cout
#include // setw
#include <string.h> // strlen
#include <ctype.h> // islower, isupper
void main()
{
char line[81]; // ligne de saisie
char let[4] = "aA "; // pour la barre des lettres
int flet[26] = {0}; // fr‚quence des caractŠres
unsigned len; // nombre de caractŠres saisis
int i; // variable de contr“le
cout << "\033[2J\n\n"
"-- DETERMINATION DE LA FREQUENCE DES LETTRES D'UNE CHAINE --"
"\n\nVeuillez taper votre texte "
"(max. 80 caractŠres, terminer par <ENTREE>) :\n\n";
cin.getline(line,81); // lit les caractŠres tap‚s
len = strlen(line); // calcule le nombre de caractŠres tap‚s
for (i = 0; i < len; i++) // examine les caractŠres
{
if(islower(line[i])) // si minuscule
flet[line[i]-'a']++; // met … jour la fr‚quence
else if (isupper(line[i])) // si majuscule
flet[line[i]-'A']++; // met … jour la fr‚quence
}
cout << "\n\n";
for (i = 0; i < 26; i++) // affiche les lettres de l'alphabet
{ // sous forme de barre :
cout << let; // "aA ", "bB " etc.
let[0]++; // caractŠre suivant : a->b, b->c etc.
let[1]++; // caractŠre suivant : A->B, B->C etc.
}
cout << "\n";
for (i = 0; i < 26; i++) // affiche la fr‚quence de chaque
cout << setw(2) << flet[i] << " "; // lettre
}

Je ne comprend pas comment le code en bleu ( pour afficher les lettres aA bB cC ...) fonctionne puisqu'on ne déclare que : char let[4] = "aA ";

Il y a t-il une histoire d'adresse ASCII la-dessous ?

Si quelqu'un pouvait me renseigner, ce serait vraiment sympa...

A +

EhJeune

3 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
for (i = 0; i < 26; i++) // affiche les lettres de l'alphabet

{
// sous forme de barre :
cout <<
let;
// "aA ", "bB " etc.

let[0]++;
// caractŠre suivant : a->b, b->c etc.

let[1]++;
// caractŠre suivant : A->B, B->C etc.
}



et bien a chaque itération il incrémente le code ascii du premier
caractère de let ou le deuxième caractère, si bien qu'il passe en revu
l'ensemble de l'alphabet minuscule et majuscule.
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
En fait c'est tout con.
La ligne en bleu incremente un charactère.
Un peu comme elle le ferait avec un entier.

Pour t'en convaincre essaye ca :


#include


using
namespace std;


int main()
{

int i;

char lettre = 'a';





for (i=0;i<26;i++)
{
cout << lettre << endl;
lettre++;
}



return 0;
}

Shell
Messages postés
2
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
22 avril 2005

Nickel, c'est très clair, merci bien.