Programma in C Clicca QUI per vedere il messaggio nel forum |
Paul442 |
Ciao a tutti, ho provato a dare questo esame 3 volte quest'anno...vorrei sapere se qualcuno può consigliarmi cosa e dove studiare per riuscire a fare il programmino in C che il Professore richiede come cosa necessaria ma non sufficiente per passare questo esame..Ho studiato un po di sintassi C su internet ma nn basta mai per fare poi il programmino durante il compito...
Grazie |
gae84 |
io sto studiando un po' le sue soluzioni del progetto.... e alla fine ho notato che sono sempre le stesse cose che si ripetono.....
del tipo se ci sono i thread si deve fare i controlli su memoria condivisa, controlli sul primo thread controlli sul secondo thread, poi ovviamente aggiungere il corpo dei due thread dopo il corpo del main
oppure ci sono quelli con le fork, lì controlli se la fork viene creata, se il pid è 0 hai un processo figlio che dovrà fare le sue cose, se è 1= 0 è il processo padre con le sue cose, fai le operazioni varie e per farli comunicare su usa sempre la memoria condivisa.
Questo è quello che ho notato io, poi boh magari sto dicendo vaccate su vaccate, però secondo me alla fine non è impossibile (chiariamo che è la prima volta che lo tento, magari poi mi ritrovo all'esame e rimango fregato anch'io) |
Paul442 |
Ma per esempio l'ultimo tema d'esame del 2 settembre saresti stato in grado di farlo? nel senso oltre la difficoltà del C anche la difficoltà della sommatoria del prodotto vettoriale... |
gae84 |
guarda, a vedere la soluzione del prof mi viene da piangere..... perchè devo essere sincero, usa millemila funzioni che nn ho mai visto negli altri esempi suoi... però oggi ho provato a farlo con un mio compagno e concettualmente nn è impossibile come programma.....
io sono riuscito a tirare fuori un programmino che potrebbe anche funzionare in teoria, le operazioni che lui richiede le fa, ma se mi chiedi se fossi in grado di tirar fuori il medesimo sorgente che ha messo il prof sul sito, quello decisamente no
typedef struct{
double a
double b
double prodotto
int lungvet
dim_seg
}
num_thread = lung_vet/dim_seg
main(){
int ripetizioni = lung_vet/num_thread;
for(int i=0; i<num_thread; i++){
//calcolare le posizioni di inizio e fine per ogni thread
base=i*ripetizioni;
fine=base+100;
n = createthread(thread_prod(base, fine));
}
for(i=0; i<num_thread; i++){if()
n = pthread_join(thread[i], NULL);
}
}
thread_prod(int inizio, int fine){
for(int i=inizio; i<fine; i++){
//sveglia thread
prod = (a[i]*b[1]) + prod;
//blocca thread
}
pthread_exit(1);
}
io piuttosto che lasciarglielo in bianco o ritirarmi gli consegnavo una cosa del genere, è molto + semplice rispetto a quello del prof (lui ha fatto una funzione dove esegue il prodotto vettoriale per ottimizzare il codice, io invece ho messo tutto nel corpo del thread) però alla fine penso di essermi avvicinato in qualche maniera alla sua soluzione, poi boh magari ho scritto solo vaccate.... |
Paul442 |
Ti ringrazio per il tuo esempio, per altro credo che nel modo in cui l'hai fatto andava benissimo...se ho capito bene a lui basterebbe uno pseudocodice anche con delle funzioni inventate...secondo te cosa posso fare e/o studiare in sti 3 giorni rimanenti per avere delle chance per il programmino in C? |
gae84 |
-funzioni base di (if-else, for, while, input e output.... insomma la roba base)
-fork(creare processo padre e figlio, come si identificano, come mettere in pausa uno dei due, come passare dati da processo padre a figlio)
-thread(come crearli e sincronizzarli)
cmq studiare può servire fino a un certo punto, conterà soprattutto quanto saremo fortunati nel trovare una richiesta + o - fattibile |
Paul442 |
grazie mille....si spero anche io in una richiesta fattibile... |
|
|
|