Salut, je fais un prog, qui doit me donner le mot le plus long présent dans la chaine de carac.
Vous devez d'abord rentrer la taille de votre chaine, puis la chaine.
G plusieurs problèmes, tout d'abord, mon code ne fonctionne pas tout le temps, ensuite, il prend trop de mémoire, et prend parfois trop de temps à executer.
Si vous savez comment l'optimiser et le corriger, je vous écoute
#include <stdio.h>
int MotLePlusLong(char* chaine, int taille) { int j = 0; char carac; int longueur = 0; char maillon[100]; int i = 0; for( i = 0; i < taille;) { for(j = 0; carac != ' '; j++) {
carac = chaine[i+j]; if( carac != ' ') {
maillon[j] = chaine[i + j]; } } if( strlen(maillon) > longueur) {
longueur = strlen(maillon); }
carac = 'f';
j = j + 2;
i = i + j; } return longueur; }
int main() { int taille; char chaine[201]; int longueur; int i;
scanf("%d", &taille); do{
scanf("%c", &(chaine[0])); }while((chaine[0] == '\n') || (chaine[0] == '\r')); for(i = 1; i < taille; i++)
scanf("%c", &(chaine[i]));
chaine[i] = 0;
longueur = MotLePlusLong(chaine, taille); printf("%d\n", longueur); return0; }
Je comprends pas bien ta partie "saisie de chaine". Mais bon, voici une façon de le faire, il y'en a surement d'autres (notamment avec une saisie encore plus securisée...)
Ah, pis faut pas oublier l'include de string.h, hein ?
#include <stdio.h> #include <string.h>
// Fonctions purger, clean et principe de saisie par KrOOpS // http://www.siteduzero.com/tuto-3-11181-1-c-realiser-des-saisies-securisees-grace-a-fgets.html
void purger(void) { int c; while((c = getchar()) != '\n' && c != EOF) {} }
int max(int nombre1,int nombre2) { return(nombre1>nombre2)?nombre1:nombre2; }
int motLePlusLong(char* texte) { int i=0,maxcar=0,compte=0; printf("\n"); // pour verif while(*(texte+i)!='\0') { if(texte[i]==' ') { printf("\t%d caracteres\n",compte); // pour verif
maxcar=max(maxcar,compte);
compte=0;
} else {
compte++;
putchar(texte[i]); // pour verif }
i++; } printf("\t%d caracteres\n",compte); // pour verif
maxcar=max(maxcar,compte);
return maxcar; }
int main (void) { char chaine[200];
printf("Veuillez taper une phrase : ");
fgets(chaine, sizeof chaine, stdin);
clean(chaine); printf("\nVous avez tape : '%s'\n", chaine); printf("Cette chaine a une longueur de %d caracteres.\n",strlen(chaine)); printf("\nLe mot le plus long fait %d caracteres",motLePlusLong(chaine));
return0; }
probleme de chaine de carac
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.