Grosseur d'un tableau variable
einsteinqc
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Franck7511 Messages postés 14296 Date d'inscription Statut Membre Dernière intervention -
Franck7511 Messages postés 14296 Date d'inscription Statut Membre Dernière intervention -
Bonjour en premier lieu, je dois vous dire que je suis débutant en programmation et c++.
J'ai regarder sur plein de forum donc celui-ci et je ne trouve pas comment faire .. je vous expliques. Je dois faire un programme que l'on entre un mot de 10 lettres minimums et après dans un autre variable, une lettre. et le résultat est le mot entrer et i met la lettre choisi en majuscule. J'aimerais que le 20, dans motDixCaract[20] et for (int x=0; x< 20; x++) soit variable a la grandeur du mot entré +1.
Exemple: J'entre le mot: maison
La lettre choisi est a
Le résultat est: mAison
voila le code que j'ai fais, mais il y a des bouts qui sont OK, mais d'autre Ouuffff !
Merci...
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
//demande a l'usager de saisir un mots de + de 10 caracteres et le stock dans la variable motDixCaract
char motDixCaract[20];
char lettreRech;
cout << "entrer un mots contenant plus de 10 caracteres svp: "<<endl;
cin >> motDixCaract;
cout << "entrer la lettre qui est recherche: "<<endl;
cin >> lettreRech;
for (int x=0; x< 20; x++)
{
if (motDixCaract[x] == lettreRech)
cout<< char(motDixCaract[x] -32);
else
cout<< char(motDixCaract[x]);
}
J'ai regarder sur plein de forum donc celui-ci et je ne trouve pas comment faire .. je vous expliques. Je dois faire un programme que l'on entre un mot de 10 lettres minimums et après dans un autre variable, une lettre. et le résultat est le mot entrer et i met la lettre choisi en majuscule. J'aimerais que le 20, dans motDixCaract[20] et for (int x=0; x< 20; x++) soit variable a la grandeur du mot entré +1.
Exemple: J'entre le mot: maison
La lettre choisi est a
Le résultat est: mAison
voila le code que j'ai fais, mais il y a des bouts qui sont OK, mais d'autre Ouuffff !
Merci...
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
//demande a l'usager de saisir un mots de + de 10 caracteres et le stock dans la variable motDixCaract
char motDixCaract[20];
char lettreRech;
cout << "entrer un mots contenant plus de 10 caracteres svp: "<<endl;
cin >> motDixCaract;
cout << "entrer la lettre qui est recherche: "<<endl;
cin >> lettreRech;
for (int x=0; x< 20; x++)
{
if (motDixCaract[x] == lettreRech)
cout<< char(motDixCaract[x] -32);
else
cout<< char(motDixCaract[x]);
}
A voir également:
- Grosseur d'un tableau variable
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
1 réponse
1/ Evite le 'using namespace std'
2/ Pourquoi "#include <string.h>" ? C'est pas du C++ ça, et c'est pas nécessaire ici.
3/ Evite les tableaux de char, privilégie std::string qui est inclus en C++. (#include <string>)
4/ Où tu utilises la propriété "plus de 10 caractères" dans ton programme ?
Bon, si tu veux garder le tableau de char, tu peux allouer un grand tableau de taille fixe (ça reste une mauvaise solution) et itérer non plus jusqu'à 20 mais strlen(motDixCaract).
Pourquoi écrire caractère par caractère sinon ? Autant juste modifier le caractère au sein de ta boucle :
Et tu print motDixCaract.
La bonne technique est celle d'utiliser std::string, et dans ce cas :
2/ Pourquoi "#include <string.h>" ? C'est pas du C++ ça, et c'est pas nécessaire ici.
3/ Evite les tableaux de char, privilégie std::string qui est inclus en C++. (#include <string>)
4/ Où tu utilises la propriété "plus de 10 caractères" dans ton programme ?
Bon, si tu veux garder le tableau de char, tu peux allouer un grand tableau de taille fixe (ça reste une mauvaise solution) et itérer non plus jusqu'à 20 mais strlen(motDixCaract).
Pourquoi écrire caractère par caractère sinon ? Autant juste modifier le caractère au sein de ta boucle :
if (motDixCaract[x] == lettreRech) // Attention lettreRech doit être minuscule ! motDixCaract[x] = std::toupper(lettreRech);
Et tu print motDixCaract.
La bonne technique est celle d'utiliser std::string, et dans ce cas :
std::for_each (motDixCaract.begin(), motDixCaract.end(), [&](char& c) { if (c == lettreRech) // Attention lettreRech doit être minuscule ! c = std::toupper(lettreRech); }); std::cout << motDixCaract << std::endl;