Correcteur de ponctuation

Contenu du snippet

Mon petit programme corrige les fautes de ponctuation telleque un espace avent un poin, la virgule, poin virgule, deux poins etc...
ou le menque d'espace après la vigule, le point etc...

Source / Exemple :

#include <windows.h>
#include <fstream>
using namespace std;
bool bMaj=false;
const char*PtCcin;
int u;
string cCint;
int param(int u);//déclaration de param (fonction pour les testes voir plus bas)

main(int argc,char**argv)
{        
         
         ofstream Fichier;
         ifstream fStr;
         /*déclaration des constantes*/
         const char CcTestVir=',';   
         const char CcTestPoin='.';
         const char CcTestDbPoin=':';
         const char CcTestPoinVir=';';
         const char CcTestExclam='!';
         const char CcTestIntero='?';
         const char CcTestParent=')';
         
         fStr.open(argv[1], fstream::in);//ouverture du texte qui a ouvert le programme
         if(fStr)
         {
            /*Création d'une copy de chemin d'accès pour ne pas toucher au texte originale*/   
                 char*teste=argv[1];//récupération du chemin d'accès qui a ouvert le programme
                 int ilongChemin=strlen(teste);//récupération de la longueur du chemin
                 char suit[ilongChemin+10];//création d'un tableau pour stoquer le chemin
                 strncpy(suit,teste,ilongChemin-4);//copy du chemin sans le .txt
                 strcat(suit,"_corriger.txt");//rajout de "_corriger.txt" dans le chemin d'accès
            /*************************************************************************/
                       Fichier.open(suit);//ouverture du texte en mode écriture 
                
                        while(getline(fStr, cCint) ){//boucle sur le numbre de ligne
                                        PtCcin=cCint.c_str();
                                 int ii=strlen(PtCcin);
                                 u=0;
                                 for(int i=0;i<=ii;i++){//boucle sur le numbre de lettre dans une ligne
                                  
                                         if(*PtCcin==' ') 
                                         {
                                                       PtCcin++;
                                                       if(*PtCcin==CcTestVir)
                                                       {PtCcin--;cCint.erase(u,1);}else
                                                       if(*PtCcin==CcTestPoin)
                                                       {PtCcin--;cCint.erase(u,1);}else
                                                       if(*PtCcin==' ')
                                                       {PtCcin--;cCint.erase(u,1);}else
                                                       if(*PtCcin==CcTestParent)
                                                       {PtCcin--;cCint.erase(u,1);}else
                                                       {PtCcin--;}
                                                       }      
                                                       
                                                       
                                                     
                         /*un switch pour voir quel lettre/signe nous avons*/
                                        switch(*PtCcin)
                                        {
                                                       case ',':
                                                             PtCcin++;
                                             if(*PtCcin!=' '){
                                                          u++;cCint.insert(u," ");
                                                          *PtCcin--;u--; 
                                                         }
                                                          else{PtCcin--;}
                                                          break;
                                                            
                                                       
                                                       case '.':
                                             bMaj=true;
                                             PtCcin++;
                                             if(*PtCcin==CcTestPoin)
                                             {PtCcin--; break;}else
                                             if(*PtCcin!=' '){
                                                          ii++; u++;cCint.insert(u," ");
                                                          *PtCcin--;u--; 
                                                         }
                                                          else{PtCcin--;}
                                                          break;   
                                                       case':':     
                                                            PtCcin++; 
                                                            if(*PtCcin==CcTestParent) 
                                                            { 
                                                            PtCcin--; 
                                                            break; 
                                                            }else{PtCcin--; 
                                                            param(u);}
                                                            break;
                                                       case';':     
                                                            param(u);
                                                            break;
                                                       case'!':    
                                                            param(u);
                                                            bMaj=true;
                                                            break;
                                                       case'?':     
                                                            param(u);
                                                            bMaj=true;
                                                            break;    
                                                  
                                                     default: 
                                                     { 
                                                     if(bMaj==true && islower(*PtCcin)) { 
                                                      bMaj=false; 
                                                      char temp[2]; 
                                                      temp[0] = (char)((*PtCcin)&0xDF); 
                                                      temp[1]=0;
                                                      cCint.replace(u,1,&temp[0]); 
                                                      }
                                                      bMaj=false; 
                                                      break; 
                                                        }  
                                                         }
                                                            
                                         
          u++;  PtCcin++;
              }
                Fichier << cCint<<"\n";//écriture du texte dans le fichier _corriger.txt 
                  }
                  //on ferme   
                 Fichier.close();
                 fStr.close(); 
 MessageBox(NULL,"Correction terminé","Fin",MB_OK);//message de fin
   }else 
    {
    MessageBox(NULL,"FICHIER ERREUR","ERREUR",MB_ICONERROR);
    MessageBox(NULL,
    "Ce progamme a besoin d'un fichier texte (.txt) pour fonctionner\nOuvrez le avec un fichier !",
    "Info",MB_OK|MB_ICONASTERISK);
     return 0;
     }	
}
int param(int u)
{
 /*vérifiquation de l'espace avant notre signe*/       
         PtCcin--;
         if(*PtCcin==' ')
         {*PtCcin++;}else{
                              cCint.insert(u," ");
                              PtCcin++; 
                              u++;
                              }
 /*vérifiquation de l'espace après notre signe*/        
         PtCcin++;
         if(*PtCcin==' ')
         {
                       *PtCcin--;
                        }else{
                             u++;cCint.insert(u," ");
                             PtCcin--; 
                              }

}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.