Besoin d'aide en C
Fermé
sousi
-
20 mai 2005 à 23:32
hibou57 Messages postés 130 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 4 juillet 2010 - 22 mai 2005 à 01:27
hibou57 Messages postés 130 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 4 juillet 2010 - 22 mai 2005 à 01:27
2 réponses
hibou57
Messages postés
130
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
4 juillet 2010
61
22 mai 2005 à 01:10
22 mai 2005 à 01:10
C'est sans souci, voilà ta solution:
D'aprés tes spécications, nous pouvons synthétiser comme suit:
il faut scanner tous les caractère du texte, et pour chaque
caractère du texte, il faut faire une comparaison avec tous (ou moins) les caractères de la classe.
Nous avons donc une boucle imbriquée dans une autre.
La boucle du premier niveau est pour le texte.
La boucle du deuxième niveau est pour la classe.
// * La classe est supposé être une chaîne terminé par null,
// mais tu peux adpater pour utiliser un buffer de taille
constante.
// * Retourne -1 en cas d'erreur.
int recherche(char* text, int debut, char* classe)
{
}
D'aprés tes spécications, nous pouvons synthétiser comme suit:
il faut scanner tous les caractère du texte, et pour chaque
caractère du texte, il faut faire une comparaison avec tous (ou moins) les caractères de la classe.
Nous avons donc une boucle imbriquée dans une autre.
La boucle du premier niveau est pour le texte.
La boucle du deuxième niveau est pour la classe.
// * La classe est supposé être une chaîne terminé par null,
// mais tu peux adpater pour utiliser un buffer de taille
constante.
// * Retourne -1 en cas d'erreur.
int recherche(char* text, int debut, char* classe)
{
}
hibou57
Messages postés
130
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
4 juillet 2010
61
22 mai 2005 à 01:27
22 mai 2005 à 01:27
C'est sans souci, voilà ta solution:
N.B. Je n'ai plus de compilateur C, alors je n'ai pas testé, mais je le ferai dès que je peux. Sinon, n'hésite pas à me dire si tu as le moindre soucis. (sans j.d.m ;-)
D'aprés tes spécications, nous pouvons synthétiser comme suit:
il faut scanner tous les caractère du texte, et pour chaque
caractère du texte, il faut faire une comparaison avec tous les caractères de la classe.
Nous avons donc une boucle imbriquée dans une autre.
La boucle du premier niveau est pour le texte.
La boucle du deuxième niveau est pour la classe.
// * La classe est supposé être une chaîne terminé par null,
// mais tu peux adpater pour utiliser un buffer de taille
constante.
// * Retourne -1 en cas d'erreur.
// Constante pour code de retour
#define search_error -1
#define not_found -1
int search(char* text, int start, char* class)
{
// Variables
int i_text; // indice pour scanner dans le texte
int i_class; // indice pour scanner dans la classe
// Test d'erreur (c'est toujours dommage les plantages)
if (text == NULL) return search_error;
if (start < 0) start = 0; // Erreur récupérable.
// Cas particuliers
if (class == NULL) return not_found; // Pas de solution
if (class [0] == 0) return not_found; // Pas de solution
// Sanner le text
i_text = start;
while (text [i_text] != 0) // Tester la fin du texte
{
// Scanner la class
i_class = 0;
while (class [i_class] != 0) // Tester la fin de la classe
{
if (text [i_text] == class [i_class]) return i_text; // OK
++ i_class; // Aller au caractère suivant dans la classe
}
++ i_text; // Aller au caractère suivant dans le texte.
}
return not_found; // Fin de la boucle sans rien avoir trouvé.
}
N.B. Je n'ai plus de compilateur C, alors je n'ai pas testé, mais je le ferai dès que je peux. Sinon, n'hésite pas à me dire si tu as le moindre soucis. (sans j.d.m ;-)
D'aprés tes spécications, nous pouvons synthétiser comme suit:
il faut scanner tous les caractère du texte, et pour chaque
caractère du texte, il faut faire une comparaison avec tous les caractères de la classe.
Nous avons donc une boucle imbriquée dans une autre.
La boucle du premier niveau est pour le texte.
La boucle du deuxième niveau est pour la classe.
// * La classe est supposé être une chaîne terminé par null,
// mais tu peux adpater pour utiliser un buffer de taille
constante.
// * Retourne -1 en cas d'erreur.
// Constante pour code de retour
#define search_error -1
#define not_found -1
int search(char* text, int start, char* class)
{
// Variables
int i_text; // indice pour scanner dans le texte
int i_class; // indice pour scanner dans la classe
// Test d'erreur (c'est toujours dommage les plantages)
if (text == NULL) return search_error;
if (start < 0) start = 0; // Erreur récupérable.
// Cas particuliers
if (class == NULL) return not_found; // Pas de solution
if (class [0] == 0) return not_found; // Pas de solution
// Sanner le text
i_text = start;
while (text [i_text] != 0) // Tester la fin du texte
{
// Scanner la class
i_class = 0;
while (class [i_class] != 0) // Tester la fin de la classe
{
if (text [i_text] == class [i_class]) return i_text; // OK
++ i_class; // Aller au caractère suivant dans la classe
}
++ i_text; // Aller au caractère suivant dans le texte.
}
return not_found; // Fin de la boucle sans rien avoir trouvé.
}