MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 2007
-
2 déc. 2003 à 17:49
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 2006
-
3 déc. 2003 à 00:00
Je vouidrais simplment renvoyer le plus grand nombre de la chaine saisie par l'utilisateur (chaque nombres sont séparé par des espaces)
Mais j'ai un probleme de bug que je ne comprend pas trop qq'un pourrez til maider?
#include <stdio.h>
#include <stdlib.h>
int countOccur(char* s,int nombre)
{
char temp[10];
int y;
int nombree;
int old;
y=0;
old = 0;
for (int i=0;i<=nombre;i++)
{
if (s[i] != ' ')
{
temp[y]=s[i];
y++;
}else
{
y=0;
nombree = atoi(temp);
if (nombree > old)
old = nombree;
}
}
return old;
}
int main()
{
int nombre;
char *s;
scanf("%d",nombre );
scanf("%s\n", s);
s = (char*)malloc(sizeof(char)*(nombre));
printf("%d\n", countOccur(s,nombre));
return 0;
}
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 2 déc. 2003 à 20:50
Pour malloc c une erreur de recopiage ^^
merci pour nombre ca merdait aussi ^^
Mais en fait je me suis rendu compte que scanf lisais tout jusqu'a espace par ex :
char s[10];
scanf("%s\n", s);
et bien si je tape 1 2 3 ca ne prends que 1...
Comment faire pour qu'il prenne tout??
Merci !!
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 2 déc. 2003 à 21:29
Merci mais la c'est le delire total avec :
int nombre;
char *s;
gets(s);
printf("%s", s);
scanf("%d",&nombre );
printf affiche le resultat correct mais avec
scanf("%d",&nombre );
gets(s);
printf("%s", s);
ca marche presque pas..
Je soupconne le buffer mais.. comment faire justement?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 2 déc. 2003 à 22:55
Salut,
Bon deja dans mon post d'avant, je voulais dire que s ne pointais sur rien. Enfin on s'est compris.
Sinon, je me suis souvenu que utiliser gets & scanf posait des problemes.
Comme je ne sais pas comment faire pour que scanf lise les caracteres jusqu'a ce qu'on apuie sur entrer, je te propose une methode avec que des gets:
int nb = 0;
char * s;
char szNB[16];
nb = atoi(gets(szNB));
s = (char*) malloc(nb);
gets(s);
// etc....
Ensuite pour la fonction countOccur, pourquoi copie tu le nombre dans un buffer avant de le tester avec atoi ?
Moi j'aurais fait un truc du genre:
int countOccur(char* s,int nombre)
{
int nb = 0;
for (int i=0; i<nombre; i++)
{
int temp = atoi(s+i);
if(temp > nb)
nb = temp;
while(*(s+i) != 32 && *(s+i)) i++;
}
return nb;
}