Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-01-2006, 01:39   #1
MaxGuevara
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.
MaxGuevara è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 01:57   #2
cj++
Member
 
L'Avatar di cj++
 
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.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 14:50   #3
MaxGuevara
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?
MaxGuevara è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 15:03   #4
maxithron
Senior Member
 
L'Avatar di maxithron
 
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
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 15:04   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da MaxGuevara
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?
Ciao, tieni presente solo alcune cose: nei tuoi due post vedo che hai messo nella struttura dei campi di 1 solo carattere. Occhio che così non basta! Inoltre dichiarare una variabile direttamente con la struct ... beh, secondo me è bruttissimo.
Un esempio più valido:
Codice:
struct archivio
{
    char nome[30];
    char email[40];
    char indirizzo[60];
};
Poi se sai di aver bisogno di 40 utenti puoi fare certamente:
Codice:
struct archivio utenti[40];
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 15:10   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maxithron
usare la `struct` è condizione necessaria?
Se vuoi "aggregare" insieme più dati di tipo diverso in un unico "contenitore", sì.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 15:14   #7
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
Quote:
Originariamente inviato da andbin
Se vuoi "aggregare" insieme più dati di tipo diverso in un unico "contenitore", sì.
Mi riferivo alle classi

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.
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 15:27   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maxithron
Mi riferivo alle classi
oops... come non detto

Quote:
Originariamente inviato da maxithron
Ciò che volevo sapere era se utilizzare la struct fosse un compito didattico assegnatogli.
Io direi che in ogni casi gli conviene usare una struct, altrimenti si incasina soltanto.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 18:32   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 00:35   #10
MaxGuevara
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.
MaxGuevara è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 02:36   #11
cj++
Member
 
L'Avatar di cj++
 
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.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 17:06   #12
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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:
Originariamente inviato da cj++
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
ma usando le classi e usando un puntatore a una lista in modo protect mi spieghi come fai accedere alla lista?

~§~ 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 17:07   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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:
Originariamente inviato da MaxGuevara
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.
guarda lasciami 30 minuti (spero che mi bastano) perchè mi devo fare un ese in matlab di segnali poi ti butto giù due righe e ti faccio vedere come si usa una lista sotto 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 18:04   #14
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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;
}
~§~ 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 20:31   #15
zerocool_pe
Junior Member
 
L'Avatar di zerocool_pe
 
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.
zerocool_pe è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 20:35   #16
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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:
Originariamente inviato da zerocool_pe
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++
scusa allora invece di fare tutto sto mecello basta che usa per le stringhe il tipo string


~§~ 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 20:53   #17
zerocool_pe
Junior Member
 
L'Avatar di zerocool_pe
 
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
zerocool_pe è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 22:55   #18
mr_hyde
Senior Member
 
Iscritto dal: Oct 2005
Città: Genova
Messaggi: 937
Quote:
Originariamente inviato da zerocool_pe
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
Ehm... _Se_non_ricordo_male_ alcune implementazioni di C++ permettono anche per questo caso di usare il manipolatore "noskipws" (la mia versione di g++ no).
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
mr_hyde è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2006, 23:18   #19
mr_hyde
Senior Member
 
Iscritto dal: Oct 2005
Città: Genova
Messaggi: 937
Quote:
Originariamente inviato da mr_hyde
Ehm... _Se_non_ricordo_male_ alcune implementazioni di C++ permettono anche per questo caso di usare il manipolatore "noskipws" (la mia versione di g++ no).
Lasciate perdere questa frase... Ho fatto mooolta confusione...
La getline invece (IMHO) e' il modo corretto.
__________________
MacMini Late 2009/MacMini 2018
mr_hyde è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2006, 20:29   #20
zerocool_pe
Junior Member
 
L'Avatar di zerocool_pe
 
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
zerocool_pe è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
Le 10 migliori offerte Amazon di Pasqua:...
Nuove fotografie dagli astronauti di Art...
La toilette della capsula Orion Integrit...
GeForce NOW: ecco tutte le novità in arr...
Il Realme 16 5G debutta sul mercato glob...
HONOR svela tre nuovi tablet: il più int...
Tineco Floor One S9 Master: aspira e pul...
Vivo X300 Ultra, il lancio globale è ini...
Offerte robot aspirapolvere Amazon: ECOV...
L'AI genera codice in 8 minuti e i senio...
Ring Intercom Audio a 44,99€ su Amazon: ...
Apple iPhone 16 crolla a 689€: ecco perc...
Google Pixel 9 a 449,90€ con caricatore ...
Ecco la top 7 delle offerte Amazon, aggi...
Ex ingegnere ammette il sabotaggio: migl...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v