Besoin d'aide en C

sousi -  
hibou57 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. hibou57 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   61
     
    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
  2. hibou57 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   61
     
    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