1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
| /* fichier de base */
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
int main(int nNumberofArgs , char* pszArgs[])
{
double ecriture , ValeurAjou = 50 ,ValeurDebu = 0 ;
const char Nom[] = "scor.txt"; //la constante Nom de type char contien le nom du fichier
// cette parti ne sert que pour plus tard dans le listing le but est de
// détérminé les valeur des caractéres de l'ordianteur sous lequel il tourne
// Le faire dans une classe ne serait pas une mauvaise idée mais je comprend pas
// comment on utilise une fonction
char Carach[2]= "0" ;
int nat = 0 ;
while ((char) nat == Carach[0] )// a partir du 0 je peut deviné les 9 autre chiffre
nat++ ;
// maintenan je vois pour la virgule : j'en aurez besoin aussi
char Caravir[2] = ",";
int vir = 0 ;
while (Caravir[1] != (char) vir)
vir ++ ;
// finit: maintenan que c'est fais on passe au chose sérieuse :
ifstream* pFileStream = new ifstream (Nom);//ouvre le fichier contenu dans nom
if (!pFileStream->good()) //si l'ouverture n'est pas bonne
{
cout << "impossible d'ouvrir :"
<< Nom
<<"\n"
<<"le fichier va etre reecri "
<<"si vous jouez pour la premier fois c'est normal ..."
<< endl ;
system ("PAUSE");
ValeurDebu = 0 ;
ecriture = ValeurDebu + ValeurAjou;
ofstream my(Nom);//ouvre le fichier contenu dans la constante "Nom"
my << ecriture //ecrir la valeur de "ecriture" dans le fichier texte
<< ","
<< endl ; //fin
cout << "resultat :"<< ecriture <<"\n"; //affiche le resultat
system ("PAUSE");
return 0; //fin du programme
}
else //si non
{
for(;;)//boucle sans argument donc qui ne se termine pas mais qui permet l'utilisation de break
{
char lecture[256];
pFileStream -> getline( lecture,256 );//en gros il attibu les caractere du texte à la chaine
//de caractere lecture de 256 caractere
if (pFileStream -> fail())//permet de rendre le programme plus robuste
{
break;
}
cout<< "somme actuel :" << lecture << "\n";
system ("PAUSE");
cout<<"additione à :\n" << ValeurAjou << "\n";
system ("PAUSE");
int i = 0 ;
for(;;)//boucle infini
{
if (lecture[i] == (char) vir )// si le caractere est une virgule
{ cout << "nat = " << nat << "\n";
cout << i << ":"<<lecture[i] << "\n" ;
i= i - 1 ; // on fais en sorte que i possede les coordoné du premier chiffre avans la virgule
cout << " fin de la boucle infini 1 i= "<< i << "\n" ;
cout << " ------------------------- \n";
break ;//et fin de la boucle
}
i++ ; // i + 1
} // cette boucle remplace avantagesement les centaine de ligne avec if de la verssion 1.1 et 1.2
int m = 1 , c = 0 , r = 0;
i = i -1 ;
for (;;)
{
cout << i <<" = " << lecture[i]<< "\n" ;
c = (char) lecture[i] ;
cout << c << "\n" ;
int nul = nat , un = nat + 1 , deux = nat + 2 ,trois = nat + 3 ;
int quatre = nat + 4 , cinq = nat + 5, six = nat + 6 ;
int sept = nat + 7 , huit = nat + 8 , neuf = nat + 9 ;
if ( c == (char) nul )
{r = 0 ; }
if (c == (char) un )
{r = 1 ; }
if ( c == (char) deux )
{r = 2 ; }
if ( c == (char) trois )
{r = 3 ; }
if ( c == (char) quatre )
{r = 4 ; }
if ( c == (char) cinq )
{r = 5 ; }
if ( c == (char) six )
{r = 6 ; }
if ( c == (char) sept )
{r = 7 ; }
if ( c == (char) huit )
{r = 8 ; }
if ( c == (char) neuf )
{r = 9 ; }
cout << r << " fois " << m <<" eguale " << r*m << "\n";
ValeurDebu = ValeurDebu + ( r * m); // r (retour) represente l'unité et m le multiple de 10
// par exemple 123 = 1*3 + 2 * 10 + 1 * 100
//c'est l'idee ici : cree un nombre par couche de 10
//l'avantage est que se sistem n'a pas de limite
cout << "ValeurDebu = " << ValeurDebu << "\n" ;
system ("PAUSE");
i= i - 1 ;
m = m * 10 ;
if (i < 0) {break;}
}
//ci dessou c'est un cas impossible qui revelle la triche de l'utilisation
//ou un bug inatendu .
if (ValeurDebu < ValeurAjou)//ça arrive quand on demande la valeur d'un caractere
{
cout <<"erreur :resultat improbable !\n";
cout <<"soit il y a eu une erreur suite à une tricheri \n";
cout <<"soit vous étes arrivée à la limite .\n";
cout <<"(ce qui est peu probable )\n" ;
cout <<"reinitialisasion par defo ... "<<"\n" ;
cout <<" vous reparte a 50 \n" ;
system ("PAUSE");
ValeurDebu = 50 ;//comme la somme est impossible on la defini arbitraireman à 50
}
ecriture = ValeurDebu + ValeurAjou;
cout << ValeurDebu << "+" << ValeurAjou << "\n";//on voi ce qu'il ce passe comme
//sa perssone ne peut refuté le calcull (tant qu'il est vrai)
cout << "resultat :"<< ecriture <<"\n";
system ("PAUSE");
//ecriture de la valeur dans le fichier:
ofstream my(Nom);//on reouvre le fichier (on le cree si il existe pas
my << ecriture //on ecrit la valeur comptenu dans ecriture
<<","
<< endl ; //c'est fini pour l'ecriture
return 0; //fin du programme
}
}
}//fin du listing |