Cours:TabCharCorrection : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
 
(7 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
<accesscontrol>Acces:Prof</accesscontrol>
+
 
  
 
<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;
}