« Exercices en langage C++/Les tableaux de char » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
m →‎EXERCICE 7 : Ortho.
Guilieb (discussion | contributions)
Correction typographiques, mise en forme de certains exercices
Ligne 1 : Ligne 1 :
<noinclude>{{Exercices en langage C++}}</noinclude>
<noinclude>{{Exercices en langage C++}}</noinclude>


==Les tableaux de char==
== Les tableaux de caractères ==

=== EXERCICE 1 ===
=== Exercice 1 ===
Écrire une fonction qui a en paramètres une chaîne de caractères (paramètre en entrée) et un entier e (paramètre en sortie). Cette fonction renvoie un booléen. La fonction renvoie true si la chaîne de caractères est un entier écrit sous la forme d'une suite de chiffres qui ne commence pas par 0, elle renvoie false sinon. Si la chaîne est correcte, la fonction renvoie dans e la valeur de cet entier.
Écrire une fonction qui a en paramètres une chaîne de caractères (paramètre en entrée) et un entier e (paramètre en sortie). Cette fonction renvoie un booléen. La fonction renvoie true si la chaîne de caractères est un entier écrit sous la forme d'une suite de chiffres qui ne commence pas par 0, elle renvoie false sinon. Si la chaîne est correcte, la fonction renvoie dans e la valeur de cet entier.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =
Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*La validation d'une chaîne de caractères.
* la validation d'une chaîne de caractères ;
*Transformation d'une chaîne vers un autre type.
* transformation d'une chaîne vers un autre type.

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include<iostream>
Ligne 42 : Ligne 44 :
}}
}}


=== EXERCICE 2 ===
=== Exercice 2 ===
Ecrire une fonction qui a en paramètre une chaîne de caractères (paramètre en entrée et en sortie) et qui transforme toutes les minuscules de la chaîne en majuscules.
Écrire une fonction qui a en paramètre une chaîne de caractères (paramètre en entrée et en sortie) et qui transforme toutes les minuscules de la chaîne en majuscules.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =
Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*Transformation d'une chaîne de caractrères.
* transformation d'une chaîne de caractères ;
*Majuscules et minuscules.
* majuscules et minuscules.

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include <iostream>
using namespace std;


void minmaj(char t[])
void minusculesVersMajuscules(char chaine[]) {
int compteur = 0;
{
int i=0;
// Le caractère de la chaîne n’est pas le marqueur terminal
while(t[i]!='\0')
while(chaine[compteur] != '\0') {
{
if(t[i]>='a' && t[i]<='z')t[i]=t[i]+('A'-'a');
// Le caractères est une minuscule
i++;
if(chaine[compteur] >= 'a' && chaine[compteur] <= 'z') {
}
chaine[compteur] = chaine[compteur] + ('A'-'a');
}
compteur++; // Pour accéder au caractère suivant
}
}
}


int main()
int main() {

{
char a[50];
char chaine[255];
cout<<"Tapez une chaine svp :";cin>>a;
std::cout << "Tapez une chaîne de caractères à transposer en majuscules : ";
minmaj(a);
std::cin >> chaine;
cout<<"La chaine finale est :"<<a<<endl;
return 0;
std::cout << chaine;
minusculesVersMajuscules(chaine);
std::cout << "La même chaîne en majuscules est : " << chaine << std::endl;
return EXIT_SUCCESS;
}
}
</source>
</source>
}}
}}


=== EXERCICE 3 ===
=== Exercice 3 ===
Ecrire une fonction qui a en paramètre une chaîne de caractères (paramètre en entrée et en sortie) et qui supprime toutes les voyelles.
Écrire une fonction qui a en paramètre une chaîne de caractères (paramètre en entrée et en sortie) et qui supprime toutes les voyelles.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =


<source lang=cpp>
<source lang=cpp>
- y est une voyelle dans ce programme
* y est une voyelle dans ce programme ;
- la phrase peut contenir des espaces mais doit avoir moins de 80 caractères incluant le '\0'
* la phrase peut contenir des espaces mais doit avoir moins de 80 caractères incluant le '\0' ;
- Si une voyelle à un accent, elle sera traité comme une consonne (tout comme une voyelle majuscule)
* Si une voyelle à un accent, elle sera traité comme une consonne (tout comme une voyelle majuscule) ;
- La voyelle est remplacée par un . pour afficher la suppression de la voyelle
* La voyelle est remplacée par un . pour afficher la suppression de la voyelle.




Ligne 128 : Ligne 140 :
}}
}}


=== EXERCICE 4 ===
=== Exercice 4 ===
Ecrire une fonction qui a en paramètres deux chaînes de caractères ch1 et ch2 (paramètres en entrée) et renvoie un booléen indiquant si la chaîne ch2 est contenue dans la chaîne ch1.
Écrire une fonction qui a en paramètres deux chaînes de caractères ch1 et ch2 (paramètres en entrée) et renvoie un booléen indiquant si la chaîne ch2 est contenue dans la chaîne ch1.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =
Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*Recherche d'une chaîne incluse dans une autre chaîne.
* recherche d'une chaîne incluse dans une autre chaîne.

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include<iostream>
Ligne 176 : Ligne 189 :
}}
}}


=== EXERCICE 5 ===
=== Exercice 5 ===
Ecrire un programme qui demande à l'utilisateur de taper un verbe du premier groupe et qui le conjugue à l'indicatif présent.
Écrire un programme qui demande à l’utilisateur de taper un verbe du premier groupe et qui le conjugue à l'indicatif présent.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =


Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*La construction d'une chaîne à partir d'une autre.
* la construction d'une chaîne à partir d'une autre.

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include<iostream>
Ligne 213 : Ligne 227 :
}}
}}


=== EXERCICE 6 ===
=== Exercice 6 ===
Ecrire un programme qui saisit une chaîne pouvant contenir des espaces et qui affiche chaque mot de la chaîne, le séparateur étant l'espace. <br/>
Écrire un programme qui saisit une chaîne pouvant contenir des espaces et qui affiche chaque mot de la chaîne, le séparateur étant l’espace. <br/>
Exemple, on tape : '''je pense donc je suis'''<br/>
Exemple, on tape : '''je pense donc je suis'''<br/>
Le programme affiche :<br/>
Le programme affiche :<br/>
Ligne 223 : Ligne 237 :
mot 5 : suis<br/>
mot 5 : suis<br/>
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =
Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*Analyse syntaxique d'une chaîne de caractères.
* analyse syntaxique d'une chaîne de caractères.

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include<iostream>
Ligne 274 : Ligne 289 :
}}
}}


=== EXERCICE 7 ===
=== Exercice 7 ===
Ecrire un programme qui demande à l'utilisateur de taper une chaîne de caractères et qui indique si cette chaîne est un palindrome ou non.
Écrire un programme qui demande à l’utilisateur de taper une chaîne de caractères et qui indique si cette chaîne est un palindrome ou non.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =
Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*validation d'une chaîne.
* validation d'une chaîne.

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include <iostream>
#include <cstring>
using namespace std;


int main()
int main() {
char chaine[50];
{
int compteurCroissant = 0;
char t[50];
int i,j;
// On part du principe qu’il s’agit d’un palindrome et on va démontrer le contraire
bool palyn;
bool laChaineEstUnPalindrome = true;


std::cout << "Tapez une chaîne de caractères : "; std::cin >> chaine;
palyn=true;
cout<<"Tapez une chaîne : ";cin>>t;
int compteurDecroissant = strlen(chaine) - 1; // Suppression du \0 terminal
i=0;
j=strlen(t)-1;
while (laChaineEstUnPalindrome && compteurCroissant < compteurDecroissant) {
while(palyn==true && i<j)
if(chaine[compteurCroissant] != chaine[compteurDecroissant]) {
if(t[i]!=t[j])palyn=false; else {i++;j--;}
laChaineEstUnPalindrome = false;
} else {
compteurCroissant++;
compteurDecroissant--;
}
}


if (laChaineEstUnPalindrome) {
if(palyn) cout<<"C'est un palyndrome"<<endl;
else cout<<"ce n'est pas un palyndrome"<<endl;
std::cout << "La chaîne de caractères est un palindrome." << std::endl;
} else {
return 0;
std::cout << "La chaîne de caractères n’est pas un palindrome." << std::endl;
}
return EXIT_SUCCESS;
}
}
</source>
</source>
}}
}}


=== EXERCICE 8 ===
=== Éxercice 8 ===
Ecrire un programme qui demande à l'utilisateur de taper une chaîne de caractères et qui affiche la lettre (minuscule ou majuscule) la plus fréquente.
Écrire un programme qui demande à l’utilisateur de taper une chaîne de caractères et qui affiche la lettre (minuscule ou majuscule) la plus fréquente.
{{Boîte déroulante|titre=Solution|contenu =
{{Boîte déroulante|titre=Solution|contenu =
Cet exercice a pour but de vérifier les points techniques suivants :
Cet exercice a pour but de vérifier les points techniques suivants :
*La manipulation de chaînes de caractères.
* La manipulation de chaînes de caractères ;
*Manipulation sur les majuscules ou minuscules.
* manipulation sur les majuscules ou minuscules ;

*Voici le fichier source :
Voici le fichier source :
<source lang=cpp>
<source lang=cpp>
#include<iostream>
#include <iostream>
using namespace std;


int main()
int main() {
{
char ch[50];
int t[52];
int i,max;
char cmax;


char chaine[50];
cout<<"Tapez une chaîne : ";cin>>ch;
int poidsDesLettres[52];


std::cout << "Tapez une chaîne de caractères : "; std::cin >> chaine;
for(i=0;i<52;i++)t[i]=0;


// Initialisation des valeurs du tableau à zéro
i=0;
for(int index = 0; index < 52; index++) {
while(ch[i]!='\0')
poidsDesLettres[index] = 0;
{
}
if(ch[i]>='A' && ch[i]<='Z')t[ch[i]-'A']++;
else if(ch[i]>='a' && ch[i]<='z')t[ch[i]-'a'+26]++;
i++;
}


int index = 0;
max=t[0];cmax='A';
while (chaine[index] != '\0') {
for(i=1;i<52;i++)
if(max<t[i])
if (chaine[index] >= 'A' && chaine[index] <= 'Z') {
{
poidsDesLettres[chaine[index] - 'A']++;
max=t[i];if(i<26)cmax=(char)(i+'A');
} else if (chaine[index] >= 'a' && chaine[index] <= 'z') {
else cmax=(char)(i-26+'a');
poidsDesLettres[chaine[index] - 'a' + 26]++;
}
}
index++;
}
/* Affichage du nombre d’occurrences de chaque lettre. On parcours seulement la moitié
du tableau puisque l’on va afficher à la fois les minuscules et les majuscules
*/
for(int index = 0; index < (52 / 2); index++) {
// Récupération de la représentation sous forme de caractère du nombre
char minuscule = (char) index + 'a';
char majuscule = (char) index + 'A';
std::cout << "Lettre \'" << majuscule << "\' : " << poidsDesLettres[index]
<< "\t\tLettre \'" << minuscule << "\' : " << poidsDesLettres[index + 26] << std::endl;
}


int nombreMaximal = poidsDesLettres[0];
cout<<"La lettre la plus fréquente est : "<<cmax<<endl;
char cmax = 'A';
return 0;
for(int index = 1; index < 52; index++) {
// Recherche du maximal
if (nombreMaximal < poidsDesLettres[index]) {
nombreMaximal = poidsDesLettres[index];
// Réprésentation du maximal sous forme de caractère
if (index < 26) {
cmax = (char)(index + 'A');
} else {
cmax = (char)(index - 26 + 'a');
}
}
}

std::cout << "La lettre la plus fréquente est : " << cmax << std::endl;
return EXIT_SUCCESS;
}
}

</source>
</source>
}}
}}

Version du 7 novembre 2018 à 22:25

Exercices en langage C++
Programmation C++
Programmation C++
Sommaire
Liens
Modifier ce modèle

Les tableaux de caractères

Exercice 1

Écrire une fonction qui a en paramètres une chaîne de caractères (paramètre en entrée) et un entier e (paramètre en sortie). Cette fonction renvoie un booléen. La fonction renvoie true si la chaîne de caractères est un entier écrit sous la forme d'une suite de chiffres qui ne commence pas par 0, elle renvoie false sinon. Si la chaîne est correcte, la fonction renvoie dans e la valeur de cet entier.

Exercice 2

Écrire une fonction qui a en paramètre une chaîne de caractères (paramètre en entrée et en sortie) et qui transforme toutes les minuscules de la chaîne en majuscules.

Exercice 3

Écrire une fonction qui a en paramètre une chaîne de caractères (paramètre en entrée et en sortie) et qui supprime toutes les voyelles.

Exercice 4

Écrire une fonction qui a en paramètres deux chaînes de caractères ch1 et ch2 (paramètres en entrée) et renvoie un booléen indiquant si la chaîne ch2 est contenue dans la chaîne ch1.

Exercice 5

Écrire un programme qui demande à l’utilisateur de taper un verbe du premier groupe et qui le conjugue à l'indicatif présent.

Exercice 6

Écrire un programme qui saisit une chaîne pouvant contenir des espaces et qui affiche chaque mot de la chaîne, le séparateur étant l’espace.
Exemple, on tape : je pense donc je suis
Le programme affiche :
mot 1 : je
mot 2 : pense
mot 3 : donc
mot 4 : je
mot 5 : suis

Exercice 7

Écrire un programme qui demande à l’utilisateur de taper une chaîne de caractères et qui indique si cette chaîne est un palindrome ou non.

Éxercice 8

Écrire un programme qui demande à l’utilisateur de taper une chaîne de caractères et qui affiche la lettre (minuscule ou majuscule) la plus fréquente.