begin process at 2010 02 10 06:37:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > VIRTOPROFESSOR: MRCARDO, UN APPRENTISSAGE RAPIDE DE VOS LEÇONS :D (QUESTIONS, REPONSES)

VIRTOPROFESSOR: MRCARDO, UN APPRENTISSAGE RAPIDE DE VOS LEÇONS :D (QUESTIONS, REPONSES)


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :apprentissage, professeur, virtual, technologie, leçons Niveau :Initié Date de création :11/04/2009 Date de mise à jour :18/04/2009 06:19:32 Vu / téléchargé :1 140 / 47

Auteur : soso62fr

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Yo!
Voila je prépare un projet qui se nomme VirtoProfessor qui est composé de plusieurs virtuals professeurs avec des roles précis et ici je met à votre disposition, le professeur MrCardo qui vous interroge sur ce que vous voulez (Question->Reponse).
MrCardo est loin d'etre terminer mais je vous donne le code source pour me donner votre avis.

Comment ça marche ?

C'est trés simple! Vous créer un fichier texte de n'importe qu'elle extension, cela n'a pas d'importance, ensuite dans ce fichier vous placez vos questions et reponses de cette façon:

Test.txt :
Combient font 2*2+1+1 ?
6
Combient font 2*5 ?
10

Ensuite vous glissez ce fichier sur MrCardo.exe et vous parametrez le test.

Ciao!

Source

  • #include <vector>
  • #include <string.h>
  • #include <time.h>
  • #include <cstdio>
  • #include <cstdlib>
  • using namespace std;
  • unsigned int aleatoire(const unsigned int min, const unsigned int max) // Fonction qui retourn un nombre entre min et max (min et max inclus)
  • {
  • return (unsigned int)(min+((float) rand()/RAND_MAX*(max - min + 1)));
  • }
  • bool strcompare(const char *str1, const char *str2, bool casse=false) // Fonction qui compare 2 chaines de caracteres avec ou sans casse
  • {
  • unsigned int max=strlen(str1);
  • if(max!=strlen(str2))
  • {
  • return false;
  • }
  • for(unsigned int i=0; i<max; i++)
  • {
  • if((!casse && tolower(str1[i])!=tolower(str2[i])) || (casse && str1[i]!=str2[i]))
  • return false;
  • }
  • return true;
  • }
  • int main(int nb_args, char** argv)
  • {
  • srand(time(NULL));
  • if( nb_args<2 ) // Si aucun fichier n'est passer aux parametres de l'exe, on quitte
  • {
  • fprintf(stderr,"\n\n # Aucun fichier ! Au revoir !\n\n");
  • fflush(stdin);
  • getchar();
  • return EXIT_FAILURE;
  • }
  • for (unsigned int i_file=1; true; i_file++)
  • {
  • FILE* file_datas = fopen(argv[i_file],"rb");
  • if ( file_datas == NULL ) // Si le fichier n'existe pas ou protegé contre la lecture
  • {
  • fprintf(stderr,"\n\n # Le fichier n%u (%s) est introuvable ! ",i_file,argv[i_file]);
  • if ((nb_args-i_file)==1) // On abondonne le fichier et on passe au suivant s'il existe
  • {
  • break;
  • }
  • fprintf(stdout,"\n\n # Passage au fichier n%u\n\n",i_file+1);
  • continue;
  • }
  • vector<vector<char> > questions, reponses; // vector pour les questions, et un autre pour les reponses
  • vector<bool> aff_rep, aff_ques; // Variables pour sauvegarder l'index des questions et reponses et eviter les repetitions s'il est desactivé
  • vector<char> line; // Variable pour stocker la ligne du fichier
  • bool syntaxe_correct = true; // La variable d'etat du fichier
  • int params[7] = {0}; // Le tableau de parametres du test
  • system("CLS"); // Vidage de stdout
  • fprintf(stdout,"\n\n # Poser les questions au hasard (1=Oui,0=Non) ? ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[0]); // Recuperation du 1er parametre
  • system("CLS"); // Vidage de stdout
  • if(params[0]) // Si l'hasard est activer on demande s'il faut activation l'"AntiRepeat"
  • {
  • fprintf(stdout,"\n\n # Activer l'option Anti-Repeat (1=Oui,0=Non) ? ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[1]); // Recuperation du 2eme parametre
  • }
  • system("CLS"); // Vidage du stdout
  • fprintf(stdout,"\n\n # Poser toutes les questions disponibles (0=Oui,nombre) ? ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[2]); // Recuperation du 3eme parametre
  • system("CLS"); // Vidage de stdout
  • if(!params[2]) // Si les questions doivent etre posés au complet
  • {
  • fprintf(stdout,"\n\n # Faire le test en boucle (1=Oui,0=Non) ? ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[3]); // Recuperation du 4eme parametre
  • }
  • system("CLS"); // Vidage de stdout
  • fprintf(stdout,"\n\n # Respecter la cAsSE (1=Oui,0=Non) ? ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[6]); // Recuperation du 7eme parametre
  • system("CLS"); // Vidage de stdout
  • fprintf(stdout,"\n\n # Choisissez une option:\n 1-Poser logiquement les questions\n 2-Inverser\n%s = ",(params[0])?" 3-Les deux\n":"\n = ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[4]); // Recuperation du 5eme parametre
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • system("CLS"); // Vidage de stdout
  • fprintf(stdout,"\n\n # Afficher les reponses (1=Oui,0=Non) ? ");
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • fscanf(stdin,"%d",&params[5]); // Recuperation du 6eme parametre
  • fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
  • system("CLS"); // Vidage de stdout
  • /* Boucle de remplissage */
  • for (bool rep=false; !feof(file_datas);) // rep = Variable qui nous permettra de passer des reponses aux questions dans la boucle
  • {
  • if ( params[1] ) // Si l'AntiRepeat est activer
  • {
  • aff_rep.push_back(false); // On ajoute un element dans le vector avec comme valeur FALSE (c'est a dire non affiché)
  • aff_ques.push_back(false); // Pareil
  • }
  • while(line.push_back(fgetc(file_datas)),true) // Une boucle infini (=Elle ne se termine pas à cause de sa condition mais plutôt à cause de ses instructions)
  • {
  • if ( line.back()=='\n' || line.back()==EOF ) // Si on arrive au caractere '\n' ou EOF cela veut dire qu'on se trouve NORMALEMENT à la fin de la ligne ou du fichier
  • {
  • if ( line.back()==EOF && !rep ) // Si le curseur est arrivé à la fin alors que c'est une question la syntaxe du fichier est alors declaré incorrect!
  • {
  • fprintf(stderr,"Le fichier est incorrect !\n\n");
  • syntaxe_correct = false;
  • break;
  • }
  • line[(line.back()=='\n')?line.size()-2:line.size()-1]='\0'; // On affecte la fin de la ligne
  • break;// On quitte la ligne pour passer à la suivante
  • }
  • }
  • if ( !syntaxe_correct )
  • {
  • break;
  • }
  • ((!rep)?questions:reponses).push_back(line); // On ajoute la ligne aux questions ou reponses selon la var rep
  • rep=(rep)?false:true; // Si cette var est true on la passe à false et vice versa
  • line.clear(); // On vide le vector pour la ligne suivante
  • }
  • fclose(file_datas);// On ferme le fichier ouvert
  • if ( !syntaxe_correct ) // Si la syntaxe du fichier est incorrect, on passe au fichier suivant s'il existe, sinon on quitte
  • {
  • if ( (nb_args-i_file)==1 ) // S'il n y a pas de fichiers suivant, on quitte
  • {
  • break;
  • }
  • else // Sinon on passe au fichier suivant
  • {
  • continue;
  • }
  • }
  • for(unsigned int i_show=0; i_show<((params[2]>0)?params[2]:questions.size()) || params[3];) // Boucle de teste
  • {
  • if(params[3] && (((params[2]>0)?params[2]:questions.size())-i_show)<=0) // Si le test est terminer et que l'utilisateur à choisis le test en boucle alors on prépare le suivant
  • {
  • fprintf(stdout,"\n >Test terminer!\n");
  • i_show=0; // Le curseur de l'avancement est mis à zero
  • for(unsigned int i=0;params[1] && i<aff_ques.size();i++) // Reinstialisation des varaible de l'antiRepeat
  • {
  • aff_ques[i] = false;
  • aff_rep[i] = false;
  • }
  • fflush(stdin);
  • getchar();
  • system("CLS");
  • }
  • unsigned int index = i_show; // index, cette variable va contenire le curseur de l'avancement si l'option hasard n'a pas était choisis sinon un nombre au hasard
  • bool ques_rep = (params[4]<3)?(params[4]<=1):(aleatoire(0,1)); // variable qui definis qu'elle partie va etre afficher, la question ou la reponse selon ce que l'utilisateur à choisis
  • if(params[0]) // Si le hasard est activer...
  • {
  • if(params[1]) //On verifie si l'antiRepeat est activer
  • {
  • do{
  • index = aleatoire(0,questions.size()-1);
  • }while(((ques_rep)?(aff_ques[index]):(aff_rep[index])));
  • ((ques_rep)?(aff_ques[index]):(aff_rep[index])) = true;
  • }
  • }
  • // Affichage de la question ou reponse selon le resultat de la var ques_rep
  • fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n >%s\n = ",i_show+1,questions.size(),(ques_rep)?(&questions[index][0]):(&reponses[index][0]));
  • vector<char> stduser; // Vector pour l'entrée clavier
  • fflush(stdin);
  • do{
  • stduser.push_back(getchar());
  • }while(stduser.back()!='\n' && stduser.back()!=EOF);
  • stduser.back()='\0';
  • system("CLS");
  • // On compare la reponse ou la question avec la question ou la reponse (selon ques_rep) avec ou sans casse (selon le choix de l'utilisateur)
  • if(strcompare(&stduser[0],(ques_rep)?(&reponses[index][0]):(&questions[index][0]),params[6]))
  • {
  • fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n MrCardo> Bonne reponse !\n",i_show+1,questions.size());
  • }
  • else
  • {
  • // Affichage de la reponse si l'utilisateur la souhaité
  • fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n MrCardo> Mauvaise reponse%s%s\n",i_show+1,questions.size(),(params[5])?"!\n La bonne reponse est : ":" ",(params[5])?(ques_rep)?(&reponses[index][0]):(&questions[index][0]):"!");
  • }
  • fflush(stdin);
  • getchar();
  • system("CLS");
  • i_show++;
  • }
  • if ( (nb_args-i_file)==1 ) // S'il n y a plus de fichier on quitte
  • {
  • break;
  • }
  • }
  • getchar();
  • return EXIT_SUCCESS;
  • }
#include <vector>
#include <string.h>
#include <time.h>
#include <cstdio>
#include <cstdlib>

using namespace std;

unsigned int aleatoire(const unsigned int min, const unsigned int max) // Fonction qui retourn un nombre entre min et max (min et max inclus)
{
    return (unsigned int)(min+((float) rand()/RAND_MAX*(max - min + 1)));
}

bool strcompare(const char *str1, const char *str2, bool casse=false) // Fonction qui compare 2 chaines de caracteres avec ou sans casse
{
    unsigned int max=strlen(str1);
    if(max!=strlen(str2))
    {
        return false;
    }
    for(unsigned int i=0; i<max; i++)
    {
        if((!casse && tolower(str1[i])!=tolower(str2[i])) || (casse && str1[i]!=str2[i]))
            return false;
    }
    return true;
}

int main(int nb_args, char** argv)
{
    srand(time(NULL));

    if( nb_args<2 ) // Si aucun fichier n'est passer aux parametres de l'exe, on quitte
    {
        fprintf(stderr,"\n\n # Aucun fichier ! Au revoir !\n\n");
        fflush(stdin);
        getchar();
        return EXIT_FAILURE;
    }
    for (unsigned int i_file=1; true; i_file++)
    {
        FILE* file_datas = fopen(argv[i_file],"rb");
        if ( file_datas == NULL ) // Si le fichier n'existe pas ou protegé contre la lecture
        {
            fprintf(stderr,"\n\n # Le fichier n%u (%s) est introuvable ! ",i_file,argv[i_file]);
            if ((nb_args-i_file)==1) // On abondonne le fichier et on passe au suivant s'il existe
            {
                break;
            }
            fprintf(stdout,"\n\n # Passage au fichier n%u\n\n",i_file+1);
            continue;
        }
        vector<vector<char> > questions, reponses; // vector pour les questions, et un autre pour les reponses
        vector<bool> aff_rep, aff_ques; // Variables pour sauvegarder l'index des questions et reponses et eviter les repetitions s'il est desactivé
        vector<char> line; // Variable pour stocker la ligne du fichier
        bool syntaxe_correct = true; // La variable d'etat du fichier
        int params[7] = {0}; // Le tableau de parametres du test
        system("CLS"); // Vidage de stdout
        fprintf(stdout,"\n\n # Poser les questions au hasard (1=Oui,0=Non) ? ");
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        fscanf(stdin,"%d",&params[0]); // Recuperation du 1er parametre
        system("CLS"); // Vidage de stdout
        if(params[0]) // Si l'hasard est activer on demande s'il faut activation l'"AntiRepeat"
        {
            fprintf(stdout,"\n\n # Activer l'option Anti-Repeat (1=Oui,0=Non) ? ");
            fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
            fscanf(stdin,"%d",&params[1]); // Recuperation du 2eme parametre
        }
        system("CLS"); // Vidage du stdout
        fprintf(stdout,"\n\n # Poser toutes les questions disponibles (0=Oui,nombre) ? ");
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        fscanf(stdin,"%d",&params[2]); // Recuperation du 3eme parametre
        system("CLS"); // Vidage de stdout
        if(!params[2]) // Si les questions doivent etre posés au complet
        {
            fprintf(stdout,"\n\n # Faire le test en boucle (1=Oui,0=Non) ? ");
            fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
            fscanf(stdin,"%d",&params[3]); // Recuperation du 4eme parametre
        }
        system("CLS"); // Vidage de stdout
        fprintf(stdout,"\n\n # Respecter la cAsSE (1=Oui,0=Non) ? ");
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        fscanf(stdin,"%d",&params[6]); // Recuperation du 7eme parametre
        system("CLS"); // Vidage de stdout
        fprintf(stdout,"\n\n # Choisissez une option:\n 1-Poser logiquement les questions\n 2-Inverser\n%s = ",(params[0])?" 3-Les deux\n":"\n = ");
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        fscanf(stdin,"%d",&params[4]); // Recuperation du 5eme parametre
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        system("CLS"); // Vidage de stdout
        fprintf(stdout,"\n\n # Afficher les reponses (1=Oui,0=Non) ? ");
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        fscanf(stdin,"%d",&params[5]); // Recuperation du 6eme parametre
        fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
        system("CLS"); // Vidage de stdout
        /* Boucle de remplissage */
        for (bool rep=false; !feof(file_datas);) // rep = Variable qui nous permettra de passer des reponses aux questions dans la boucle
        {
            if ( params[1] ) // Si l'AntiRepeat est activer
            {
                aff_rep.push_back(false); // On ajoute un element dans le vector avec comme valeur FALSE (c'est a dire non affiché)
                aff_ques.push_back(false); // Pareil
            }

            while(line.push_back(fgetc(file_datas)),true) // Une boucle infini (=Elle ne se termine pas à cause de sa condition mais plutôt à cause de ses instructions)
            {
                if ( line.back()=='\n' || line.back()==EOF ) // Si on arrive au caractere '\n' ou EOF cela veut dire qu'on se trouve NORMALEMENT à la fin de la ligne ou du fichier
                {
                    if ( line.back()==EOF && !rep ) // Si le curseur est arrivé à la fin alors que c'est une question la syntaxe du fichier est alors declaré incorrect!
                    {
                        fprintf(stderr,"Le fichier est incorrect !\n\n");
                        syntaxe_correct = false;
                        break;
                    }
                    line[(line.back()=='\n')?line.size()-2:line.size()-1]='\0'; // On affecte la fin de la ligne
                    break;// On quitte la ligne pour passer à la suivante
                }
            }
            if ( !syntaxe_correct )
            {
                break;
            }
            ((!rep)?questions:reponses).push_back(line); // On ajoute la ligne aux questions ou reponses selon la var rep
            rep=(rep)?false:true; // Si cette var est true on la passe à false et vice versa
            line.clear(); // On vide le vector pour la ligne suivante
        }
        fclose(file_datas);// On ferme le fichier ouvert
        if ( !syntaxe_correct ) // Si la syntaxe du fichier est incorrect, on passe au fichier suivant s'il existe, sinon on quitte
        {
            if ( (nb_args-i_file)==1 ) // S'il n y a pas de fichiers suivant, on quitte
            {
                break;
            }
            else // Sinon on passe au fichier suivant
            {
                continue;
            }
        }
        for(unsigned int i_show=0; i_show<((params[2]>0)?params[2]:questions.size()) || params[3];) // Boucle de teste
        {
            if(params[3] && (((params[2]>0)?params[2]:questions.size())-i_show)<=0) // Si le test est terminer et que l'utilisateur à choisis le test en boucle alors on prépare le suivant
            {
                fprintf(stdout,"\n >Test terminer!\n");
                i_show=0; // Le curseur de l'avancement est mis à zero
                for(unsigned int i=0;params[1] && i<aff_ques.size();i++) // Reinstialisation des varaible de l'antiRepeat
                {
                    aff_ques[i] = false;
                    aff_rep[i] = false;
                }
                fflush(stdin);
                getchar();
                system("CLS");
            }
            unsigned int index = i_show; // index, cette variable va contenire le curseur de l'avancement si l'option hasard n'a pas était choisis sinon un nombre au hasard
            bool ques_rep = (params[4]<3)?(params[4]<=1):(aleatoire(0,1)); // variable qui definis qu'elle partie va etre afficher, la question ou la reponse selon ce que l'utilisateur à choisis
            if(params[0]) // Si le hasard est activer...
            {
                if(params[1]) //On verifie si l'antiRepeat est activer
                {
                    do{
                        index = aleatoire(0,questions.size()-1);
                    }while(((ques_rep)?(aff_ques[index]):(aff_rep[index])));
                    ((ques_rep)?(aff_ques[index]):(aff_rep[index])) = true;
                }
            }
            // Affichage de la question ou reponse selon le resultat de la var ques_rep
            fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n   >%s\n   = ",i_show+1,questions.size(),(ques_rep)?(&questions[index][0]):(&reponses[index][0]));
            vector<char> stduser; // Vector pour l'entrée clavier
            fflush(stdin);
            do{
                stduser.push_back(getchar());
            }while(stduser.back()!='\n' && stduser.back()!=EOF);
            stduser.back()='\0';
            system("CLS");
            // On compare la reponse ou la question avec la question ou la reponse (selon ques_rep) avec ou sans casse (selon le choix de l'utilisateur)
            if(strcompare(&stduser[0],(ques_rep)?(&reponses[index][0]):(&questions[index][0]),params[6]))
            {
                fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n   MrCardo> Bonne reponse !\n",i_show+1,questions.size());
            }
            else
            {
                // Affichage de la reponse si l'utilisateur la souhaité
                fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n   MrCardo> Mauvaise reponse%s%s\n",i_show+1,questions.size(),(params[5])?"!\n   La bonne reponse est : ":" ",(params[5])?(ques_rep)?(&reponses[index][0]):(&questions[index][0]):"!");
            }
            fflush(stdin);
            getchar();
            system("CLS");
            i_show++;
        }
        if ( (nb_args-i_file)==1 ) // S'il n y a plus de fichier on quitte
        {
            break;
        }
    }
    getchar();
    return EXIT_SUCCESS;
}

 Conclusion

Voila, voila! Vous avez tous et j'attend vos commentaires...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

18 avril 2009 06:19:32 :
J'ai corriger quelques erreurs dans les commentaires ^^

 Sources du même auteur

[C/C++] DÉTERMINER LES DIVISEURS D'UN NOMBRE AVEC DES INFORM...

 Sources de la même categorie

Source avec Zip CALLOCATOR par troctsch
Source avec Zip HEAPCOLLECTOR par troctsch
Source avec Zip GÉNÉRE UN TABLEAU DE CARACTÉRE AU FORMAT C CONTENANT LE BYTE... par kertimanoff
FRACTIONS EGYPTIENNES par lptm974
BITOPERATOR par FrancoisGauthier

 Sources en rapport avec celle ci

Source avec Zip HÉRITAGE, COMPOSITION ET POLYMORPHISME par anadeveloppeur
Source avec Zip Source avec une capture UTILITÉ DES FONCTIONS VIRTUELLES par guilhemmartincpp
Source avec Zip Source avec une capture UTILITÉ DU DESTRUCTEUR VIRTUEL par guilhemmartincpp
Source avec Zip Source avec une capture APPRENTISSAGE N°3 DE DIRECTX par seb2086
Source avec Zip Source avec une capture APPRENTISSAGE DE DIRECTX 02 par seb2086

Commentaires et avis

Commentaire de soso62fr le 18/04/2009 06:15:11

Petite remarque : Quand j'ecrit dans les commentaires "Boucle infini" c'est pour dire qu'elle se terminera pas à cause de sa condition mais plutôt des instructions qu'elle contient.

Commentaire de buno le 22/04/2009 15:24:31

Hello,
J'ai pas trop compris l'intérêt du projet..mais c'est sûrement parce qu'il n'est pas fini.
Plusieurs remarques sur le code:
- pourquoi avoir ré-implémenter la comparaison de chaine de caractères? strcmp() ou stricmp() pour ne pas prendre en compte la casse.
- au lieu de faire un double vector de char pour les questions/réponses (dont je n'ai pas trop compris comment il est géré), passe plutôt par une map<string, string>: chaque entrée de la map est un couple (question, réponse)
- la syntaxe est ptet à revoir pour debugger plus facilement:
if(params[3] && (((params[2]>0)?params[2]:questions.size())-i_show)<=0)
ou bien
((!rep)?questions:reponses).push_back(line);
Moi, j'aime bien...mais c'est pas le top pour débugger ;)

@+
Buno.

Commentaire de soso62fr le 25/04/2009 06:55:13

Bonjour Buno.

L'intérêt du projet est l'apprentissage de vocabulaires, j'avoue qu'il y a d'autres solutions pour apprendre le vocabulaires mais celle-ci fait partie de ces solutions qui simplifie l'apprentissage.
Cette solution peut par exemple aider pour l'apprentissage du vocabulaires anglais ou d'une autre langue.

Pourquoi je ré-implémente la fonction de comparaison de chaine de caractères ?
Ben, parce que la fonction strcmp() de la lib standard respecte la casse donc j'ai fait une fonction qui peut respecter ou pas la casse selon les besoins de l'utilisateur.

Sinon pour les autres propositions j'en prendrais compte lorsque je continuerai ce code car il n'est pas fini et en ce moment j'ai pas trop le temp pour ça!

Merci pour ton commentaire Buno!

Commentaire de buno le 26/04/2009 14:25:31

ok pour strcmp(), mais il existe stricmp() qui fait ce que tu souhaites

Commentaire de soso62fr le 26/04/2009 18:01:38

Ahhhh oui ok merci! =D

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Virtual, Volatile etc... J'y comprends rien ! [ par dominiquox ] .NET s'enervant [ par DarK ] J'en ai marre que Mico$oft nous fé passer a des technologie tel que le .NET ... Je trouve sa équerrant que micro$oft veut imposer sa technologie sur t aidez moi par ou commencer mon apprentissage du cpp et de directX ? [ par ksir ] je souhaite reliser un jeu en 3d pour cela je pense devoir utliser le c++ et directX seulement je 'y connait rien .par ou commencer mon apprentissage aidez moi !par ou commencer mon apprentissage du cpp et de directX ? [ par ksir ] je souhaite reliser un jeu en 3d pour cela je pense devoir utliser le c++ et directX seulement je 'y connait rien .par ou commencer mon apprentissage virtual key des touches de ponctuation [ par juliol ] bonjour, petite questionj'aimerais savoir si il existe des virtual keys(du genre VK_ ou quelque chose comme ca) pour les touches de ponctuation pour u thread et mfc!!!!!! [ par dambeaufort ] bonjour a tous, j'aimerais developper une apllication mfc avec plusieur thread. Ace stade je n'ai creer qu'un thread mais il bugue a l'execution (pas COM, DLL, ActiveX...autres ??? [ par yapud ] Bonjour, Je dois actuellement développer (dans le cadre d'un stage et en C++) un composant FTP fournissant ses services à d'autres programmes. En cher Apprentissage et reconnaissance de la parole en C++ [ par webmaster_aprepa ] Voici un site que j?ai cr&#233;&#233; sur un logiciel d?APprentissage et de REconnaissance de parole, il s?appelle APREPA. le site d'APREPA J?attend C++ Classe virtuelle et héritage [ par freepouy18 ] Bonjour, Voila, j'ai un souci avec l'utilisation de m&#233;thodes virtuelles pures lors de leurs red&#233;finition dans une sous-cla destructeurs et virtual [ par magic_Nono ] Bj, Un des principes de la POO est de toujour faire pr&#233;c&#233;der le destructeur du mot clef virtual afin qu'il soit appeler meme si il y a h&#23


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales