Le mot le plus long

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

  1. 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
    1. 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
      1. 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
        1. Ben justement la modification d'une variable référence, modifie la variable elle-même.
          0