View Full Version : [C]primi passi
supermario
31-10-2004, 10:55
Ciao
sto cominciando a scrivere qlk cosetta in c per imparare + o - la sintassi visto k di programmazione ho già fatto qlc in passato in c#
ho un un problema cn qst codice....mi crasha invitabilmente
#include "stdio.h"
#include "stdlib.h"
int main()
{
int risposta, random;
random = rand();
printf("Immetti un numero: ");
printf("\n");
risposta = scanf("%i");
if (risposta == random)
{
printf("GIUSTO!!");
}
else
{
printf("SBAGLIATO!");
}
return 0;
}
supermario
31-10-2004, 10:55
ah ovviamete grazie a chi mi aiuta
ps uso MinGW Dev Studio
per prendere risposta non devi fare così ma così:
scanf("%d",&riposta);
dove %d indica il tipo di dato intero,mentre &risposta indica l'indirizzo in memoria di risposta..
ciao :)
supermario
31-10-2004, 10:59
devo per forza usare il puntatore in questi casi???
ciao:)
Swisström
31-10-2004, 11:09
Originariamente inviato da supermario
devo per forza usare il puntatore in questi casi???
ciao:)
puntatore??? :confused:
non hai usato ne ha bisogno di usare nessun puntatore ;)
supermario
31-10-2004, 11:14
&riposta
nn è un operatore unario che restituisce l'indirizzo di memoria di risposta?
supermario
31-10-2004, 11:39
inoltre
(da msdn)
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.
come imposto questo RAND_MAX??non ne trovo traccia nella sintassi
grazie a chi mi aiuta
ciauz
:)
Originariamente inviato da supermario
&riposta
nn è un operatore unario che restituisce l'indirizzo di memoria di risposta?
si,
la sintassi della funziona scanf richiede (come secondo parametro) un puntatore (quindi un indirizzo).
Allora tu puoi scrivere un valore con
int a;
scanf("%d", &a);
printf("%d\n", a);
...
o con queste istruzioni fai la stessa cosa:
int* b;
scanf("%d", b);
printf("%d\n", *b);
Nel secondo caso hai usato un puntatore, nel primo no.
Ciao
Originariamente inviato da supermario
come imposto questo RAND_MAX??non ne trovo traccia nella sintassi
RAND_MAX e' un valore di grandezza che dipende dal sistema (comunque non inferiore a 16 bit), non e' necessario impostarlo.
Bada bene, che per un corretta "randomatizzazione", dovresti usare la funzione srand();
Ciao
supermario
31-10-2004, 17:10
ok e x dargli il numero max tra cui fare il random???
nn si può fare x caso??
altrimenti la vedo inutile cm funzione...almeno nel mio caso
ciauz
supermario
31-10-2004, 17:12
Originariamente inviato da cikko
si,
la sintassi della funziona scanf richiede (come secondo parametro) un puntatore (quindi un indirizzo).
Allora tu puoi scrivere un valore con
int a;
scanf("%d", &a);
printf("%d\n", a);
...
o con queste istruzioni fai la stessa cosa:
int* b;
scanf("%d", b);
printf("%d\n", *b);
Nel secondo caso hai usato un puntatore, nel primo no.
Ciao
umh ora è molto + chiaro grazie.
:)
Originariamente inviato da supermario
ok e x dargli il numero max tra cui fare il random???
nn si può fare x caso??
altrimenti la vedo inutile cm funzione...almeno nel mio caso
ciauz
int c= rand() % 6;
genera numeri casuoli compresi fra 0 e 5 e cmq metti sempre:
srand()
NapalM
supermario
31-10-2004, 21:52
ok grazie mille.
se nn sn scocciante mi spiegheresti il xk della sintassi?
ciauz:)
Originariamente inviato da supermario
ok grazie mille.
se nn sn scocciante mi spiegheresti il xk della sintassi?
ciauz:)
Ti posso dire cosa riporta il Deitel & Deitel: funzione rand() con operatore modulo % e numero max dell'intervallo rand() % 6 Questa operazione si chiama riduzione in scala, mentre in numero 6 è detto fattore di scala.
Se non gli specifici % 6 lui prende in auto i numeri da 0 a RAND_MAX.
NapalM
supermario
01-11-2004, 18:55
ok grazie molto chiaro il libro(e anche tu bravo nell'auitarmi):cool:
se ti può essere utile quello che hai fatto te (se correggi i parametri alla scanf) assegna a risposta il numero dei valori letti da scanf.
in alcuni casi può essere utile usarlo
ciao!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.