Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-03-2013, 11:19   #1
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
[C++] Rendere coda circolare

Salve a tutti ragazzi
vorrei capire che cosa rende circolare una pila, da quello che ho capito io la dichiarazione della classe non cambia ma cambiano le implementazioni delle funzioni che la gestiscono.


considerando una dichiarazione di una classe coda del genere
Codice:
typedef int E;

//definizione della classe
class Coda{
      private:
              static const int NMAX=100;
              int nelem;
              E *coda;
              int t, c;
              int presenti;//per verificare gli elementi effettivamente presenti
              
      public:
             //costruttore
             Coda(int n=0);
             //distruttore
             ~Coda(){delete []coda;}
             //costruttore di copia
             Coda(const Coda& ) ;
             //overloading operatore =
             const Coda & operator=(const Coda & ) ;
             
             void push(E);
             bool pop(E& ) ;
             bool top(E& ) ;
             bool empty()const{if(presenti==0)return true; else return false;}
             bool full()const{if(presenti==nelem)return true; else return false;}

considerando queste funzioni


Codice:
void Coda::push(E e){
     if ( !full()){
         coda[t]=e;
         t=(t+1)%nelem;//fa la divisione e prende il modulo

è questo tipo di comando che mi fa diventare la coda circolare? cioè l'operazione col modulo?


         presenti++;
         }
     else cout<<"\ncoda piena impossibile inserire ulteriori elementi"<<endl;
}

bool Coda::pop(E& e){
     if( !empty()){
         e=coda[c];
         c=(c+1)%nelem;


è questo tipo di comando che mi fa diventare la coda circolare? cioè l'operazione col modulo?



         presenti--;
         return true;
         }
     else{
          cout<<"\ncoda vuota impossibile eliminare ulteriori elementi"<<endl;
          return false;
     }
}


bool Coda::top(E& e){
     if( !empty()){
         e=coda[c];
         return true;
         }
     else{
          cout<<"\ncoda vuota nessun elemento presente"<<endl;
          return false;
     }
}
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2013, 11:42   #2
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
nessuno?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2013, 08:05   #3
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Qual e' la domanda, esattamente? Il codice sembra ok, a parte il fatto che non capisco perche' hai usato nelem al posto di NMAX, ma e' un dettaglio....
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2013, 12:15   #4
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
ciao sottovento
grazie per avermi risposto


la domanda in altre parole rispetto al titolo è: che differenza c'è a livello di codice tra una coda ed una coda circolare?

quell'istruzione commentata in rosso, rende una coda circolare, giusto?quella con il modulo?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.

Ultima modifica di Bandit : 11-03-2013 alle 12:26.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2013, 12:25   #5
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Bandit Guarda i messaggi
ciao sottovento
grazie per avermi risposto


la domanda in altre parole rispetto al titolo è: che differenza c'è a livello di codice tra una coda ed una coda circolare?

quell'istruzione commentata in rosso, rende una coda circolare, giusto?quella con il modulo?
In linea di massima, si: inserisci i dati nella coda all'indice t ed estrai all'indice c, sempre se e' permesso (i.e. se la coda non e' piena/vuota).
La circolarita' e' data dal fatto che all'ultimo elemento segue il primo.
Ovviamente questa struttura e' utile in una pletora di situazioni, non ultima quelle relativi alla trasmissione di dati (se ne fa un ampio uso).

La differenza fra una coda pero' potrebbe non fermarsi qui: come detto, inserisci ad un indice ed estrai da un altro. Dipende dall'implementazione, ma normalmente questo non e' necessario in una coda 'plain'; quindi puoi mettere anche questo fra le differenze
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2013, 12:28   #6
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
grazie mille per la chiarezza


io trovo che i libri che mi hanno suggeriti, non sono chiari, e cmq non fanno avere il quadro completo delle cose.
Che poi quando serve non ce l'hai, e quindi mi devo chiedere io le cose per semplificarmi la vita.
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.

Ultima modifica di Bandit : 11-03-2013 alle 12:31.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2013, 16:03   #7
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
ciao sottovento

in tema di mancanza di quadro generale

quando si scrivono le classi ed in particolare i costruttori e le funzioni come ci si regola col punto e virgola finale? bisogna sempre metterlo


esempio
col costruttore

Codice:
AUTO (): cilindrata(0), nome (0) {};
con le altre funzioni

col distruttore non serve il punto e virgola finale?
Codice:
~AUTO() {delete []cilindrata; }
con una funzione qualsiasisi
Codice:
void stampadati();
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2013, 04:32   #8
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Scusa il ritardo nella risposta, ma non e' colpa mia, e' solo un problema di fuso orario.


Quote:
Originariamente inviato da Bandit Guarda i messaggi
ciao sottovento

in tema di mancanza di quadro generale

quando si scrivono le classi ed in particolare i costruttori e le funzioni come ci si regola col punto e virgola finale? bisogna sempre metterlo


esempio
col costruttore

Codice:
AUTO (): cilindrata(0), nome (0) {};
con le altre funzioni
Il codice non e' chiarissimo: stai dichiarando il costruttore o lo stai implementando?
In ogni caso, il punto e virgola non ci vuole.
Ti accorgerai pero' che il codice viene compilato anche se lo metti. In effetti non e' un errore, e' solo un'operazione nulla che hai inserito.


Quote:
Originariamente inviato da Bandit Guarda i messaggi
col distruttore non serve il punto e virgola finale?
Codice:
~AUTO() {delete []cilindrata; }
Stessa cosa di cui sopra, non ci sono eccezioni. Ovviamente immagino ti riferisca al punto e virgola che hai messo dopo la graffa. No, non ne hai mai bisogno dopo la dichiarazione di un metodo. Qualunque esso sia

Quote:
Originariamente inviato da Bandit Guarda i messaggi
con una funzione qualsiasisi
Codice:
void stampadati();
Qui stai dichiarando un prototipo di funzione, vale a dire avverti il compilatore che nel seguito del file utilizzerai la stampadati(), e gli dici com'e' fatta (i.e. non accetta parametri e non restituisce valori di sorta).

La stampadati sara' poi definita da qualche altra parte, per esempio in una libreria, in un altro file o addirittura all'interno dello stesso file in cui hai messo il prototipo di cui sopra. Il compilatore sara' in grado di valutare se l'uso che ne fai e' corretto. In caso contrario sara' in grado di produrti l'adeguato messaggio di errore.

Se lo scopo del codice che mi hai mostrato NON e' quello di dichiarare un prototipo di funzione ma, per esempio, e' l'inizio della definizione della funzione stessa, allora il punto e virgola non ci va ma dovrai aprire la graffa
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2013, 19:50   #9
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
ciao sottovento
figurati


ti devo ringraziare sempre sempre

come sempre chiarissimo

ho sbagliato a digitare :
quando ho scritto
Codice:
void stampadati();
mi riferivo ad una funzione qualsiasi all'interno del file di specifica di una classe

se il ragionamento è quello che mi hai detto per il costruttore ed il distruttore: se metto il corpo della funzione con le parentesi graffe, allora non serve il punto e virgola, mentre invece se è come quella che ho scritto allora ci vuole.

giusto?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2013, 05:43   #10
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Bandit Guarda i messaggi
se il ragionamento è quello che mi hai detto per il costruttore ed il distruttore: se metto il corpo della funzione con le parentesi graffe, allora non serve il punto e virgola, mentre invece se è come quella che ho scritto allora ci vuole.

giusto?
Non si sarebbe potuto dire meglio!! Giusto!
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2013, 15:40   #11
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
grazie mille

sto imparando e mettendo a posto tante cose
grazie
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 16-03-2013, 12:46   #12
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
ciao sottovento ti posso chiedere un'ulteriore cosa? e con questa mi fermo perchè c'è già troppo da imparare.


Ho visto nel libro che nella stesura della classe Pila realizzata con array statico, nel parte private mette il costruttore di copia e l'overload dell'operatore = , entrambi con corpo vuoto.

Poi quando va a graficare il codice, non ce lo mette.
A questo ti chiedo: ce li devo mettere ugualmente? visto che il corpo delle due funzioni è vuoto?

e poi nella realizzazione della pila dinamica, credo che ce lo devo mettere sia il costruttore di copia che l'overload dell'operatore =, ma in questo ccaso devo esplicitarlo il corpo delle due funzioni?


il problema dei problemi è se ci vuole non so come devo realizzarlo
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.

Ultima modifica di Bandit : 18-03-2013 alle 12:14.
Bandit è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Agenti di IA, per Akamai la sicurezza pa...
Non solo in Europa: Apple dovrà a...
iPhone Duo, il compromesso del display p...
Reolink OMVI 2i Ultra, la videocamera ib...
PowerToys 0.102: con un nuovo tool il mo...
Bose acquisisce Skullcandy per raggiunge...
I videogiochi di Star Wars dovranno sorp...
Cos'è Flint: l'AI locale per la programm...
Perplexity Computer ora gira offline sul...
LG lancia in Italia i nuovi laptop gram ...
Spotify dice addio ai vincoli di Android...
Leica Q3 43 Formula 1: carbonio, Microve...
Quattro nuovi smartphone e tablet da HON...
Xiaomi Redmi Note 17 in offerta su Amazo...
Fastweb + Vodafone potenzia il supercomp...
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: 17:12.


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