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
Recherche les caractères d'une classe(tableau de signe de ponctuation) dans un texte.
* Cette fonction permet de trouver l'index du premier caractère dans text
* appartenant à la classe de caractères fournie.
la fonction pren en paramètre:
*le texte
*le debut:'index du premier de caractére de text à partir duquel la
recherche doit débuter.
*classe La classe contenant des caractères à rechercher.
la fonction return
*L'index du premier caractère rencontré dans text et appartenant à
* la classe ou -1 si text ne contient aucun caractère de la classe.

j'ai besoin d'aide,merci

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
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)
{

}
0
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
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é.
}
0