Le mot le plus long

Fermé
jimouxx - 12 sept. 2008 à 11:16
JulienZ Messages postés 42 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 22 avril 2009 - 13 sept. 2008 à 16:57
Bonjour,

J'ai un petit probleme !
Je dois créer un programme permettant a l'utilisatuer de saisir une chaine de caracteres.
Le programme affiche lemot le plus long contenu dans la phrase. Le tout en c++...

Voici ce que j'ai tapé mais ça ne marche pas :
//Mot le plus long.CPP :
#include<iostream>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<iomanip>
#include<time.h>

using namespace std;

int Compter (char tab[149], int &Nblettres, int &i)
{
Nblettres=0;
while(tab[i] != '0')
{
Nblettres= Nblettres+1;
i++;
}

return Nblettres;
}

void Stocker ( char tab[149], char Mot[29], int &Nblettres, int &i)
{
int j;
j=0;
while (tab[i]!= '0')
{
Mot[i]=tab[i];
i++;
}

Mot[i]='\0';

}


int main()
{
int i, Nblettres, Grand;
char tab[149];
char Mot[29];

cout<<"Veuillez saisir la phrase s'il vous plait ! \n";
gets(tab);

i=0;
Nblettres=0;
Grand=0;

while (tab[i]!= '\0')
{
Compter(tab, Nblettres, i);

if(Nblettres>Grand)
{
Stocker(tab, Mot, Nblettres, i);
Grand=Nblettres;
}

i=i+Nblettres;
}

cout<< "Le plus grand mot est : "<<Mot;


getch();
return 0;

}

Merci d'avance pour votre aide ;)

4 réponses

JulienZ Messages postés 42 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 22 avril 2009 4
12 sept. 2008 à 15:34
Je ne suis pas trop d'accord avec cela, il vaut mieux rester dans l'optique du C++ et éviter au maximum les problèmes d'allocation mémoire (segmentation fault). Le passage par référence pour Nblettres et i est mieux. Je trouve que c'est très bien adapté ici.
1
JulienZ Messages postés 42 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 22 avril 2009 4
12 sept. 2008 à 14:51
Je ne comprend pas pourquoi tu fais :
while(tab[i]!='0')
{
....
}


Il suffit que tu détecte l'espace :
while(tab[i]!=0x20)
{
...
}


20 est le code ascii de l'espace en hexadecimal.
0
fsteven Messages postés 38 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 23 mars 2009 9
12 sept. 2008 à 15:13
transforme

int Compter (char tab[149], int &Nblettres, int &i)
en
int Compter (char *tab, int *Nblettres, int *i)

et
void Stocker ( char tab[149], char Mot[29], int &Nblettres, int &i)
en
void Stocker ( char *tab, char *Mot, int *Nblettres, int *i)


sinon précise ce qui ne marche pas...as tu essayé de debugger ?
0
JulienZ Messages postés 42 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 22 avril 2009 4
13 sept. 2008 à 16:57
Ben justement la modification d'une variable référence, modifie la variable elle-même.
0