Originariamente inviata da
oregon
Non hai seguito il consiglio. Dopo
cin>>ele.key;
non mi pare che hai inserito la cin.ignore();
Oregon sai per caso dirmi perchè mi salta le istruzioni nel for per la stampa degli elementi dell'array di struct all'interno della funzione write_element?
main:
codice:
#include "VettStruct_lib.h"
int main(){
List Mylist;
Element MyElement;
int List_size;
read_list(Mylist, List_size);
write_list(Mylist, List_size);
}
funzioni gestione array di struct
codice:
#include "VettStruct_lib.h"
void read_list(List &L, int size){
cout<<" Inserisci il numero degli elementi della lista: ";
cin>>size;
for(int i=0; i<size; i++){
read_element(L[i]);
create_element(L[i]);
}
}
void write_list(List &L,const int size){
cout<<"Stampo gli elementi della lista : \n";
for(int i=0; i<size; i++){
cout<<(i+1)<<") ";
write_element(L[i]);
}
}
libreria per la gestione :
codice:
#include "Struct_lib.h"
#define L_DIM 100
typedef Element E;
typedef E List[L_DIM];
void read_list(List &, int );
void write_list(List &,const int );
Funzioni gestione elementi struct:
codice:
#include "Struct_lib.h"
void read_element(Element &E){
E.info=0;
E.key=0;
}
void create_element(Element &E){
String name;
cout<<"\n Iserisci la chiave dell'elemento :";
cin>>E.key;
cin.ignore();
cout<<"\n Iserisci la descrizione dell'elemento :";
cin.getline(name, N-1, '\n');
if(E.info) delete[] E.info;
E.info=new char [strlen(name)+1];
strcpy(E.info, name);
cin.ignore();
}
void write_element(Element &E){
cout<<E.info<<" "<<E.key<<endl;
}
Libreria gestioni elementi struct:
codice:
#include <iostream>#include <cstring>
#include <cstdlib>
using namespace std;
#define N 100
struct Element{
char *info;
int key;
};
typedef char String [N];
void read_element(Element &);
void create_element(Element &);
void write_element(Element &);
Questo è quello che mi stampa:
2.png