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 :

Variable utlisé mais non initialisé


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Variable utlisé mais non initialisé
    Bonjour la communauté,

    Je vous préviens je suis un débutant en programmation et dans le forum aussi !
    J'ai un petit problème sur un programme que je dois faire en C++ pour les cours ! Il s'agit d'un programme devant traiter des datas, j'ai fais le script, et quand je génère la solution une première fois il me dit que la génération a réussi cependant, quand j’exécute le débogage il me remonte une erreur et quand je régénère mon programme il me dit "========== Génération : 0 a réussi, 0 a échoué, 1 mis à jour, 0 a été ignoré ==========.

    L'erreur remontée lors de l’exécution sans débogage est " la variable prod est utilisé sans avoir été initialisé", je me demande si tel est le cas, pourquoi il m'a pas remonté cette erreur lors de la génération ? Je suis pourtant assez sûre du code et je suis surpris du message.

    EN vous remerciant du temps que vous passerez pour me répondre !

    Voici le code:
    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
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <stdio.h>
    #include <sstream>
    #include <vector>
    using namespace std;
     
    class Product
    {
    	// Access specifier 
    public:
     
    	// Data Members 
    	int num_piece;
    	int ref;
    	int quantity;
    };
     
    int main() {
    	// File pointer reader
    	fstream fin;
    	fin.open("log.csv", ios::in);
    	// File pointer writer
    	std::ofstream fout;
    	fout.open("log-copie.csv");
     
    	// Read the Data from the file 
    	std::string line, word, temp;
    	// vector of products to group products with the same num_piece
    	vector<Product> products;
    	// Current product (by line)
    	Product prod;
    	// first num_piece
    	int start = 1;
    	// boolean indicating the end of the file
    	bool end;
    	// to avoid processing the header
    	getline(fin, temp);
     
    	while (!fin.eof()) {
    		// read an entire row and 
    		// store it in a string variable 'line' 
    		getline(fin, line);
    		// check that we still have lines with content 
    		if (line.empty()) {
    			end = true;
    		}
    		// used for breaking words 
    		std::stringstream s;
    		s.str(line);
     
    		// read every column data of a row and 
    		// store it in a string variable, 'word' 
    		vector<int> infos;
    		while (getline(s, word, ';')) {
     
    			infos.push_back(stoi(word));
    		}
    		// after reading the product infos we create an object with those values
    		if (infos.size() == 3) {
    			prod.num_piece = infos[0];
    			prod.ref = infos[1];
    			prod.quantity = infos[2];
    			infos.clear();
    		}
    		// if the num_piece of the prod change , then we save lines of the corresponding num_piece into the file
    		if (prod.num_piece > start || end == true) {
    			auto iter = products.begin();
    			for (; iter != products.end(); iter++)
    			{
    				fout << (*iter).num_piece << ";" << (*iter).ref << ";" << (*iter).quantity << endl;
    			}
    			// we move to the next num_piece
    			start = prod.num_piece;
    			// clear the products vector 
    			products.clear();
    		}
    		// we put all products with the same num_piece into a vector
    		// we keep only the (ERgt)max quantity for each reference value
    		auto iter = products.begin();
    		int found = 0;
    		for (; iter != products.end(); iter++)
    		{
    			if ((*iter).ref == prod.ref) {
    				found = 1;
    				if (prod.quantity > (*iter).quantity) {
    					(*iter).quantity = prod.quantity;
    				}
     
    			}
    		}
    		if (not(found)) products.push_back(prod);
     
    	}
    	// save kept lines
    	fout.close();
     
     
     
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par prog_du_dimanche Voir le message
    L'erreur remontée lors de l’exécution sans débogage est " la variable prod est utilisé sans avoir été initialisé"
    C'est quoi le vrai message d'erreur et quand apparait-il ?
    "variable non initialisée", c'est une erreur de compilation, et non d'exécution.
    Et prod étant un Product, il y a une initialisation avec le constructeur par défaut.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci de m'aider !
    Voici le message d’erreur lorsque j’exécute le programme sans débogage !
    Nom : Capture zve.JPG
Affichages : 404
Taille : 109,0 Ko

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je dis peut être des bêtises, mais si c'est une erreur de compilation, peut être que j'ai utilisé une librairie qui n'est pas accessible au compilateur ? pourtant je crois avoir utilisé des librairies assez classique non ? Peut être une erreur de syntaxe mais je vois pas où :/

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    C'est une erreur d'exécution.
    Mais c'est une erreur d'exécution spécifique à MSVC/Visual Studio en Debug.
    En debug, MSVC met en place des mécanismes pour détecter au Runtime, dans le débogueur, le fait d'accéder à des données non-initialisés.
    Ici, les données non-initialisées, c'est tous les champs de la variable "prod".
    Vous n'avez pas définit de constructeur pour la classe "Product".
    Le compilateur va donc générer automatiquement un constructeur qui n'initialisera que les champs de type classe/structure (avec leur constructeurs sans paramètres - par défaut) et pas les champs "primitifs".
    Donc les champs "num_piece", "ref" et "quantity" ne sont pas initialiser.
    Le plus simple, c'est de définir un constructeur sans paramètre qui initialise ces champs via une liste d'initialisation.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, that work ! y'a encore des beugs mais je vais essayé de trouvé seul dans un premier temps ! bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème au niveau de mon petit projet jee test
    Par rachidhajar dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 09/10/2017, 17h19
  2. Réponses: 1
    Dernier message: 01/06/2010, 19h21
  3. batch-problème pour pointer vers mon log
    Par af_airone dans le forum Windows
    Réponses: 2
    Dernier message: 20/04/2005, 08h58
  4. [DNS MX]Avec DynDNS.org, problème au niveau du MX
    Par Swoög dans le forum Développement
    Réponses: 9
    Dernier message: 24/08/2004, 22h00
  5. [DirectShow] problème lorsque je détruit mon graphe
    Par juldjin2 dans le forum DirectX
    Réponses: 1
    Dernier message: 04/02/2004, 21h30

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