Cours:TabCharCorrection : Différence entre versions
(7 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | ||
<source lang=cpp> | <source lang=cpp> | ||
+ | #include <iostream> | ||
+ | #include <string.h> | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | void toUppperCase(char & c) // passage par référence | ||
+ | { | ||
+ | if ((c>='a')and(c<='z')) c-=32; | ||
+ | } | ||
+ | |||
+ | void upperFirstLetter(const char message[]) // passage par pointeur : un tableau se comporte de façon analogue à un pointeur | ||
+ | { | ||
+ | toUppperCase(message[0]); | ||
+ | for (int i=1;i<strlen(message);i++) | ||
+ | { | ||
+ | if (message[i-1]==' ') toUppperCase(message[i]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void histogramme(char message[]) | ||
+ | { | ||
+ | int nbOccurenceLettres[26]; | ||
+ | for (int numLettre=0;numLettre<26;numLettre++) nbOccurenceLettres[numLettre]=0; | ||
+ | for (int i=0;i<strlen(message);i++) | ||
+ | { | ||
+ | char caractere=message[i]; | ||
+ | if ((caractere>='a')and(caractere<='z')) | ||
+ | { | ||
+ | int numLettre = caractere - 'a'; | ||
+ | nbOccurenceLettres[numLettre]++; | ||
+ | } | ||
+ | if ((caractere>='A')and(caractere<='Z')) nbOccurenceLettres[caractere-'A']++; | ||
+ | } | ||
+ | |||
+ | for (int numLettre=0;numLettre<26;numLettre++) cout << (char) (numLettre+'a') <<" : "<<nbOccurenceLettres[numLettre]<<" "; | ||
+ | cout <<endl; | ||
+ | } | ||
+ | |||
+ | |||
+ | int main() | ||
+ | { | ||
+ | char saisie[100]; | ||
+ | //lecture d'une ligne : | ||
+ | cout << "saisir un message :"; | ||
+ | cin.getline(saisie,100); | ||
+ | upperFirstLetter(saisie); | ||
+ | cout << saisie<<endl; | ||
+ | histogramme(saisie); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
</source> | </source> |
Version actuelle datée du 5 décembre 2022 à 20:52
#include <iostream>
#include <string.h>
using namespace std;
void toUppperCase(char & c) // passage par référence
{
if ((c>='a')and(c<='z')) c-=32;
}
void upperFirstLetter(const char message[]) // passage par pointeur : un tableau se comporte de façon analogue à un pointeur
{
toUppperCase(message[0]);
for (int i=1;i<strlen(message);i++)
{
if (message[i-1]==' ') toUppperCase(message[i]);
}
}
void histogramme(char message[])
{
int nbOccurenceLettres[26];
for (int numLettre=0;numLettre<26;numLettre++) nbOccurenceLettres[numLettre]=0;
for (int i=0;i<strlen(message);i++)
{
char caractere=message[i];
if ((caractere>='a')and(caractere<='z'))
{
int numLettre = caractere - 'a';
nbOccurenceLettres[numLettre]++;
}
if ((caractere>='A')and(caractere<='Z')) nbOccurenceLettres[caractere-'A']++;
}
for (int numLettre=0;numLettre<26;numLettre++) cout << (char) (numLettre+'a') <<" : "<<nbOccurenceLettres[numLettre]<<" ";
cout <<endl;
}
int main()
{
char saisie[100];
//lecture d'une ligne :
cout << "saisir un message :";
cin.getline(saisie,100);
upperFirstLetter(saisie);
cout << saisie<<endl;
histogramme(saisie);
return 0;
}