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 :

programme du suivi de croissance de komate


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut programme du suivi de croissance de komate
    bonjours à tous,
    voilà je suit une formation de programmeur, j'apprend le C et C++. Dans le cadre de cette formation j'ai entrepris d'écrire un rpogramme pour suivre la croissance de ma jeune tortue komate. Le code source que j'ai écrit fonctionne, mais à mon avis, il y a moyen de épurer un peu. J'aurai souhaité vos conseilles pour améliorer ce scrript. Merci
    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
    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h> 
    using namespace std;
     main()
    {
    	char NOM_FICHIER[100] = "/var/www/komate/crois.txt";
    	FILE *FICHIER;
    	int DATE;
    	int POID;
    	int TAILLE;
    	do{
    		cout<<"Quelles date sommes nous ?: format JJMMAA\n";
    		cin>>DATE;
    	}while((DATE<010112)||(DATE>311214));
    	do{
    		cout<<"Combien de gramme pese komate ?: \n";
    		cin>>POID;
    	}while((POID<89)||(POID>500));
    	do{
    		cout<<"Combien de millimetre mesure komate ?: \n";
    		cin>>TAILLE;
    	}while((TAILLE<0)||(TAILLE>500));
    	//affichage resultat
    			cout<<"Au " << DATE <<" komate pese "<<POID <<" grammes et mesure "<<
    		TAILLE<<" millimetres \n" <<FICHIER;
    	FICHIER = fopen(NOM_FICHIER, "a");
    	fprintf(FICHIER, "%d 		|	 %d 		|	 %d\n",DATE, POID,TAILLE);
     
     
    	return 0;
    }

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Une chose qui pourrait être bien, ce serait de pouvoir revenir en arrière.
    Une faute de frappe peut toujours arriver.

    Tu pourrais soit proposer un menu pour modifier les paramètres entrés juste avant d'écrire dans le fichier, soit si l'utilisateur tape -1, on revient en arrière.

    Ensuite, pour l'écriture dans ton fichier, je te conseillerais de mettre des \t plutôt que des espaces.

    EDIT : pour ta date, tu ne vérifie pas la validité de la date ex : 12/58/2013 n'est pas valide

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut
    Merci pour ta réponse, je vais continuer à améliorer ce petit programme.

    En effet c'est une super idée de pouvoir modifier le fichier txt si l'utilisateur a commit une faute de frappe. Je vais aussi réfléchir à vérifier de manière efficace la date.
    Merci
    ++

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Un petite remarque de style : Il est rare de voir des MAJUSCULES pour des noms de variable, on réserve plus souvent ça pour des constantes.

    Sinon, tu utilises les flux (cin, cout) pour lire/écrire des informations à l'écran, mais pour écrire dans un fichier, tu utilises une autre technique, issue du C, alors que les flux marchent aussi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <fstream>
    using namespace std;
    int main()
    {
      ofstream fichier("/var/www/komate/crois.txt");
      fichier << "Aujourd'hui " << 42 << endl;
    }
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut
    Merci, encore pour ces quelques conseils et explications. Du coup j'ai apporté un certain nombre de modifications, notamment au niveau de la saisi par l'utilisateur de la date de mesure (Partie de code qui assure la validité de saisi de la date).
    Je n'ai pas trop compris comment utilisé le bout de code que tu as laissé JolyLoïc, c'est dommage parce qu'il m'a l'aire plus simple d'utilisation que le tout le remue ménage de mon code.
    Du coup j'ai réécrit mon code source, compilé, et la...
    le programme se lance
    c'est pas mal j'aime bien.
    Peut-être voyez vous encore des améliorations à apporter ?
    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
    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h>
    #include <fstream>
     
    using namespace std;
     main()
    {
    	char NOM_FICHIER[100] = "/home/sk8trasher/komate/komate_pousse.txt";
    	FILE *FICHIER;
    	int jour;
    	int mois;
    	int annee;
    	int POID;
    	int TAILLE;
    	do{
    		cout<<"Quelle date sommes nous ? \n";
    		cout<<"Saisir le jour (01, 02, 03, ...30,31) \n";
    		cin>>jour;
    	}while((jour<=0)||(jour>31));
    	do{
    		cout<<"Saisir le mois (01, 02, 03, ...11, 12) \n";
    		cin>>mois;
    	}while((mois<=0)||(mois>31));
    	do{
    		cout<<"Saisir l'annee (2012, 2013, 2014...2049, 2050) \n";
    		cin>>annee;
    	}while(annee<2012);
     
    	cout<< "Nous sommes le" <<jour<<"/"<<mois<<"/"<<annee<<endl;
    	do{
    		cout<<"Combien de gramme pese komate ?: \n";
    		cin>>POID;
    	}while((POID<89)||(POID>500));
    	do{
    		cout<<"Combien de millimetre mesure komate ?: \n";
    		cin>>TAILLE;
    	}while((TAILLE<0)||(TAILLE>500));
    	//affichage resultat
    		cout<<"le " <<jour<<"/"<<mois<<"/"<<annee<<" komate pese "<<POID 
    		<<" grammes et mesure "<<TAILLE<<" millimetres \n" <<FICHIER;
    		FICHIER = fopen(NOM_FICHIER, "a");
    		fprintf(FICHIER,"%d\t%d\t%d\t%d\t%d\t\n",jour, mois, annee, POID,TAILLE);
    	return 0;
    }

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * NOM_FICHIER = "/home/sk8trasher/komate/komate_pousse.txt";
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char NOM_FICHIER[100] = "/home/sk8trasher/komate/komate_pousse.txt";
    me semble plus intéressant car tu ne prend que l'espace dont tu as besoin (en plus, il ne me semble pas que tu modifie ta chaîne de caractère).

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Quitte à faire de C++, autant utiliser un string.

    Citation Envoyé par sk8trasher Voir le message
    Peut-être voyez vous encore des améliorations à apporter ?
    Fermer le fichier: fclose(FICHIER) à la fin?
    Pour mieux comprendre le code de JolyLoic, tu peux regarder la Manipulation des fichiers. La syntaxe pour écrire reste la même que pour cout.

Discussions similaires

  1. Morceau de programme : suivi de pièce
    Par Percolateur dans le forum Automation
    Réponses: 1
    Dernier message: 17/03/2014, 11h12
  2. Programme de suivi simultané de plusieurs objets colorés
    Par infiniteLoop dans le forum OpenCV
    Réponses: 0
    Dernier message: 09/06/2013, 11h16
  3. Réponses: 4
    Dernier message: 20/01/2013, 12h50
  4. suivi structurel de la programmation dynamique
    Par m_baadeche dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 04/12/2010, 13h09
  5. Réponses: 3
    Dernier message: 20/06/2008, 00h12

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