Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-05-2007, 09:03   #1
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Problemi con programma in C++...

Ciao raga.... volevo chiedervi un aiutino per questo programma.....Il testo dell'esercizio è già scritto...
Se nn vi chiedo troppo vorrei poterlo completare entro il 3 maggio per favore....grazie

/*Modificare il codice seguente per permettere:
1) la generazione del numero pseudocasuale
nell'intervallo 1..100.
2) un numero predefinito di tentativi del giocatore.
3) l'assegnazione di un punteggio inversamente
proporzionale al numero di tentativi effettuati. */

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int magic; // numero magico
int guess; // tentativo del giocatore
int i; // num tentativi scelti
int nt=0; // condiz iniz di tentativi

randomize();
magic = random(100); // sceglie un numero a caso
cout << magic; // visualizza num scelto dal computer
cout << " \n Inserisci il numero di tentativi: ";
cin >> i; // inserisci i


do {
for (i;nt;i--) break; // decremento
do {
cout << " Scrivi il tuo numero: \n";
cin >> guess;
if(guess == magic) {
cout << "** Giusto ** ";
cout << magic << " era ora....finalmente!!!\n";
}
else {
cout << "...Mi dispiace, hai sbagliato.";
if(guess > magic)
cout << " Il tuo numero e' troppo alto.\n";
else cout << " Il tuo numero e' troppo basso.\n";
}
} while(guess != magic);

} while(i=0);

system("pause");
}
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2007, 09:16   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2788
1)Guarda qui per generare il numero:
http://www.cplusplus.com/reference/c...dlib/rand.html
2)Devi aver preso un codice già fatto e poi l'hai modificato giusto? Hai messo un po' troppi cicli, ne basta uno...
3)Ad esempio? 100/ntentativi?
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2007, 09:50   #3
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ciao....no il programma da cui si doveva partire è il seguente....

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int magic; // numero magico
int guess; // tentativo del giocatore

randomize();
magic = rand(); // sceglie un numero a caso

do {
cout << "Scrivi il tuo numero: ";
cin >> guess;
if(guess == magic) {
cout << "** Giusto ** ";
cout << magic << " è il numero magico.\n";
}
else {
cout << "...Mi dispiace, hai sbagliato.";
if(guess > magic)
cout << " Il tuo numero è troppo alto.\n";
else cout << " Il tuo numero è troppo basso.\n";
}
} while(guess != magic);

system("pause");
return 0;
}


Da qui praticamente dobbiamo aggiungere:
1) la generazione del numero pseudocasuale
nell'intervallo 1..100.
2) un numero predefinito di tentativi del giocatore.
3) l'assegnazione di un punteggio inversamente
proporzionale al numero di tentativi effettuati.

Fino adesso sn arrivato alla generazione del numero pseudocasuale.....non mi funzionano gli ultimi due punti....
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2007, 10:08   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da pixie Guarda i messaggi
1) la generazione del numero pseudocasuale
nell'intervallo 1..100.
Vedi un mio esempio in <questo> thread.

Quote:
Originariamente inviato da pixie Guarda i messaggi
2) un numero predefinito di tentativi del giocatore.
Metti una variabile che contiene il numero di tentativi, inizializzata ad un certo valore (es. 10). Alla fine del ciclo decrementi tale contatore. Il while deve far ripetere il ciclo se guess != magic e se tentativi > 0

Quote:
Originariamente inviato da pixie Guarda i messaggi
3) l'assegnazione di un punteggio inversamente
proporzionale al numero di tentativi effettuati.
In questo caso puoi usare la stessa variabile spiegata al punto 2. Se si indovina quando sono rimasti 3 tentativi è chiaramente peggio di quando si indovina quando rimangono 9 tentativi. Così è già "inversamente proporzionale".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2007, 10:14   #5
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Ok grazie mille...semmai vi faccio sapere se qualcosa nn va....ciao ciao
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 14:12   #6
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ciao....potresti dirmi in linguaggio c++ cm si mette il punto 3? (assegnazione di un punteggio inversamente proporzionale al numero di tentativi effettuati)..grazie
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 14:33   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da pixie Guarda i messaggi
ciao....potresti dirmi in linguaggio c++ cm si mette il punto 3? (assegnazione di un punteggio inversamente proporzionale al numero di tentativi effettuati)..grazie
Mi sembrava di averlo spiegato, sebbene a parole, ma chiaramente.
Se usi una variabile che tiene il numero di tentativi ancora da effettuare (quindi in decremento man mano), quello è già un valore inversamente proporzionale al numero di tentativi effettuati.

Codice:
int magic, guess;
int tentativi = 10;

do {
    cout << "Scrivi il tuo numero: ";

    ......
} while (guess != magic && --tentativi > 0);

cout << "Il tuo punteggio e`: " << tentativi;
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 19:30   #8
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Codice PHP:
/* 1) la generazione del numero pseudocasuale
    nell'intervallo 1..100.
    2) un numero predefinito di tentativi del giocatore.
    3) l'assegnazione di un punteggio inversamente
    proporzionale al numero di tentativi effettuati. */

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
  
int magic// numero magico
  
int guess// tentativo del giocatore
  
int i;     // num tentativi scelti
  
int nt=0;   // condiz iniz di tentativi

  
randomize();
  
magic random(100); // sceglie un numero a caso
  
cout << magic;  // visualizza num scelto dal computer
  
cout << "  \n Inserisci il numero di tentativi: ";
  
cin >> i;  // inserisci i


  
do {
    for (
i;nt;i--) break;  // decremento
  
do {
     
cout << "           Scrivi il tuo numero: \n";
    
cin >> guess;
     if(
guess == magic) {
      
cout << "** Giusto ** ";
        
cout << magic << "    era ora....finalmente!!!\n";
     }
     else {
        
cout << "...Mi dispiace, hai sbagliato.";
        if(
guess magic)
            
cout << " Il tuo numero e' troppo alto.\n";
        else 
cout << " Il tuo numero e' troppo basso.\n";
     }
  } while(
guess != magic);

  } while(
guess != magic && --0);  // punteggio

  
system("pause");

  return 
0;

Questo è il codice che ho creato....per favore potreste dirmi se funziona? è urgente devo consegnarlo doma....grazie
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 19:50   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da pixie Guarda i messaggi
Questo è il codice che ho creato....per favore potreste dirmi se funziona? è urgente devo consegnarlo doma....grazie
Uhm, ecco cosa posso dirti:

a) Perché hai usato randomize()/random()??? Sono funzioni non standard e quindi poco portabili. Usa srand() e rand() che sono standard ANSI C.

b) Questo come te lo sei inventato?
for (i;nt;i--) break;
Un ciclo for in cui la espressione di inizializzazione è solo una variabile (quindi non fa nulla), in cui nt causa subito l'uscita dal ciclo (visto che nt è inizializzato a 0).

c) Non capisco la necessità di un doppio do-while annidato .... basta 1 solo ciclo do-while.

d) E la visualizzazione del punteggio dove la fai, visto che parlavi di gestire un punteggio??

e) Ultimo ma non meno importante: scrivi e indenta correttamente il codice!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 19:57   #10
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ok sarò ignorante fin che vuoi nel campo della programmazione ma la cosa mi appassiona....dunque dv c'è
cin >> i qui dovrei inserire il num di tentativi poi nel ciclo for si continua a decrementare questo num fino a 0 quindi ho fatto for (i;nt;i--) dv i-- è il decremento....scusa posso capire? se nn ti disturbo troppo hai msn? grazie
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 20:18   #11
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Questo è il codice che ho scritto e nn credo sia ancora giusto....ma mi devi ancora risp al quesito precendente...
Codice PHP:
/* 1) la generazione del numero pseudocasuale
    nell'intervallo 1..100.
    2) un numero predefinito di tentativi del giocatore.
    3) l'assegnazione di un punteggio inversamente
    proporzionale al numero di tentativi effettuati. */

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
  
int magic// numero magico
  
int guess// tentativo del giocatore
  
int i;     // num tentativi scelti
  
int nt=0;   // condiz iniz di tentativi

  
srand();
  
magic rand(100); // sceglie un numero a caso
  
cout << magic;  // visualizza num scelto dal computer
  
cout << "  \n Inserisci il numero di tentativi: ";
  
cin >> i;  // inserisci i


    
for (i;nt;i--) break;  // decremento
  
do {
     
cout << "           Scrivi il tuo numero: \n";
     
cin >> guess;
     if(
guess == magic) {
        
cout << "** Giusto ** ";
        
cout << magic << "    era ora....finalmente!!!\n";
     }
     else {
        
cout << "...Mi dispiace, hai sbagliato.";
        if(
guess magic)
            
cout << " Il tuo numero e' troppo alto.\n";
        else 
cout << " Il tuo numero e' troppo basso.\n";
     }

  } while(
guess != magic && --0);  // punteggio
  
cout << "Il tuo punteggio e`: ";

  
system("pause");

  return 
0;

pixie è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 21:04   #12
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
PER FAVORE ATTENDO UNA RISPOSTA.....se nn consegno sto lavoro doma mi gioco il voto di sistemi e mia ma mi ammazza.....per favore vi prego ditemi se va bn
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 08:42   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da pixie Guarda i messaggi
srand();
magic = rand(100);
Nessuna delle due va bene. Ti ho anche indicato all'inizio un thread in cui avevo fatto un esempio completo!

srand() serve per impostare il "seed" del generatore di numeri casuali. Pertanto deve ricevere come argomento un numero che indica il seed. Per questo numero tipicamente si usa il valore ritornato da time(), giusto per dare un valore sempre diverso (ad ogni secondo).
Quindi oltre ad includere <cstdlib> devi anche includere <ctime>

La srand() va messa così:

srand ((unsigned int) time (NULL));

La funzione rand() invece NON ha parametri. Ritorna un valore casuale tra 0 e RAND_MAX. Pertanto se vuoi avere il numero casuale tra un range diverso/particolare, devi fare tu dei calcoli.
Nel caso si voglia avere un range da 1 a 100 compresi, si può fare:

magic = ((int) (rand() / (RAND_MAX+1.0) * 100)) + 1;

Quote:
Originariamente inviato da pixie Guarda i messaggi
for (i;nt;i--) break; // decremento
Questo non serve a nulla. Il decremento di 'i' l'hai già fatto come predecremento nel while, ed è sufficiente!

Tra l'altro, come ho già detto prima, questo for è inutile. 'nt' l'hai messo a 0 e lo usi solo nel for, pertanto con nt=0, il for termina immediatamente!

Quote:
Originariamente inviato da pixie Guarda i messaggi
cout << "Il tuo punteggio e`: ";
Qui ti basta solo più mandare in output il valore di 'i'.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 16:23   #14
niko_lol
Member
 
Iscritto dal: Mar 2007
Messaggi: 276
for(int i=10; i < dim; i--)
{
Scrivi il codice che ti serve!
}
niko_lol è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 16:26   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da niko_lol Guarda i messaggi
for(int i=10; i < dim; i--)
Sicuro sicuro??

Comunque il for non è l'ottimale in questo caso. La continuazione del ciclo è basata su 2 condizioni e comunque la richiesta del "guess" va fatta almeno una volta, pertanto vedo meglio il do-while.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 16:35   #16
niko_lol
Member
 
Iscritto dal: Mar 2007
Messaggi: 276
Si ok....io lì ho visto che ci sta un for.... e gli ho scritto come si fa un for! poi sta a lui vedere come fare....più programma e + capisce ecc etc!
niko_lol è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 21:29   #17
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2788
Quote:
Originariamente inviato da andbin Guarda i messaggi
Sicuro sicuro??

Comunque il for non è l'ottimale in questo caso. La continuazione del ciclo è basata su 2 condizioni e comunque la richiesta del "guess" va fatta almeno una volta, pertanto vedo meglio il do-while.
E se fosse:
Codice:
for(int i=10; i<dim && guess!=magic; i--)
non sarebbe comunque ottimale? E' solo per curiosità...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 08:33   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
E se fosse:
Codice:
for(int i=10; i<dim && guess!=magic; i--)
non sarebbe comunque ottimale? E' solo per curiosità...
Se ci pensi un attimo 'guess' lo prendi in input dentro il ciclo, quindi che senso ha il test la prima volta??? E poi scusa, 'dim' che valore dovrebbe avere?? Inoltre con i-- vai sempre in decremento e non c'è un test per bloccare ad un certo punto il decremento di 'i'!!! Cioè ... hai capito la questione?

Se proprio si volesse usare un for si dovrebbe fare così e usare un break per uscire dal ciclo:
Codice:
int tentativi, guess, magic;
...
cin >> tentativi;    /* input numero tentativi */
...
for ( ; tentativi > 0; tentativi--)
{
    ....
    cin >> guess;    /* input guess */

    if (guess == magic)
    {
        ....
        break;    /* esce dal ciclo */
    }
    ....
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Stranger Things non è finito! Ecc...
iPhone 18, il mistero sul destino della ...
Motorola lavora al nuovo Razr 70 Ultra: ...
Il programma di ridimensionamento di One...
L'industria statunitense non è co...
La NASA cambia strategia per le missioni...
Mike Fincke, l'astronauta che ha avuto u...
I Meta Ray-Ban Display potrebbero non ar...
La serie di God of War ha trovato l'attr...
Il nuovo iPhone Fold si farà atte...
Ex CEO di Intel furioso verso Wall Stree...
Un foglietto di rame e le prestazioni di...
100 agenti AI per dipendente: quello che...
Le 10 migliori offerte del weekend Amazo...
75'' e 85'' QD-Mini LED: 2 TV interessan...
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: 22:58.


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