Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
Abbiamo messo alla prova la nuova AORUS GeForce RTX 5080 INFINITY WOOD 16G, una delle interpretazioni più particolari della GPU NVIDIA Blackwell. Prestazioni, frequenze operative, temperature, consumi e margini di overclock sono stati confrontati con altre RTX 5080 custom e con la Founders Edition. Il design in legno è solo uno degli elementi distintivi di una scheda che punta a ritagliarsi uno spazio nella fascia più alta del mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-11-2010, 20:30   #1
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
[C] Divisori perfetti

Inanzitutto salve a tutti, sono uno studente del primo anno di informatica presso la Sapienza a Roma.
Vi scrivo perchè sono in leggera difficoltà con l'esercizio

Citazione:
Un intero positivo si dice perfetto se è uguale alla somma dei suoi divisori (sia primi che non primi) escluso se stesso. Per esempio 28 è perfetto perché 28 = 1+2+4+7+14. Scrivere una funzione int perfectNumbers(int n) che dato in input un intero positivo n restituisca il numero di numeri perfetti tra 1 e ed n.


In particolare:

Io ho scritto il codice:

Codice:
int perfectNumbers (int x){

	int divisore;
    int pN=0;
	int sommadivisori;

	while(x != 0){
		divisore=x-1;
	 while (divisore != 0){
	    if(x%divisore == 0) 		   sommadivisori+=divisore;
	    divisore-=1;
	}
	 if (sommadivisori == x) pN+=1;
	 x-=1;
}
	return pN;
}


Quello che succede però è che mi restituisce come valore sempre e solo pN = 1 o pN=0. Probabilmente l'errore è idiota perchè sono proprio agli inizi, ma vorrei capire dove ho sbagliato

Grazie mille!
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 20:45   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
1) silvestri?
2) dovresti sempre inizializzare le variabili che usi, ad esempio non inizializzi sommadivisori, che dovresti mettere a 0 ogni volta che rientri nel ciclo while più esterno, probabilmente fixando questa cosa funzionerà
3) indenta meglio, è difficile leggere così
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 20:59   #3
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da tuccio` Guarda i messaggi
1) silvestri?
2) dovresti sempre inizializzare le variabili che usi, ad esempio non inizializzi sommadivisori, che dovresti mettere a 0 ogni volta che rientri nel ciclo while più esterno, probabilmente fixando questa cosa funzionerà
3) indenta meglio, è difficile leggere così
1) Nope, galesi D:
2) Eh, è che il mio prof non le inizializza sempre, mentre il mio libro la da come buona abitudine, quindi spesso mi confondo XD Pietà sono proprio nuovissimo del settore XD
3) Quello è frutto di copia e incolla infiniti

Ora ho inizializzato, ma non funziona

Codice:
#include<stdio.h>

int perfectNumbers (int x){

    int pN=0;
	int sommadivisori=0;
    int divisore=x-1;

	while(x != 0){
		sommadivisori=0;
	  while (divisore != 0){
	     if(x%divisore == 0) 		  
	       sommadivisori+=divisore;
	     divisore-=1;
	}
	 if (sommadivisori == x) pN+=1;
	 x-=1;
}
	return pN;
}
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 21:11   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
piazza un

divisore = x/2;

dopo sommadivisori = 0; nel while e hai fatto ^_^

anche divisore deve essere reimpostato ogni volta che entri nel while

Ultima modifica di tuccio` : 16-11-2010 alle 21:13.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 21:21   #5
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da tuccio` Guarda i messaggi
piazza un

divisore = x/2;

dopo sommadivisori = 0; nel while e hai fatto ^_^

anche divisore deve essere reimpostato ogni volta che entri nel while
Grazie mille funziona!

Mi spiegheresti però meglio a livello concettuale il perchè solo ora funziona ? E' una regola che così "a da esse" ? XD

Scusa se ti assillo, ma vorrei capire a fondo per evitare di risbagliare in futuro

(Mi dispiace anche fare domande stupide, ma essendo all'inizio vorrei avere tutte le basi chiarissime )
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 22:08   #6
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
alla prima iterazione il divisore arriva a 0 per uscire dal ciclo while (divisore != 0).. non ne modifichi il valore e non rientra più in quel ciclo, perché la condizione del while è sempre falsa.. è chiaro che devi reimpostarlo a ogni iterazione
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 22:34   #7
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da tuccio` Guarda i messaggi
alla prima iterazione il divisore arriva a 0 per uscire dal ciclo while (divisore != 0).. non ne modifichi il valore e non rientra più in quel ciclo, perché la condizione del while è sempre falsa.. è chiaro che devi reimpostarlo a ogni iterazione
Certo, ci sono arrivato pochi secondi dopo aver scritto il post eheh

Comunque grazie mille, sei stato genitilissimo
cifa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
Il nuovo Samsung Galaxy S26 FE non ha pi...
Anthropic firma 9,1 miliardi con un mine...
Reflect Orbital ammette: un telescopio d...
Meta ha lanciato la nuova app Facebook C...
Offerta lancio pazzesca per Pixel 11 Pro...
Questa è l'auto del futuro che so...
Google lancia i Pixel 11, Pixel Watch 5 ...
Microsoft sfida i cinesi: il nuovo model...
XPeng esagera: ecco la G9L, 5,1 m di lun...
SpaceX potrebbe tornare a utilizzare pia...
Quando l'IA allucina nei campi: il model...
La pubblicità di iPhone che indig...
NVIDIA prepara un LLM gigante da oltre m...
ESA e Arianespace avrebbero cancellato l...
I fari di alcune Tesla sono troppo lumin...
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: 18:36.


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