Bonsoir,

Apprenant dans le cadre scolaire le C++, je dois résoudre des exos assez basique afin de se familiariser avec le langage (c'est pour cela qu'il n y a pas de classe dans le code qui suit).

L'excercice consiste à créer un tableau "dynamique" de structure et à l'incrémenter à l'aide de new et delete [].

Dans ce contexte ci, il faut gérer un tableau de structure de pièce.

l'utilisateur ajoute des pièces jusqu'à cliquer sur 2 dans le choix préliminaire (continuer ou non).

J'ai déja réaliser l'excercice avec passage par une fonction mais j'ai essayé de le refaire par une manière "séquentielle et procédurale"...mais ca foire un peu

Pour info,je travaille sous code::blocks

Voici donc 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
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

struct piece{

    char nom[30];
    char code[12];
    char description[120];
    int stock;
};

int main(int argc, char * argv[])
{

    piece *unePiece =new piece[1], *tpiece=NULL;
    int reponse=1,num_piece=0;
    bool continuer=true;
    while(continuer)
    {

        cout << "Voulez-vous inseser une piece? [1 --> oui] [2 --> non]:";

        cin >> reponse;
        if(reponse==2)
        {

            delete[] unePiece;
            continuer=false;

        }
        else
        {
            num_piece++; //on ajoute une piece
            tpiece=new piece[num_piece]; //on crée un tableau temporaire avec le nombre de pièce incrémenté

            for(int i=0;i<num_piece-1 ;i++) //Si il y a une seule piece, ne rentre pas
            {
                tpiece[i]=unePiece[i]; // copie les deux tableaux
            }
            delete [] unePiece;

            cout << "Nom de la piece : "<<endl;
            cin >> tpiece[num_piece-1].nom; // rajoute le nom dans le dernier maillon du tableau
            cout<<tpiece[0].nom;
            cout<<endl<<num_piece-1<<endl;// rajoute le nom dans le dernier maillon du tableau
             // efface le tableau obsolete
            unePiece=tpiece; // repasse la main au tableau principal
            cout<<endl<<"unePiece[0]"<<unePiece[0].nom<<endl;

        }


    }
/*le passage du while au reste de la fonction main provoque la "perte" du premier maillon du tableau de structure piece*/

    cout<<endl;
    cout<<"Piece [0] : "<<unePiece[0].nom<<endl;
    for(int i=0;i<num_piece;i++)
    {
        cout<<"------------------------------"<<endl;
        cout<<"Piece num "<< i+1 << " :"<<endl;
        cout<<"Nom : "<< unePiece[i].nom<<endl;
    }
    delete []unePiece;
return 0;
}
Le problème est signalé dans les balise commentaire /* -->*/
Si je n'ai pas été assez clair, je répondrai à toute vos questions

D'avance Merci :p