Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-07-2007, 14:54   #1
mikisx
Senior Member
 
L'Avatar di mikisx
 
Iscritto dal: Sep 2006
Messaggi: 2189
[c++]mi aiutate a fare un programma per mio padre?

ciao,da 1 anno (scolastico)studio c++,ma la prof nn ci ha spiegato uan cosa secondo me importantissima....

sono pratico nel uso dei vettori e delle stringhe,conosco vari tipi di ricerca ,gli if ecc ...lecose basilari...

pero' ho sempre lavorato sulla ram!
nn sono in grado di memorizzare idati sul hd
es:
faccio una rubrica,inserisco i nomi,come chiudo il prog perdo i dati,io voglio che restino memorizzati sul hd....

mio padre gestisce dei condomini,lo vorrei aiutare nel tenere i conti e le varie spese ,se mi potete cortesemente spiegare il procedimento per memorizzare i file inizio a fare una bella bozza....poi a sorgente completa ve la passo e la condividiamo che ve ne pare?

ciao

michele
__________________
Asrock X79 extreme 11 || Intel I7 4960X || 32GB Vengeance 2400Mhz || R9 280x || Thermaltake 1200 || Obsidian 900D || 840 Evo
Cerco collaboratori per blog informatica
mikisx è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2007, 15:12   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Se la quantità di dati che devi conservare non è eccessiva, diciamo tra i 500 megabyte e un gigabyte, puoi usare un logger.

Dico 500-1000 megabyte pensando ad un sistema desktop non recentissimo ma il limite teorico è semplicemente la quantità di memoria disponibile al programma.

Un logger tiene i dati nella memoria del programma e realizza la persistenza registrando gli eventi che causano una mutazione dei dati conservati.

Che detto così magari sembra chissà che, ma è facilissimo da fare, manutenere ed estendere.

Non è l'unica alternativa (anzi, è sicuramente la meno tradizionale) ma ha parecchi vantaggi.

Se l'idea di sollazza e mi dici quali dati devono essere conservati, ti dico come si fa.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2007, 15:20   #3
mikisx
Senior Member
 
L'Avatar di mikisx
 
Iscritto dal: Sep 2006
Messaggi: 2189
grazie mille!

allora,ho un condominio e devo:
1-memorizzare i dati dei condomini-cf recapito telefonico ecc.-(lo faccio con le stringhe e poi uso lo strcat?)
2-tenere conto delle spesa mensile(avendo la possibilita' di vedere il mese di maggio le spese per la pulizia ,luce acqua ecc..e cosi per gli altri mesi) e di quella annuale...
3-dividere la spesa tramite i millesimi per singoli condomini(ce la fo)
4-poter tenere conto di quanto a pagato ogni condomino(per vedere se è in defict o eccesso)
5-tenere conto degli impiegati del condominio con relativi dati anagrafici,paga mensile e giorni di lavoro(portiere -giardiniere ecc...)

grazie

ps come mi ritorna tra le mani il c++(a scuola me lo danno free) inizio a mettermi sotto...e questione di giorni
__________________
Asrock X79 extreme 11 || Intel I7 4960X || 32GB Vengeance 2400Mhz || R9 280x || Thermaltake 1200 || Obsidian 900D || 840 Evo
Cerco collaboratori per blog informatica
mikisx è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2007, 15:22   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Per i file in C++ questa guida non è male per partire: http://www.daniweb.com/forums/thread6542.html
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2007, 15:27   #5
mikisx
Senior Member
 
L'Avatar di mikisx
 
Iscritto dal: Sep 2006
Messaggi: 2189
mi sa che con il vostro aiuto come torno a scuola il 10 in programmazione nn me lo toglie nessuno
__________________
Asrock X79 extreme 11 || Intel I7 4960X || 32GB Vengeance 2400Mhz || R9 280x || Thermaltake 1200 || Obsidian 900D || 840 Evo
Cerco collaboratori per blog informatica
mikisx è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 08:44   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il logger funziona in questo modo.

Supponiamo che i dati da conservare siano degli oggetti Condomino così fatti:

class Condomino
+long getId();
+string getNome();
+string getCognome();
+string getTelefono();
+string getCodiceFiscale();

Le operazioni che coinvolgono la persistenza dei Condomini, cioè la conservazione dei dati dei condomini tra un'esecuzione e l'altra dell'applicazione, sono solo tre.

1. crea un nuovo condomino
2. elimina un condomino
3. modifica i dati di un condomino

Quando nel programma si verifica uno di questi eventi noi prendiamo e scriviamo sul file di log, che è un file di testo, una stringa di identificazione dell'evento seguita da tutti i dati necessari per ricostruirlo.

Stabiliamo che le stringhe di identificazione siano:

CREA CONDOMINO
ELIMINA CONDOMINO
MODIFICA CONDOMINO

Per poter essere ricostruibile, l'evento "crea un nuovo condomino" richiede che il file di log riporti i dati del condomino creato. I dati necessari alla creazione di un condomino sono:

a) una intero long come identificatore univoco
b) una stringa per il nome
c) una stringa per il cognome
d) una stringa per il recapito telefonico
e) una stringa per il codice fiscale

Supponiamo che il programma crei, dietro richiesta dell'utente, questo Condomino:

id = 0
nome = mario
cognome = rossi
telefono = 123456
codice fiscale = blabla

Il logger scriverà sul file:

CREA CONDOMINO
0
mario
rossi
123456
blabla

L'eliminazione di un condomino può essere registrata sul file di log con l'identificatore ELIMINA CONDOMINO seguito dall'identificatore univoco del condomino eliminato:

ELIMINA CONDOMINO
0

La mutazione dei dati di un condomino sarà invece registrata come la creazione ma con un'intestazione diversa:

MODIFICA CONDOMINO
0
mario
rossi
789012
blabla

Alla fine della fiera, il contenuto del file di log somiglierà a questo:

Codice:
CREA CONDOMINO
0
mario
rossi
123456
blabla
CREA CONDOMINO
1
gianni
verdi
123333
blibli
CREA CONDOMINO
2
pietro
neri
44444
frufru
ELIMINA CONDOMINO
2
CREA CONDOMINO
3
franco
gialli
222222
gnagna
MODIFICA CONDOMINO
1
gianni
verdi
678888
blabla
...
...eccetera
La ricostruzione dello stato del programma a partire dal file di log è banale. Apri il file a applichi un algoritmo di questo tipo:

per ogni linea X nel file di log

se X è CREA CONDOMINO
1. la linea seguente è l'identificatore
2. la linea seguente è il nome
3. la linea seguente è il cognome
4. la linea seguente è il telefono
5. la linea seguente è il codice fiscale
6. prendi i dati letti, crea un condomino e infilalo nella memoria del programma

+se X è ELIMINA CONDOMINO
1. la linea seguente è l'identificatore del condomino da eliminare
2. cerca nella memoria il condomino che abbia quell'identificatore ed eliminalo

+se X è MODIFICA CONDOMINO
1. la linea seguente è l'id del condomino modificato
2. la linea seguente è il nuovo nome
3. la linea seguente è il nuovo cognome
4. la linea seguente è il nuovo telefono
5. la linea seguente è il nuovo codice fiscale
6. cerca nella memoria il condomino di identificatore id, eliminalo e rimpiazzalo con un nuovo condomino oppure cambia i suoi dati

Applichi lo stesso principio a tutte le altre modifiche e sei a posto. E che posto. Il logger, richiedendo la presenza di una controparte in memoria per l'uso dei dati da parte del programma, ciuccia una valanga di memoria. In cambio ti offre un motore di persistenza transazionale, cioè puoi isolare un gruppo di modifiche ed eliminarle in caso di errore, molto rapido nell'accesso ai dati, essendo conservati nella memoria volatile e, sopratutto, reversibile: il file di log non è altro che una pila delle transizioni che hanno portato il programma dal stato iniziale, vuoto, allo stato attuale. Eliminando l'ultima transizione registrata fai un passo indietro nel tempo. Nel campo delle applicazioni desktop si tratta di un valore assoluto. L'utente può compiere sui suoi dati le più distratte nefandezze ed avere comunque la garanzia che, in ogni istante, quella nefandezza sarà annullabile.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 13:07   #7
mikisx
Senior Member
 
L'Avatar di mikisx
 
Iscritto dal: Sep 2006
Messaggi: 2189
grazie,molto utile,credo di avere capito tutto,ma...:
non mi fare sembrare lollo, ma
questo
Quote:
class Condomino
+long getId();
+string getNome();
+string getCognome();
+string getTelefono();
+string getCodiceFiscale();
in quale parte lo metto?

io uso scrivere cosi:

Quote:
#include<iostream.h> //inserisco le librerie//
int //o float o double ecc ,dichiarazione dellevariab//
void main()
{
tieni conto che so utilizzare i vettori,le operazioni sulle stringhe,l'uso dello switch
,la ricerca binaria...cose che si fanno a scuola,purtroppo i prof non sono arrivati a finire e spero che con il vostro aiuto(da quello che ho capito siete programmatori)possa riuscire nel mio intento


dimenticavo,il log in che cartella si va a posizionare?
__________________
Asrock X79 extreme 11 || Intel I7 4960X || 32GB Vengeance 2400Mhz || R9 280x || Thermaltake 1200 || Obsidian 900D || 840 Evo
Cerco collaboratori per blog informatica
mikisx è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 14:10   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il file di testo che contiene le righe sputate dal logger lo puoi mettere dove ti pare ma sarebbe meglio metterlo nella cartella del tuo programma (magari in una sub directory "data").

Condomino è una classe. In C++, lingua che fortunatamente non uso, è una cosa che potrebbe somigliare a:

Codice:
...in Condomino.h
class Condomino {
    private:
        long id;
        string nome;
        string cognome;
        ...eccetera

    public:
        long getId();
        string getNome();
        string getCognome();
        ...eccetera
};

...in Condomino.cpp
#include "Condomino.h"
long Condomino::getId() { return id; }
string Condomino::getNome() { return nome; }
string Condomino::getCognome() { return cognome; }
...eccetera
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 15:02   #9
mikisx
Senior Member
 
L'Avatar di mikisx
 
Iscritto dal: Sep 2006
Messaggi: 2189
ma perchè in cpp mi hanno insegnato a scriverlo cosi?
__________________
Asrock X79 extreme 11 || Intel I7 4960X || 32GB Vengeance 2400Mhz || R9 280x || Thermaltake 1200 || Obsidian 900D || 840 Evo
Cerco collaboratori per blog informatica
mikisx è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 15:04   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da mikisx Guarda i messaggi
ma perchè in cpp mi hanno insegnato a scriverlo cosi?
Probabilmente non hai ancora fatto la programmazione ad oggetti
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 16:32   #11
mattia.pascal
Senior Member
 
Iscritto dal: Jun 2006
Messaggi: 1077
Secondo me è pazzesco fare un software del genere nel modo che ti stanno consigliando. Devi usare un database e se proprio ti serve memorizzare lo stato del programma usi la serializzazione.
mattia.pascal è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 16:54   #12
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Perchè è addirittura "pazzesco"?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 17:15   #13
mattia.pascal
Senior Member
 
Iscritto dal: Jun 2006
Messaggi: 1077
Mi sembra complicarsi inutilmente le cose.
mattia.pascal è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 17:53   #14
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Naturalmente è una questione di gusti. Per i professionisti del settore di necessità (se qualcosa va storto dire "ho usato un database come tutti" potrebbe salvarvi la ghirba).

Io credo che al più 300 linee di codice valgano lo sforzo se rapportate al risultato della formula Database = SQL del produttore + DDL + dispiegamento + amministrazione.

Non sono il solo.

http://blogs.sun.com/jag/date/20061020
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 17:59   #15
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Perchè è addirittura "pazzesco"?
nemmeno io riesco a capire per quale motivo gli stai consigliando di registrare tutte le operazioni che modificano lo stato del programma anziché solo lo stato del programma così com'è... facendo come dici tu, se ho capito bene, il log non smetterebbe mai di crescere; e poi non gli hai dato alcuna informazione specifica su come fare I/O su files in C++, che è sostanzialmente quello che lui voleva sapere. trovo strano che non lo sappia visto che ha incluso iostream (e pure male ), forse gli hanno insegnato solo l'I/O sulla console e non quello sui files.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 18:00   #16
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Naturalmente è una questione di gusti. Per i professionisti del settore di necessità (se qualcosa va storto dire "ho usato un database come tutti" potrebbe salvarvi la ghirba).

Io credo che al più 300 linee di codice valgano lo sforzo se rapportate al risultato della formula Database = SQL del produttore + DDL + dispiegamento + amministrazione.

Non sono il solo.

http://blogs.sun.com/jag/date/20061020
infatti anche l'idea del database è decisamente esagerata. ma un semplice I/O su files no?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 18:10   #17
mattia.pascal
Senior Member
 
Iscritto dal: Jun 2006
Messaggi: 1077
Quote:
Originariamente inviato da 71104 Guarda i messaggi
nemmeno io riesco a capire per quale motivo gli stai consigliando di registrare tutte le operazioni che modificano lo stato del programma anziché solo lo stato del programma così com'è... facendo come dici tu, se ho capito bene, il log non smetterebbe mai di crescere; e poi non gli hai dato alcuna informazione specifica su come fare I/O su files in C++, che è sostanzialmente quello che lui voleva sapere. trovo strano che non lo sappia visto che ha incluso iostream (e pure male ), forse gli hanno insegnato solo l'I/O sulla console e non quello sui files.
Si appunto. Posso condividere l'idea che si può fare a meno di un database, ma memorizzare lo stato del sistema in quel modo non mi convince proprio.
Io al nostro amico che è ancora all'inizio e che ha voglia di imparare consiglio di studiarsi prima le basi di OOP, poi i vari metodi per memorizzare in maniera permanente delle informazioni (serializzazione in primis). A quel punto sceglierà da solo l'opzione che gli sembra più semplice.
mattia.pascal è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 18:13   #18
mattia.pascal
Senior Member
 
Iscritto dal: Jun 2006
Messaggi: 1077
Quote:
Originariamente inviato da 71104 Guarda i messaggi
infatti anche l'idea del database è decisamente esagerata. ma un semplice I/O su files no?
Esagerata forse, ma siccome penso che lo scopo fondamentale che lo ha spinto a fare questo post sia imparare qualcosa di utile e non fare un programma che possa utilizzare suo padre.
mattia.pascal è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 18:14   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mattia.pascal Guarda i messaggi
Si appunto. Posso condividere l'idea che si può fare a meno di un database, ma memorizzare lo stato del sistema in quel modo non mi convince proprio.
Io al nostro amico che è ancora all'inizio e che ha voglia di imparare consiglio di studiarsi prima le basi di OOP, poi i vari metodi per memorizzare in maniera permanente delle informazioni (serializzazione in primis). A quel punto sceglierà da solo l'opzione che gli sembra più semplice.
quale serializzazione, stiamo parlando di C++, non di Java
però l'idea della serializzazione è ottima: io consiglierei a mikisx di trasferirsi su Java, perché se sa usare vettori e strutture varie diventa solo una questione di ObjectOutputStream.writeObject e successivamente di ObjectInputStream.readObject.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2007, 18:16   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da 71104 Guarda i messaggi
quale serializzazione, stiamo parlando di C++, non di Java
però l'idea della serializzazione è ottima: io consiglierei a mikisx di trasferirsi su Java, perché se sa usare vettori e strutture varie diventa solo una questione di ObjectOutputStream.writeObject e successivamente di ObjectInputStream.readObject.
Addirittura gli consigli di impararsi un nuovo linguaggio invece di scrivere 10 righe per salvare qualche struttura su un file
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Artemis II: nuovo test prima del Wet Dre...
GTA 6 gratis se nasce un figlio il giorn...
Quasi la metà degli smartphone at...
DDR5 a 16 dollari al gigabyte: Framework...
Meno di 3kg per 'diventare' bionici: l'u...
Al regalo di San Valentino ci pensa HUAW...
Intel multata in India: 30 milioni di do...
Beast of Reincarnation ha una data di us...
Provati Reno15 e Reno15 FS: analisi comp...
L'Europa sfida la Cina sul litio: in Fin...
Sono 32, di cui 6 nuove, le offerte Amaz...
Rinnovo dei coupon Amazon nascosti: ecco...
Corsair aggiorna la confezione delle RAM...
Ecco tutti i robot aspirapolvere in offe...
Tachyum: dal processore universale alle ...
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: 23:29.


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