|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 86
|
[C++]Struct complesso
Devo fare una specie di database che contenga degli indirizzi email,delle date di nascita,dei numeri di telefono eccetera,ed avere la possibilita' di aggiungere degli utenti.
Mi spiego meglio,ho fatto uno struct del genere: struct archivio{ char nome; char indirizzo; char email; }utente; In questo modo pero' posso gestire i dati di una sola persona,nel caso "utente". C'e' un modo in cui io possa gestire un numero illimitato di utenti?O almeno,non dico illimitato,ma almeno maggiore. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
|
Potresti utilizzare un <vector> o una <list> di tali oggetti, o manualmente creare un puntatore alla struct e gestire a modi linked list il tutto.
Ma visto che lo fa la STL... perke perdere tempo?
__________________
Code without tests is broken by design. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 86
|
Grazie.
Potresti farmi degli esempi? Sarebbe corretto se mettessi un array? per esempio: struct archivio { char nome; char email; char indirizzo; }utente[40]; in modo che quando vado ad aggiungere degli utenti basta che faccia un ciclo for? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
usare la `struct` è condizione necessaria?
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Un esempio più valido: Codice:
struct archivio
{
char nome[30];
char email[40];
char indirizzo[60];
};
Codice:
struct archivio utenti[40];
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
Ciò che volevo sapere era se utilizzare la struct fosse un compito didattico assegnatogli.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo Ultima modifica di maxithron : 16-01-2006 alle 15:19. |
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
se non sai quanti saranno gli utenti allora l'ideale è usare una lista e, dato che stai usando il c++ allora farei una bella classe
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 86
|
E' "indicato" l'uso dello struct,ma provate a farmi un esempio con le liste e le classi.
Comunque era solo a titolo esplicativo l'aver messo le variabili di un solo carattere. |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
|
visto che lavori in C++...
la struct ha accesso public di default, quindi se la lasci cosi chiunque, anche dall'esterno, puo accedere e modificare i dati. invece di char[] per nome e cognome potresti usare <string>, cosi come, invece di usare un vettore di 40 elementi, potresti usare <vector> in modo da poter gestire un numero qualsiasi di utenti (e se poi sono piu di 40?) Visto che tutte ste cose le fa la STL... oltre che piu sicuro, direi che è anche piu veloce da fare
__________________
Code without tests is broken by design. |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Codice:
#include "stdafx.h"
using namespace std;
struct data{
int num;
};
struct nodo {
data value;
nodo *pNext;
};
class list{
public:
list ();
~list ();
void insert_value (int val);
void see_list ();
private:
nodo *Testa;
};
/* costruttore */
list::list (){
Testa = NULL;
}
/* distruttorre */
list::~list (){
nodo *x;
while (Testa != NULL){
x = Testa;
Testa = Testa->pNext;
delete (x);
}
}
/* metodo per inserire il valore nella lista */
void list::insert_value(int val){
nodo *x;
x = new (nodo);
x->pNext = Testa;
x->value.num = val;
Testa = x;
}
/* mostra lista */
void list::see_list (void){
nodo *x;
x = Testa;
while (x!=NULL){
cout << "Valore:\t" << x->value.num<<endl;
x = x->pNext ;
}
}
/* main */
int main(void)
{
int n, val;
list lista_int;
cout << "Inserisci il numero di elementi da caricare:\t";
cin >> n;
for (int i=0;i<n;i++){
cout << "Inserisci il "<<i+1<<"numero:\t";
cin >>val;
lista_int.insert_value (val);
}
cout << "Lista:"<<endl<<endl;
lista_int.see_list ();
system ("PAUSE");
return 0;
}
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#15 |
|
Junior Member
Iscritto dal: Dec 2005
Città: Pescara
Messaggi: 9
|
C++ soluzione
Allora.....si la struct è necessaria, altrimenti come faresti a inserire + informazioni di uno stesso studente???Magari usa anche delle struct annidate.
Quello che devi fare è creare una lista collegata di studenti. Ti spiego meglio...una lista contiene degli elementi...uno di questi puo essere un intero, una stringa, o una struct, e l'altro è un puntatore all'elemento successivo (la struct è come se fai un typedef che pero contiene molte informazioni). TI FACCIO UN ESEMPIO Per creare una lista di interi la struct deve essere: struct elemento; { int valore; elemento*succ; }; poi se vuoi fare una lista di struct devi andare a toccare solo INT VALORE...ovviamente devi dare da input o inizializzare una variabile al numero di persone che ti servono. Non ti consiglio di utilizzare char e quindi un array di carattere, poiche altrimenti hai difficoltà nell'immissione dei dati...usa le string (#include <string>)..... Per leggere le stringhe pero non utilizzare il solito CIN xke altrimenti il programma non riesce a leggere gli spazi... TI POSTO UNA FUNZIONE PER LEGGERE LE STRINGHE void LetturaStringa(string & parola) { char ch; st=""; cin.get(ch); if (ch!='\n') st=ch; while (cin.get(ch) && ch!=''\n'') st += ch; } ovviamente per leggere una stinga usi la funzione passando il dato per valore; ex: LetturaStringa (parola) Parola diventa ST, la funzione legge (cioe scrivi) la stringa e con la & (passaggio per riferimento) la ricede al main.....per altri chiarimenti scrivimi [email protected] CIAO E BUON C++ Ultima modifica di zerocool_pe : 17-01-2006 alle 20:33. |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#17 |
|
Junior Member
Iscritto dal: Dec 2005
Città: Pescara
Messaggi: 9
|
no.....se tu fai:
string parola; cin >> parola; e inserisci una parola con lo spazio, per esempio un cognome: "Di Felice".....il programma si interrompe...serve obbligatoriamente una funzione come quella che ho fatto io |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Oct 2005
Città: Genova
Messaggi: 937
|
Quote:
Un'altra possibilita' e' usare la getline: Codice:
#include <iostream>
#include <string>
int main()
{
std::cout << "E scrivi qualcosa... " << std::endl;
std::string the_input;
getline(std::cin, the_input);
std::cout << std::endl << "Hai scritto: " << the_input << std::endl;
return 0;
}
__________________
MacMini Late 2009/MacMini 2018 |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Oct 2005
Città: Genova
Messaggi: 937
|
Quote:
La getline invece (IMHO) e' il modo corretto.
__________________
MacMini Late 2009/MacMini 2018 |
|
|
|
|
|
|
#20 |
|
Junior Member
Iscritto dal: Dec 2005
Città: Pescara
Messaggi: 9
|
Si, anke cosi va bene...a me pero rimane molto piu facile usare una funzione che me la salvo ogni volta e la copio e incollo dove vogliio
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:15.




















