PDA

View Full Version : IMplementazione semafori C++


sssimo
16-11-2005, 17:24
Salve ragazzi,
dovrei implementare in c++ un programma che si comporti cioè come una coda di auto al semaforo.. arrivano delle macchine si accodano poi quando scatta il verde si libera la coda...tutto regolato da un timer... Potreste aiutarmi io sono proprio 0 in programmazione..
Ciao

-----

AGGIUNGO QUESTO MAGARI VI AIUTA A COMPRENDERE MEGLIO...


Praticamente un programma che funzioni proprio come un semaforo...semaforo rosso (le macchine si accodano) semaforo verde (la coda viene liberata)...tutto gestito da un timer....sapreste aiutarmi?

71104
16-11-2005, 18:11
se sei a zero di programmazione no, non sappiamo aiutarti :Prrr:
scherzi a parte, cercati un tutorial di C++, possibilmente in inglese, e poi torna con richieste più specifiche ;)
ciao

cj++
16-11-2005, 19:15
Guarda è un esercizio che spesso viene dato all'università nei primi corsi di programmazione (io lo feci ai miei tempi in C).
Probabilmente se cerchi con iau o gugol trovi gia il sorgente.

sssimo
17-11-2005, 09:44
Si lo so avete perfettamente ragione, ma io studente di matematica mi trovo a dover preparare questo esame in 10 giorni senza nessuna nozione di programmazione :cry:
NOn so proprio dove mettermi le mani! Cmq sto anche cercando su internet se trovo qualche sorgente o qualche cosa di interessante...se riuscite a trovare qualche cosa di interessante vi sarei molto grato se me lo segnalate..
Grazie mille ragazzi

cionci
17-11-2005, 14:35
Se parli di semaforo come struttura di sincronizzazione, non è implementabile in C++ se non con l'aiuto delle API del sistema operativo... Quindi ci devi dire anche il sistema operativo...

sssimo
17-11-2005, 17:59
Allora:
Il progetto consiste nell'implementare un semaforo che gestisca una coda di macchine....proprio come un semaforo che incontri per strada..Quando è rosso la coda si riempie e quando è verde la coda si vuota...Tutto gestito da un timer...

Io avevo pensato di creare un array di N elementi..ogni x secondi un elemento
entra nell'array.... (semaforo rosso)
Intanto c'è un timer quando il timer arriva a 0 il semaforo diventa verde e la coda si rivuota.....
Dopo z secondi diventa arancione dopo z+2 secondi diventa rosso si riempie di nuovo l'array e cosi via....

Grazie mille Simone

cionci
17-11-2005, 18:18
Mi puoi dire che esame è ?
Anche l'implementazione del timer è un dettaglio che dipende dal sistema operativo...

sssimo
17-11-2005, 18:36
l'esameè di "laboratorio di algoritmi"..
Il prof mi ha detto:

"devi fare un programma che si comporti come un normale semaforo nella strada...quando è verde la cosa si vuota...quando è rosso la coda si riempie..."

Tutto l'altro lho dedotto io....credi che abbìa dedotto male??

71104
18-11-2005, 01:38
l'esameè di "laboratorio di algoritmi"..
Il prof mi ha detto:

"devi fare un programma che si comporti come un normale semaforo nella strada...quando è verde la cosa si vuota...quando è rosso la coda si riempie..."

Tutto l'altro lho dedotto io....credi che abbìa dedotto male?? e il timer come lo sai implementare tu? usi qualche funzione specifica del sistema operativo? oppure soluzione niubba fate un loop succhia-CPU che controlla il tempo con le funzioni standard del C ad ogni iterazione? :D

cionci
18-11-2005, 08:34
71104: lo sai che la firma mi piace, ma la potresti riportare a dimensioni da regolamento ? ;)

71104
18-11-2005, 13:13
avete un regolamento troppo rigido! :cry:

sssimo
19-11-2005, 12:01
io nn sono molto pratico del c++ magari se potreste aiutarmi

yssj485
19-11-2005, 13:05
con wxwidgets c'è una classe wxTimer..

per le macchine in code perchè un array? una semplice variabile a cui aggiungi o sottrai non è uguale?

71104
19-11-2005, 14:28
io nn sono molto pratico del c++ magari se potreste aiutarmi non possiamo aiutarti perché non sappiamo come il tuo professore vuole che tu lavori; che framework devi usare? oppure devi usare delle API? quali? Windows? Linux? Mac? esistono fottilioni di maniere diverse di realizzare un timer nel mondo della programmazione :D

jappilas
19-11-2005, 15:05
esistono fottilioni di maniere diverse di realizzare un timer nel mondo della programmazione :D
verissimo... però sono curioso di sapere di che ordine di grandezza è il fottilione... 10 seguito da 25 , ehm, zeri ? :sofico:
scusate oggi sono un po' faceto... :D

scherzi a parte, per risolvere il problema può effettivamente tornare utile anche il cosidetto spinlock (la cui implementazione varia da api all' altra come per i timer se non ricordo male )

gokan
20-11-2005, 08:32
Devi aver seguito almeno un corso di sistemi operativi, comunque, sotto windows, la bibbia è MDSN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/using_semaphore_objects.asp)