Le mot le plus long
jimouxx
-
JulienZ Messages postés 44 Statut Membre -
JulienZ Messages postés 44 Statut Membre -
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 ;)
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 ;)
A voir également:
- Le mot le plus long
- Trousseau mot de passe iphone - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Mot de passe administrateur freebox - Forum Freebox
4 réponses
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.
Je ne comprend pas pourquoi tu fais :
Il suffit que tu détecte l'espace :
20 est le code ascii de l'espace en hexadecimal.
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.
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 ?
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 ?