Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-04-2008, 22:31   #1
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
[C++] Coda circolare e operatore modulo

Salve a tutti!
Sto cercando di implementare una coda statica.
La coda, di tipo circolare, soffre di un bug curioso (probabilmente dovuto a mie inesperienze con le precedenze degli operatori) che non sono riuscito a risolvere.

In particolare, nell'implementazione statica che ho realizzato sto usando un array, c.queue, di 10 elementi. La costante MAX_ELEM che appare nel codice è appunto uguale a 10; come è facile intuire, c.num_elem è il numero di elementi contenuti nella coda e c.top è l'indice che uso per indicare la testa della coda, su cui viene fatto l'inserimento.

Codice:
int push(Coda& c, const int e) {
    if (!full(c)) {

        c.queue[c.top] = e;
        c.top = (c.top++)%MAX_ELEM;    //?!?!?
        c.num_elem++;

        return 0;
    } else return 1;
Nel caso particolare, se provo ad inserire un elemento e poi a leggerlo subito, eliminandolo, i due indici di testa e di coda si appaiano (nella fattispecie si appaiano ad 1), mentre c.num_elem è ovviamente pari a 0.

Ora, se inserisco 8 elementi, avrò ovviamente un riempiemnto di 8 e c.top uguale a 9.
La cosa curiosa avviene all'esecuzione successiva: col debugger ho notato che al rigo c.top = (c.top++)%MAX_ELEM, c.top prende il valore 10!

Non capisco, c.top++ è uguale a 10 e MAX_ELEM uguale a 10, il resto della divisione intera dovrebbe essere 0!

All'esecuzione successiva poi, come dovrebbe essere, c.top++ è 11 e c.top prende valore 1, ma ormai il mio indice 0 è stato saltato, ed ho sovrascritto un'area di memoria che è occupata dal mio riempimento... provocando guai immani!

Grazie a chi potrà aiutarmi!
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 00:34   #2
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
Questo perché c.top++ fa il post incremento.
Lo devi scrivere come ++c.top.
Inoltre ti consiglio di scrivere la condizione di coda piena diversamente:

Codice:
int push(Coda& c, const int e) {
    if (full(c)) {
        return 1
    }
    c.queue[c.top] = e;
    c.top = (++c.top)%MAX_ELEM;    //?!?!?
    c.num_elem++;  
    return 0;
}

Ultima modifica di cionci : 07-04-2008 alle 09:09.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 15:01   #3
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da cionci Guarda i messaggi
Questo perché c.top++ fa il post incremento.
Lo devi scrivere come ++c.top.
Inoltre ti consiglio di scrivere la condizione di coda piena diversamente:

Codice:
int push(Coda& c, const int e) {
    if (full(c)) {
        return 1
    }
    c.queue[c.top] = e;
    c.top = (++c.top)%MAX_ELEM;    //?!?!?
    c.num_elem++;  
    return 0;
}
Grazie mille per la risposta!
Effettivamente stamattina in treno ho perso il foglio, l'ho guardato e mi stavo mettendo le mani nei capelli... non so come ho fatto a non pensarci ieri sera... mi sono lasciato "sedurre" da un errore di stampa (un manuale di programmazione riportava la versione con c.top++) e avevo perso d'occhio l'incremento

A proposito della condizione di coda piena, come mai mi consigli di invertire il controllo?
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 15:10   #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
Solo per questione di leggibilità
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 17:22   #5
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da cionci Guarda i messaggi
Solo per questione di leggibilità
Ok, capisco, effettivamente fa ballare un po' gli occhi e il ! sfugge sempre
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
OpenAI, un modello GPT-5.6 Sol ha usato ...
Google testa Ask Google Help: l'IA di Ge...
Apple aggiorna l'elenco dei prodotti obs...
Renault 5 si aggiorna anche in Italia: p...
L’IA fa il lavoro dei junior. Ma le impr...
Google riduce gli errori quantistici di ...
Xpeng Mona L05: un SUV da 4,87 metri con...
CERN e Mistral AI insieme per il primo L...
Le analisi approfondite sullo scudo term...
Chery Q arriva in Italia: 380 km, trazio...
Rocket Lab rinvia il primo lancio di Neu...
Tutti gli astronauti della missione spaz...
Agenti IA in azienda: il difficile non &...
Anthropic, New York chiede di rinviare l...
Meta aggiorna Edits con link audio, tend...
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: 06:33.


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