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--;
}
}
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.