problème variable d'un bloc a un autre
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:
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