
Originariamente inviata da
oregon
Manca la cin.ignore() dopo la cin>>size
Elimina la cin.ignore() dopo la cin.getline
La funzione read_list deve accettare il parametro size per riferimento
void read_list(List &L, int &size)
Nel main devi passare il valore size
int size;
read_list(Mylist, size);
write_list(Mylist, size);
Gli passavo int size come int List_size in size era l'alias che usavo all'interno delle funzioni, comunque grazio mi scordo sempre di svuotare il buffer, comunque non so con che cosa sbaglio ma mi da errori.
main:
codice:
#include "VettStruct_lib.h"
int main(){
List Mylist;
Element MyElement;
int size;
read_list(Mylist, size);
write_list(Mylist, size);
}
funzioni array struct:
codice:
#include "VettStruct_lib.h"
void read_list(List &L, int &size){
cout<<" Inserisci il numero degli elementi della lista: ";
cin>>size;
cin.ignore();
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 array struct:
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 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);
}
void write_element(Element &E){
cout<<E.info<<" "<<E.key<<endl;
}
Libreria 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 &);
Questi sono gli errori:
Immagine.jpg