Un petit pb de fonction en c++

widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour tout le monde et bonne année à tous avec plein de bonheur!!!!!
J'ai un problème avec les fonctions je ne comprend pas comment ça marche.
je doit faire un programme qui me compte les caractères d'un texte je vois bien comment je doit faire mais je ne sait pas comment je doit l'ecrire. J'arrive pas à appeler ma fonction.
SVP aidez moi
merci d'avance

44 réponses

lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   13
 
Ecoute, ce serait peut-être bien que tu réfléchisses un peu à ce que tu écris. On ne va pas te faire tout ton code et le code suivant :
if (len>l){ 
cout<<len=0;len<l;len ++<<endl; 
} 
else 
cout<<size_t len<<endl; 
} 

aurait très bien pu être obtenu en tapant les choses aléatoirement !
0
bumblebee
 
Je trouve votre code bien compliqué...pourquoi ne pas seulement compter les espaces ?

string text = "la phrase recuperee";
int i=0,nbMots = 0;

while(text[i] != '\0') //parcours de toute la chaine
{
   if(text[i] == ' ')
  {
      nbMots++;
  }
  i++;
}


c'est beaucoup plus clair non ?
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Parce que si deux mots sont séparés de plusieurs espaces ça plante. Un point d'interrogation serait compté comme un mot car séparé de part et d'autre d'un espace... Etc... Autant de raisons qui font que ca ne marcherait pas.
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
oui c'est plus clair mais il y a plus de pb lorsqu'on compte les espace.
ben écoute je reflechis sinon je ne ferais rien, comment je fait pour ecrire :
if len<l
ecrire le texte
else
while len>l
ecrire len de 0 à l
cout<< /n<<endl;

je suis la pour apprendre non?
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
j'ai vraiment tout essayé je ne voit vraiment pas encore faire.
j'ai fait ça
if ((text.length())<l){
cout<<"le texte est:"<<text<<endl;
}
else{
while ((text.length())>l){
.....
}
et la je bloque je ne voit pas comment je peut faire toutes les solutions que j'ai trouver, le ompilateur les a refuse.
j'ai vraiment plus d'idee SVP une petite aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
SVP donné moi un indice ou qqch
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Tu en es ou tu veux faire quoi ? Le code que j'ai mis et corrigé par lirey ne marche pas ?
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
si si il marche tres bien sauf qu'il compte les compte les ponctuations sauf le . comme un mot.

mais sinon je voudrais réecrire le texte de l'utilisateur et qu'à l caractere (l donne par l'utilisateur) on ajjoute un retour à la ligne et continu le texte etc etc
0
lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   13
 
par exemple pour 4 caractères :
cout << "4 caractères = " << text.substr(0,4) << endl;

Faut penser à lire les docs et à chercher un peu ...
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
ah ok donc si je veut afficher les l premier caractere je fait
cout << "l premier caractères = " << text.substr(0,l) << endl;
et si je veut le dernier caractere de l je fait text.substr(0,$l)???
merci vraiment de votre aide
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
sinon moi j'avais reussi a faire avec des boucles
if ((text.length()) < l)
{
cout<<"le texte modifier est:"<<text<<endl;
}
else
{

for(int i=0; i<text.length(); i++)
{
cout << text[i];
if ((i%l) == 0)
cout << endl;

mais le truc c'est que ça me coupe mes mots il faudrait que je trouve le dernier espace de ma ligne et la, faire mon retour à la ligne mais je voit pas trop comment faire
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
apperement substr le fait mais je ne doit pas utiliser trop de fonction toute faites vous pouvez me donner des indication pour trouver le dernier espace de ma chaine et mettre le retour a la ligne à cet endroit
merci d'avance
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
svp
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
merci beaucoup Lirey j'avais trouver la solution aussi avec rfind mais ta solution n'utilise pas de fonction toutes faites donc merci beaucoup
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Il faut bien comprendre que "ne pas utiliser de fonction toutes faites" c'est débile sauf si c'est un exercice. Et si c'est un exercice, c'est une mauvaise chose que lirey fasse le travail à ta place (même si il/elle veut bien faire, hein :p), car au final tu n'auras pas compris comment marche une boucle for. Et ça c'est gênant car c'est un des trucs qui servent le plus en C/C++.

Bonne chance
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
ben enfaite c'est un exercice à la fin de mon exo je vais aboutir à un programme qui justifie un texte. J'ai bien compris le principe de la boucle for mais j'arrive pas à écrire en programmant ce que je pense donc bon c'est le début j'espere que ça viendra.
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Je te le souhaite :-)
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
eh dite une dernierre question à ce sujet comment je peut faire pour que le programme accepte aussi les retour à la ligne?
Par exemple si l'utilisateur tape un texte avec un retour à la ligne comment je peut faire pour que le nombre de caractere continu a augmenter. Dites moi qu'on peut faire ça je vous en supplie!!!!
0
widi70 Messages postés 649 Date d'inscription   Statut Membre Dernière intervention   65
 
comment je peut faire pour que le programme pour compter les caracteres et les mot accepte les retour à la ligne?
Par exemple si l'utilisateur rentre un texte ou il y a un retour à la ligne comment je doit faire pour que les compteurs n'en tiennent pas compte???
Dites moi que c'est possible SVP!!!!
0
Fred
 
Biensur c'est possible.
Les retours à la ligne sont des caracteres a part entiere ( \n )
Si ton programme ne les detecte pas il continuera a compter sans probleme.
Par contre il est possible que ton retour a la ligne soit une succesion de 2 caracteres soit \n\r ( \n pour new line, \r pour carriedge return soit retour chariot )
0