PDA

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

SteR9
31-10-2004, 10:58
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
:)

cikko
31-10-2004, 17:03
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

cikko
31-10-2004, 17:06
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.




:)

Napalm
31-10-2004, 18:55
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:)

Napalm
01-11-2004, 09:16
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:

NA01
01-11-2004, 20:39
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!