Linguaggio c

inginfoaria
salve a tutti,
qlc mi sa dire perchè è sbaglaito

pers=(random()%2000)+1000;
veicolo= random()%6;
posticat=(random()%1000)+500;

mi dice link error undefined reference to 'random'?

grazie ancora

Risposte
Nidhogg
Se mi posti l'intero listato posso essere più preciso.

Grazie, Ermanno.

inginfoaria
nn ho mica capito che devo fare nn ti posso postare tutto il programma....

ho scritto che pers, veicolo e posticat sono delgi interi

devo fare in modo che pers siano numeri casuali da 1000 a 2000 e la stessa cosa per posticat da 500 a 1000
invece veicolo scrivo random %6 perchè vi sono 6 tipi diversi di veicoli e "estraggo" a caso il tipo!

Nidhogg
Hai fatto la randomize? Inoltre la random non accetta random()%valore, ma per questa operazione c'è bisogno della rand(). Controlla.

Ciao, Ermanno.

inginfoaria
ok ora è giusto, per caso sai come si fa dal dos con devcpp a scivere nomefile nomefile.txt
io lo so solo attraverso unix
per esempio attraverso borland si fa bcc32 nomefile.c nomefile.txt penso

Nidhogg
Ma qual è il problema, la compilazione? Con quale tool/compilatore? Con che sistema operativo?

Ciao, Ermanno.

inginfoaria
con windows xp

Mattex2
Ce qualcuno in grado di spiegarmi chiaramente perchè questo programma conta da 1 a n?
#include

using namespace std;

void conta(int n) {
if ( n > 0 ) {
conta(n-1);
cout << n << " ";
}
}

int main() {
conta(10);
cout << endl;
system("pause");}

/* Output:
1 2 3 4 5 6 7 8 9 10 why?

eafkuor1
ogni volta la funzione conta() richiama se stessa con n diminuita di 1, ma quando n=0 allora conta() ritorna.
ma era stata chiamata da se stessa, quindi ritorna alla chiamata conta() che l' ha chiamata, che puo' continuare la sua esecuzione e ritornare alla conta() ancora precedente e cosi' via, finche' non si ritornera' alla conta() iniziale che ritornera' non piu' ad un altra conta(), ma alla main()

si chiama ricorsione

p.s. spero di essermi spiegato bene


-----------------------
Il bello di essere intelligente e' che puoi divertirti a fare l' imbecille, ma se sei un imbecille non puoi fare il contrario.
Woody Allen

Nidhogg
@ingifoaria: che compilatore hai? lo stai usando in dos? spiegami il problema da capo. Grazie

Ciao, Ermanno.

inginfoaria
uso devcpp perchè borland nn mi legge le lobrerie

devo scrivere una volta compilato il programma nomeprogrmam nomefile.txt e giorni della simulazione 10 ma nn so cm in dos, lo so solo in unix e unix nn ce l'ho sul portatile che uso per l'esame!!
in unix compilavo e poi scrivevo nomeprog nomefile.txt 10
ma in windows(nel dos)?
dicono:
"\t>traghetto traghetto.txt ma cm nn va così!!!!

eafkuor1
nomeprog deve stare nella stessa cartella dove stai lavorando, per esempio se scrivi

C:\documenti\inginfoaria\>traghetto traghetto.txt 10

traghetto.exe deve trovarsi in

C:\documenti\inginfoaria\

-----------------------
Il bello di essere intelligente e' che puoi divertirti a fare l' imbecille, ma se sei un imbecille non puoi fare il contrario.
Woody Allen

inginfoaria
che vorresti dire con questo che io sono imbecille... nn pensoi proprio... allora c'è un errore nel programma perchè se scirvo C:\documenti\inginfoaria\>traghetto traghetto.txt 10 esce direttamente senza fare niente... e traghetto.exe che centra devo scrivere traghetto e traghetto.exe perchè traghetto.exe nn me lo riconosce come comando... già provato!!!!

fireball1
quote:
Originally posted by inginfoaria

che vorresti dire con questo che io sono imbecille... nn pensoi proprio...



Ma no!!! [;)][:D]
È solo la firma che utilizza eafkuor !!! [;)]

vecchio1
per altro molto sagace!![;)]


inginfoaria
ah... io avrei anche un'alta domanda... for(i=0; i
veicolo= rand()%7;

if(veicolo==0){

traghetto.nposti=100;

nnsaliti= posticat-traghetto.nposti ;
}

if(veicolo==1){

traghetto.nposti=150;
nnsaliti= posticat-traghetto.nposti ;
}

if (veicolo==2){

traghetto.nposti=15;
nnsaliti= posticat-traghetto.nposti ;
}

if(veicolo==3){

traghetto.nposti=25;
nnsaliti= posticat-traghetto.nposti ;
}

if(veicolo==4){

traghetto.nposti=200;
nnsaliti= posticat-traghetto.nposti ;

}

if(veicolo==5){

traghetto.nposti=100;
nnsaliti= posticat-traghetto.nposti ;
}

if(veicolo==6){

traghetto.nposti=10;
nnsaliti= posticat-traghetto.nposti ;
}

totnsaliti= nnsaliti??

nn so cm calcolare il totale nn saliti nn per ogni veicolo ma in totale tutti, cioè sommando i nn slaitoi per ogni veicolo, ma nn so cm scriverlo!!
garzie mille

inginfoaria
e per stampare la classifica del tipo di veicolo per ogni giornata considerando che viecolo=rand()%7 è il tipo di veioclo casuale per ogni giornata

inginfoaria
così può andare?
for(g=0; g
/*stabilisco quanti sono i posti disponibili per le persone e per i mezzi*/

for(i=0; i
veicolo= rand()%7;

if(veicolo==0){

traghetto.nposti=100;
nnsaliti= posticat-traghetto.nposti ;
traghetto.type.tipoveicolo= catpers.bigcar;
}

if(veicolo==1){

traghetto.nposti=150;
nnsaliti= posticat-traghetto.nposti ;
tragetto.tipoveicolo=catpers.smallcar;
}

if (veicolo==2){

traghetto.nposti=15;
nnsaliti= posticat-traghetto.nposti ;
traghetto.tipoveicolo=catpers.bigcamion;
}

if(veicolo==3){

traghetto.nposti=25;
nnsaliti= posticat-traghetto.nposti ;
traghetto.type.tipoveicolo=catpers.smallcamion;
}

if(veicolo==4){

traghetto.nposti=200;
nnsaliti= posticat-traghetto.nposti ;
traghetto.type.tipoveicolo= catpers.moto;
}

if(veicolo==5){

traghetto.nposti=100;
nnsaliti= posticat-traghetto.nposti ;
traghetto.type.tipoveicolo= catpers.campers;
}

if(veicolo==6){

traghetto.nposti=10;
nnsaliti= posticat-traghetto.nposti ;
traghetto.type.tipoveicolo=catpers.autobus;
}
}
totnsaliti= totnsaliti + nnsaliti;
typev= typev+traghetto[g].type.tipoveicolo;
posticat=(rand()%1000)+500;
mezzisaliti= posticat-totnsaliti;

printf("I mezzi saliti oggi sono %d, quelli non saliti %d\n", mezzisaliti, nnsaliti);

inginfoaria
rifatto un'altra volta così può andare
for(g=0; g
veicolo= rand()%7;

/*stabilisco quanti sono i posti disponibili per le persone e per i mezzi*/

for(i=0; i
if(veicolo==0){

traghetto.nposti=100;
nnsaliti= posticat-traghetto.nposti ;

}

if(veicolo==1){

traghetto.nposti=150;
nnsaliti= posticat-traghetto.nposti ;
tragetto.tipoveicolo=catpers.smallcar;
}

if (veicolo==2){

traghetto.nposti=15;
nnsaliti= posticat-traghetto.nposti ;

}

if(veicolo==3){

traghetto.nposti=25;
nnsaliti= posticat-traghetto.nposti ;
traghetto.type.tipoveicolo=catpers.smallcamion;
}

if(veicolo==4){

traghetto.nposti=200;
nnsaliti= posticat-traghetto.nposti ;

}

if(veicolo==5){

traghetto.nposti=100;
nnsaliti= posticat-traghetto.nposti ;
}

if(veicolo==6){

traghetto.nposti=10;
nnsaliti= posticat-traghetto.nposti ;

}
}
totnsaliti= totnsaliti + nnsaliti;
typev= typev+traghetto[g].type.tipoveicolo;
posticat=(rand()%1000)+500;
mezzisaliti= posticat-totnsaliti;

printf("I mezzi saliti oggi sono %d, quelli non saliti %d\n", mezzisaliti, nnsaliti);

for(i=0; i
traghetto.type.tipoveicolo= traghetto.tipoveicolo++;
}
printf("CLASSIFICA DEL TIPO DI MEZZI PER GIORNATA\n");
printf("%s\n", traghetto[g].type.tipoveicolo);
qsort(traghetto, n, sizeof(client_t), cmptipoveicolo);

eafkuor1
quote:
Originally posted by inginfoaria

che vorresti dire con questo che io sono imbecille... nn pensoi proprio...


come ha gia' detto vecchio quella e' la mia firma [:D]
quote:
Originally posted by inginfoaria

[...]esce direttamente senza fare niente... e traghetto.exe che centra devo scrivere traghetto e traghetto.exe perchè traghetto.exe nn me lo riconosce come comando... già provato!!!![...]


????????? please spiegati meglio [:)]

-----------------------
Il bello di essere intelligente e' che puoi divertirti a fare l' imbecille, ma se sei un imbecille non puoi fare il contrario.
Woody Allen

eafkuor1
un consiglio:

al posto di usare una marea di if(veicolo==0) ecc..
puoi usare una switch:

switch(veicolo){
case 0:
traghetto.nposti=100;
nnsaliti= posticat-traghetto.nposti;
break;

case 1:
//cose da fare per veicolo==1
break;


default:
//cose da fare se veicolo e' diverso da tutti i valori precedenti
break;
}

-----------------------
Il bello di essere intelligente e' che puoi divertirti a fare l' imbecille, ma se sei un imbecille non puoi fare il contrario.
Woody Allen

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.