Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
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
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Microsoft Defender: falso allarme sull'a...
Aerei in volo e truppe pronte all'assalt...
Usano Claude per hackerare OpenAI: ricer...
RatHat: il nuovo malware Android usa il ...
Domanda di petrolio in calo di 2,5 milio...
Il meglio delle offerte weekend Amazon a...
Dopo oltre 100 anni di tentativi, l'IA d...
Speciale robot aspirapolvere in offerta ...
L'IA sta cancellando i lavori junior? Il...
Debutta Chery Italia: non più sol...
Addio ai dischi? Xbox ci aveva già...
Speciale TV Amazon: 4 modelli, da 139€ f...
Il nuovo iPhone 18 Pro Max ha una ricari...
Speciale smartphone Android: 7 modelli i...
La Camera USA presenta il conto: i data ...
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: 12:30.


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