IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

mon programme non orienté objet


Sujet :

C++

  1. #21
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 411
    Par défaut
    TI-R : Le for(; a un avantage sur le while(true) : Il ne donne pas de Warning sur les mauvais compilateurs (c'est-à-dire: Les compilateurs Microsoft, en Warning niv.4)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  2. #22
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Ah ok je ne savais pas
    Mais en même temps le warning niveau 4 (je ne connais que celui de VC++6)

    Pour enlever des warnings qui (pour moi) non pas lieu d'être faut s'accrocher , sans parler des erreurs que tout le monde connait avec les for(int i; ... for(int i; -> error double déclaration de i.

  3. #23
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    sans parler des erreurs que tout le monde connait avec les for(int i ... for(int i -> error double déclaration de i
    Il arrive un moment où l'avertissement affiché devrait être "jetez moi à la poubelle". VC6 c'est vraiment préhistorique ; pour info Microsoft ne distribue même plus Visual C++ Toolkit 2003, c'est 2005 Express ou rien.

    Mais je crois qu'on s'écarte du sujet

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    Bon, au lieu de m'embêter à faire une comparaison avec (char).
    est ce que je peu pas comparer 2 caractères ?
    Genre je dis :

    char Carazero[2] = "0";
    if (c == Carazero)
    ect ...
    Sa m'éviterai d'avoir le test au début du listing .
    Et le code serai plus propre .
    C'est possible ?

    j'ai transformé les deux boucle for en while comme vous me l'avais consseillé .
    Pour l'instant (j'ai déja compilé et sa marche .)
    Sa donne sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #25
    Membre éclairé
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char Carazero[2] = "0";
    if (c == Carazero)
    ect ...
    ca risque pas de fonctionner. Parce que le string en C est un pointeur.

    hindflo> je te conseille de bosser d'abord sur les tutoriels du web ou de lire un bon livre sur le C avant de revenir sur ton projet. Ca nous prendrait trop de temps de tout corriger, et nos explications seraient bien trop insuffisantes pour que tu puisses en comprendre quelque chose.
    Essayes donc d'abord de bien comprendre les concepts fondamentaux du language C et de la programmation.

  6. #26
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    D'accord, merci pour vos réponses.
    En attendant l'ancien programme fonctionne, je pourrais m'en contenter.
    Je recommencerais plus proprement quand j'aurais un peu plus d'expérience.

Discussions similaires

  1. programmation informatique orienté objet
    Par sobtisaad dans le forum Langage
    Réponses: 1
    Dernier message: 03/03/2011, 11h39
  2. Diagramme de classe pour projet PHP non orienté objet
    Par dekalima dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 25/01/2011, 19h46
  3. UML et le non orienté objet
    Par kiranis dans le forum UML
    Réponses: 3
    Dernier message: 24/06/2008, 23h00
  4. Correction de mon tetris dit "orienté objet"
    Par javator dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2007, 17h25
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo