problème pas clair (en tout cas pour moi :p ) - C++ - Programmation
Marsh Posté le 27-03-2003 à 18:15:02
ben moi ca marche
T'as entre quelle chaine ?
Ha au fait
Code :
|
suffit. Vu tu l'initialises, t'as pas besoin de mettre la taille
Ha oui et pense aux balises [cpp][/cpp] pour mettre du code
Marsh Posté le 27-03-2003 à 18:16:51
C'est normal, il y a rien après 42
Marsh Posté le 27-03-2003 à 18:19:18
ReplyMarsh Posté le 27-03-2003 à 18:21:16
ben en fait, c pour le concours prologin, moi j'ai testé sur quelques chaines et ça marchait, mais sur leur site il disent que le code est faux
Marsh Posté le 27-03-2003 à 18:24:09
On vous donne une longue chaîne de caractères majuscules et minuscules, sans accents. Ecrire une fonction qui renvoie le nombre de voyelles qu'elle contient.
LIMITES DE TEMPS ET DE MEMOIRE
* Temps : 1 s.
* Mémoire : 1000 Ko.
CONTRAINTES
1 <= L <= 10000, où L est le nombre de lettres de la chaîne.
ENTREE
L'entrée contient deux lignes :
* Le nombre de caractères de la chaîne.
* La chaîne de caractères.
SORTIE
Vous devez écrire une ligne sur la sortie : le nombre de voyelles de la chaîne.
EXEMPLE(S) D'ENTREE / SORTIE
Exemple 1 :
en entrée ...
8
ProlOgiN
en sortie ...
3
COMMENTAIRES
Source C à compléter :
int CompteVoyelles(char* str)
{
}
int main()
{
char str[10001];
int size;
int res;
scanf("%d\n%s", &size, str);
res = CompteVoyelles(str);
printf("%d\n", res);
return 0;
}
-----------------------------------------------------------
moi j'ai preféré le faire en C++, ca pose problème parce qu'il demande la taille de la chaine en entree .. alors que pour moi, cela me sert a rien, j'ai triché en faisait un :
[cpp]
int nb;
cin >> nb;
[/cpp)
et c tout
Marsh Posté le 27-03-2003 à 18:28:53
C'est peut être plus trop approprié à ta situation, mais voici une solution que je viens de faire (qui utilise basic_string::find_first_of) :
Code :
|
Marsh Posté le 27-03-2003 à 18:31:56
argh mais je débute je le trouve dur à comprendre ton code !!!
Marsh Posté le 27-03-2003 à 18:36:54
umer a écrit : argh mais je débute je le trouve dur à comprendre ton code !!! |
et ben ca te fait un bon exo !
Marsh Posté le 27-03-2003 à 18:39:46
j'ai rien compris à ces lignes
Code :
|
je sais absolument pas à quoi ce refere ces fonctions, et les paramètres qu'on passe a la fonction main, quelqu'un peut-il eclairer ma lanterne ? merci de votre aide
Marsh Posté le 27-03-2003 à 18:50:54
Code :
|
ben argv, c'est la liste des arguments, et argc le nombre d'arguments. Note qu'ils ne sont pas utilisés
Code :
|
Ben la, il declare deux variables, qu'il initialise a 0
Code :
|
la, il utilise une methode de la classe string qui lui renvoie l'index de la premiere voyelle dans la chaine a partir de la position pos. Et puis il verifie qu'une voyelle a bien ete trouvee, sinon c'est la fin
Marsh Posté le 27-03-2003 à 18:08:41
voila, ce programme est sensé me renvoyer le nombre de voyelle, je l'ai testé avec une chaine contenant 49 voyellles, mais il m'en renvoie 42.. je vois pas ou est le problème, si vous pouviez m'aider ça serait tres sympa.
#include <iostream>
#include <string>
#define NB_LETTRE 11
using namespace std;
int main()
{
int k=0;
string chaine;
char alphab[NB_LETTRE]={'a','A','e','E','i','I','o','O','u','U'};
cin >> chaine;
size_t chaine_len = chaine.length();
for(unsigned i=0;i<chaine_len;i++)
{
for(unsigned j=0;j!=NB_LETTRE-1;j++)
{
if(chaine[i]==alphab[j]) {k++;}
}
}
cout << k <<'\n';
return 0;
}