« Programmation C++/Les tableaux/Exercices » : différence entre les versions
m A supprimé la protection de « Programmation C++/Les tableaux/Exercices » : Robot : Suppression de la protection d’une liste de fichiers |
m <source> -> <syntaxhighlight> (phab:T237267) |
||
Ligne 10 : | Ligne 10 : | ||
*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 : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
using namespace std; |
using namespace std; |
||
Ligne 41 : | Ligne 41 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 52 : | Ligne 52 : | ||
*Majuscules et minuscules. |
*Majuscules et minuscules. |
||
*Voici le fichier source : |
*Voici le fichier source : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
using namespace std; |
using namespace std; |
||
Ligne 75 : | Ligne 75 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 85 : | Ligne 85 : | ||
*Transformation d'une chaîne de caractrères. |
*Transformation d'une chaîne de caractrères. |
||
*Voici le fichier source : |
*Voici le fichier source : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
#include <cstring> |
#include <cstring> |
||
Ligne 118 : | Ligne 118 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 128 : | Ligne 128 : | ||
*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 : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
using namespace std; |
using namespace std; |
||
Ligne 165 : | Ligne 165 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 176 : | Ligne 176 : | ||
*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 : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
Ligne 202 : | Ligne 202 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 219 : | Ligne 219 : | ||
*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 : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include<iostream> |
#include<iostream> |
||
using namespace std; |
using namespace std; |
||
Ligne 262 : | Ligne 262 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 272 : | Ligne 272 : | ||
*validation d'une chaîne. |
*validation d'une chaîne. |
||
*Voici le fichier source : |
*Voici le fichier source : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
using namespace std; |
using namespace std; |
||
Ligne 293 : | Ligne 293 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
||
Ligne 303 : | Ligne 303 : | ||
*Manipulation sur les majuscules ou minuscules. |
*Manipulation sur les majuscules ou minuscules. |
||
*Voici le fichier source : |
*Voici le fichier source : |
||
< |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
using namespace std; |
using namespace std; |
||
Ligne 338 : | Ligne 338 : | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
}} |
}} |
Version du 16 avril 2020 à 10:14
Exercices
EXERCICE 1
Ecrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- La validation d'une chaîne de caractères.
- Transformation d'une chaîne vers un autre type.
- Voici le fichier source :
#include <iostream>
using namespace std;
bool valide_entier(char t[],int &e)
{
bool valide=true;
int i=0;
e=0;
if (t[0]<'1' || t[0]>'9') valide = false;
while (valide && t[i]!='\0')
{
if (t[i]>='0' && t[i]<='9') { e = 10*e + (t[i]-'0'); i++; }
else valide = false;
}
return valide;
}
int main()
{
int a;
char t[20];
do {
cout << "Tapez une chaine :"; cin >> t;
} while (!valide_entier(t,a));
cout << "L'entier vaut :" << a << endl;
return 0;
}
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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- Transformation d'une chaîne de caractères.
- Majuscules et minuscules.
- Voici le fichier source :
#include <iostream>
using namespace std;
void minmaj(char t[])
{
int i = 0;
while (t[i] != '\0')
{
if (t[i] >= 'a' && t[i] <= 'z')
t[i] = t[i] + ('A'-'a');
i++;
}
}
int main()
{
char a[50];
cout << "Tapez une chaine svp :"; cin >> a;
minmaj(a);
cout << "La chaine finale est :" << a << endl;
return 0;
}
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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- Transformation d'une chaîne de caractrères.
- Voici le fichier source :
#include <iostream>
#include <cstring>
using namespace std;
void supvoy(char t[], int nb)
{
int i=0,j;
while(t[i]!='\0')
{
if(t[i]=='a' || t[i]=='A') {nb--; for (j=i; j<nb; j++) t[j]=t[j+1]; t[nb]='\0'; i--;}
if(t[i]=='e' || t[i]=='E') {nb--; for (j=i; j<nb; j++) t[j]=t[j+1]; t[nb]='\0'; i--;}
if(t[i]=='i' || t[i]=='I') {nb--; for (j=i; j<nb; j++) t[j]=t[j+1]; t[nb]='\0'; i--;}
if(t[i]=='o' || t[i]=='O') {nb--; for (j=i; j<nb; j++) t[j]=t[j+1]; t[nb]='\0'; i--;}
if(t[i]=='u' || t[i]=='U') {nb--; for (j=i; j<nb; j++) t[j]=t[j+1]; t[nb]='\0'; i--;}
if(t[i]=='y' || t[i]=='Y') {nb--; for (j=i; j<nb; j++) t[j]=t[j+1]; t[nb]='\0'; i--;}
i++;
}
}
int main()
{
char a[50];
int b;
cout << "Tapez une chaine svp :"; cin >> a;
b = strlen(a);
supvoy(a, b);
cout << "La chaine finale est :" << a << endl;
return 0;
}
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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- Recherche d'une chaîne incluse dans une autre chaîne.
- Voici le fichier source :
#include <iostream>
using namespace std;
bool contient(char ch1[], char ch2[])
{
int ii=0, i=0, j=0;
bool fini, trouve;
trouve = false;
fini = false;
while (!trouve && !fini)
{
if(ch1[ii] == ch2[j])
{
ii++; j++;
if (ch2[j] == '\0') trouve = true;
}
else
{
i++; ii=i; j=0;
}
if (ch1[ii] == '\0') fini = true;
}
return trouve;
}
int main()
{
char a[50], b[50];
cout << "Tapez une chaine svp :";
cin >> a;
cout << "Tapez une chaine svp :";
cin >> b;
if (contient(a, b)) cout << "la premiere chaine contient la seconde" << endl;
else cout << "la premiere chaine ne contient pas la seconde" << endl;
return 0;
}
EXERCICE 5
Ecrire un programme qui demande à l'utilisateur de taper un verbe du premier groupe et qui le conjugue à l'indicatif présent.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- La construction d'une chaîne à partir d'une autre.
- Voici le fichier source :
#include <iostream>
using namespace std;
int main()
{
char tt[20];
cout << "Tapez un verbe du premier groupe : ";
cin >> tt;
int i;
i = strlen(tt);
if (i<=2 || tt[i-1]!='r' || tt[i-2]!='e')
cout << "le verbe n'est pas du premier groupe" << endl;
else
{
tt[i-2]='\0';
cout << "je " << tt << "e" << endl;
cout << "tu " << tt << "es" << endl;
cout << "il " << tt << "e" << endl;
cout << "nous " << tt << "ons" << endl;
cout << "vous " << tt << "ez" << endl;
cout << "ils " << tt << "ent" << endl;
}
return 0;
}
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.
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
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- Analyse syntaxique d'une chaîne de caractères.
- Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
char t[50];
char mot[50];
int i=0, j=0, state=1, num=0;
cout << "Tapez une phrase : "; cin.getline(t, 50);
while (t[i] != '\0'){
if (state == 1)
{
if (t[i] != ' ')
{
state = 2; j=0; mot[0] = t[i]; j++;
}
}
else
{
if (t[i] != ' ') { mot[j] = t[i]; j++; }
else
{
state = 1;
num++;
mot[j] = '\0';
cout << "mot " << num << " : " << mot << endl;
}
}
i++;
}
if (state==2)
{
num++;
mot[j]='\0';
cout<<"mot "<<num<<" : "<<mot<<endl;
}
return 0;
}
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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- validation d'une chaîne.
- Voici le fichier source :
#include <iostream>
using namespace std;
int main()
{
char t[50];
int i, j;
bool palin;
palin = true;
cout << "Tapez une chaîne : "; cin >> t;
i = 0;
j = strlen(t) - 1;
while (palin==true && i<j)
if (t[i] != t[j]) palin = false; else { i++; j--; }
if (palin) cout << "C'est un palindrome" << endl;
else cout << "ce n'est pas un palindrome" << endl;
return 0;
}
EXERCICE 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La manipulation de chaînes de caractères.
- Manipulation sur les majuscules ou minuscules.
- Voici le fichier source :
#include <iostream>
using namespace std;
int main()
{
char ch[50];
int t[52];
int i, max;
char cmax;
cout << "Tapez une chaîne : "; cin >> ch;
for (i=0; i<52; i++) t[i] = 0;
i=0;
while (ch[i] != '\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++;
}
max = t[0]; cmax = 'A';
for (i=1; i<52; i++)
if(max<t[i])
{
max = t[i];
if (i<26) cmax = (char) (i+'A');
else cmax = (char) (i-26+'a');
}
cout << "La lettre la plus fréquente est : " << cmax << endl;
return 0;
}