Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-04-2012, 20:46   #1
MissaW_RaZ_98
Senior Member
 
L'Avatar di MissaW_RaZ_98
 
Iscritto dal: Oct 2011
Città: Parma
Messaggi: 313
[C/C++]Incrementare variabile una sola volta

Come al solito,ho ancora un banalissimo problema

Voglio incrementare una variabile una sola volta ad una condizione,come nell'esempio:
Codice:
if(points>=5){
lifes++;
}
L'unico problema è che la variabile aumenta,aumenta e aumenta all'infinito,ma io voglio incrementarlo solo una volta!

So che è un problema banalissimo,ma non so proprio come risolverlo

MissaW_RaZ_98 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2012, 21:10   #2
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Non avendo la minima idea della struttura del programma, con una (potenzialmente fastidiosa) variabile globale?
Codice:
bool bBonusLife = false ;

main()
{

    if(! bBonusLife && points>=5){
        bBonusLife = true ;
        lifes++;
    }

}
Codice:
int nBonusLifes = 1 ;

main()
{

    if(nBonusLives > 0 && points>=5){
        ++ lifes ;
        -- nBonusLifes ;
    }

}
Con una static in una funzione?
Codice:
void UpdateLifes( int &nLives, const long nPoints )
{
    static int nBonusLifes = 1 ;
    if(nBonusLives > 0 && nPoints >= 5){
        ++ nLives ;
        -- nBonusLifes ;
    }
}

main()
{
    int lives = 3 ;
    long points = 0 ;


    UpdateLifes( lifes, points ) ;

}
Con un'apposita variabile se è un oggetto?
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2012, 21:33   #3
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da MissaW_RaZ_98 Guarda i messaggi
Come al solito,ho ancora un banalissimo problema

Voglio incrementare una variabile una sola volta ad una condizione,come nell'esempio:
Codice:
if(points>=5){
lifes++;
}
L'unico problema è che la variabile aumenta,aumenta e aumenta all'infinito,ma io voglio incrementarlo solo una volta!

So che è un problema banalissimo,ma non so proprio come risolverlo

Decisamente devi postarci il codice del tuo programma. Soprattutto bisogna capire cosa sia quel points e in che maniera viene assengato. Oltre a questo, è impossibile che lifes venga incrementato all'infinito se non è all'interno di un loop (cosa che non traspare dal tuo esempio). Quindi, si torna al consiglio iniziale: postaci il codice intero del programma, o per lo meno quello del metodo/funzione in questione
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 17:42   #4
MissaW_RaZ_98
Senior Member
 
L'Avatar di MissaW_RaZ_98
 
Iscritto dal: Oct 2011
Città: Parma
Messaggi: 313
si,scusate ragazzi,ora vi posto tutto il codice
Codice:
#include <stdio.h>
#include <iostream>

int main(){
int lifes=3;
int points=0;

while(1){
.....qui tutto il giochino (non credo che serva molto per aiutarmi)

if(points==5){
lifes++;
}//E qui il problema:la variabile incrementa all'infinito

}

return 0;
}
quindi si,è all'interno di un loop...
MissaW_RaZ_98 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 18:01   #5
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6287
Quote:
Originariamente inviato da MissaW_RaZ_98 Guarda i messaggi
si,scusate ragazzi,ora vi posto tutto il codice
Codice:
#include <stdio.h>
#include <iostream>

int main(){
int lifes=3;
int points=0;

while(1){
.....qui tutto il giochino (non credo che serva molto per aiutarmi)

if(points==5){
lifes++;
}//E qui il problema:la variabile incrementa all'infinito

}

return 0;
}
quindi si,è all'interno di un loop...
Come hanno già postato gli altri, nel caso generale ti serve una variabile di appoggio per sapere se hai già aggiornato la variabile.

Se invece il loop viene eseguito una sola volta durante l'esecuzione del programma e durante il loop points vale 5 in un solo ciclo di loop, allora potresti fare a meno della variabile di appoggio, ma come dicevo prima in linea generale è meglio usarla (così se fai modifiche successive e ti dimentichi di quel vincolo "una sola volta", non rischi che l'errore rispunti fuori).
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 18:03   #6
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
E quindi ?

Utilizza il suggerimento che ti è stato dato, no?

Ad esempio quello della variabile

bool bBonusLife = false ;
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 18:07   #7
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
if(points==5 && lifes == 0) lifes++;?
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 18:10   #8
MissaW_RaZ_98
Senior Member
 
L'Avatar di MissaW_RaZ_98
 
Iscritto dal: Oct 2011
Città: Parma
Messaggi: 313
ok...dato che uso il loop infinito(while),dovrò creare un'altra variabile "d'appoggio",che ferma il programma subito dopo che ho incrementato la variabile.
Quindi il codice dovrebbe essere così?
Codice:
#include <stdio.h>
#include <iostream>

int main(){
int lifes=3;
int points=0;

int increment==1;//questa è la variabile d'appoggio

while(1){
.....qui tutto il giochino (non credo che serva molto per aiutarmi)

if(points==5 && increment==1){
lifes++;
increment=0; 
}

}

return 0;
}
Ma ho un'altra domanda....
Vorrei anche che ogni 5 punti in più aumento la vita di uno...ma per fare questo devo cambiare in qualche modo la variabile increment in modo che diventi 0,poi 1,poi 0,etc.

Come faccio?

grazie per le risposte
MissaW_RaZ_98 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 19:43   #9
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Se i punti sono compresi tra 0 e 5 puoi reincrementare il bonus dove azzeri i punti.

Se vanno da zero a MAX_INT ed il punteggio non può diminuire, puoi usare opportunamente l'operatore modulo (%) per sostituire il test di uguaglianza (==), in modo tale da rendere il test valido per ogni scatto di cinque.
Puoi quindi usarlo anche quando il punteggio è divisibile per sei per reincrementare il bonus, in previsione del successivo raggiungimento di un punteggio divisibile per cinque.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2012, 20:59   #10
MissaW_RaZ_98
Senior Member
 
L'Avatar di MissaW_RaZ_98
 
Iscritto dal: Oct 2011
Città: Parma
Messaggi: 313
Quote:
Originariamente inviato da Gimli[2BV!2B] Guarda i messaggi
Se i punti sono compresi tra 0 e 5 puoi reincrementare il bonus dove azzeri i punti.

Se vanno da zero a MAX_INT ed il punteggio non può diminuire, puoi usare opportunamente l'operatore modulo (%) per sostituire il test di uguaglianza (==), in modo tale da rendere il test valido per ogni scatto di cinque.
Puoi quindi usarlo anche quando il punteggio è divisibile per sei per reincrementare il bonus, in previsione del successivo raggiungimento di un punteggio divisibile per cinque.
grande! non ci avevo proprio pensato!
Ora va alla grande!

A chi servisse,ecco il codice:
Codice:
while(1){
.....

if(increment==1 && points%5==0){
lifes++;
increment=0;
}

if(increment==0 && points%6==0){
increment=1;
}//questo serve per utilizzare il bonus in caso che i punti siano multipli di 5

}
grazie grazie a tutti
MissaW_RaZ_98 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2012, 23:46   #11
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Quote:
Originariamente inviato da MissaW_RaZ_98 Guarda i messaggi
grande! non ci avevo proprio pensato!
Ora va alla grande!

A chi servisse,ecco il codice:
Codice:
while(1){
.....

if(increment==1 && points%5==0){
lifes++;
increment=0;
}

if(increment==0 && points%6==0){
increment=1;
}//questo serve per utilizzare il bonus in caso che i punti siano multipli di 5

}
grazie grazie a tutti
Scusa ma così il programma fa lifes++ anche se points == 0.
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2012, 19:53   #12
MissaW_RaZ_98
Senior Member
 
L'Avatar di MissaW_RaZ_98
 
Iscritto dal: Oct 2011
Città: Parma
Messaggi: 313
giusto,correggo subito

Codice:
if(points!=0 && increment==0 && points%6==0){
increment=1;
}
Grazie per la segnalazione
MissaW_RaZ_98 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
Upgrade PC a prezzo ridotto: le migliori...
Sono i 6 smartphone migliori su Amazon: ...
Google Pixel 9a a 361€, mai così ...
Super sconti sugli spazzolini Oral-B, an...
Aspira a 6000Pa, lava bene, costa 139€: ...
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: 20:39.


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