View Full Version : Progetti per esame
Ciao raga, ho ricevuto dal mio professore universitario due progetti da presentare all'esame. Eccoli qui:
1. algoritmo per il calcolo della fusione di due insiemi (ordinati) di cognomi, che utilizzi la function strcmp per determinare quale tra due cognomi precede l’altro nell’ordine alfabetico. L’intersezione dei due insiemi di input può essere non vuota; gli eventuali elementi uguali devono apparire ripetuti nell’array “fuso”.
Ognuno dei tre insiemi di cognomi (due di input e uno di output) è un array di puntatori a char. Nei tre test usare insiemi di almeno 10 e 20 cognomi, 20 e 30 cognomi, 30 e 40 cognomi.
2. algoritmo che, data in input una matrice a banda quadrata nxn memorizzata con tecnica standard (in un array 2D), genera la sua rappresentazione nel formato diagonale con offset (un array 2D nx3 + un array 1D degli offset). L’algoritmo è implementato come function C.
Sviluppare anche un algoritmo che opera la trasformazione inversa, cioè passa dalla rappresentazione diagonale con offset a quella standard.
Nei test (che per questo esercizio devono essere almeno 6) usare array 2D 5x5,7x7,9x9,10x10,15x15,20x20. Gli elementi della matrice sono di tipo float, con valori nell’intervallo [-10,10]. Il main genera a caso gli elementi non nulli della matrice (array 2D), mentre gli le diagonali che contengono tali elementi non nulli sono prefissate mediante una scanf. Utilizzare matrici con almeno 4 diagonali non nulle e non tutte adiacenti. Si ricorda che, se x_casuale è dichiarata di tipo float, allora l’istruzione
x_casuale=-10.0F+20.0F*(float)rand()/(float)MAX_RAND;
genera un numero casuale di tipo float (distribuzione uniforme) nell’intervallo [-10,10].
Chiedo aiuto a voi esperti. Chi mi fa superare l'esame?
Io sto provando di mio qualcosa, ma sinceramente non mi è chiaro del tutto cosa si chiede.
Grazie :)
Ciao, ci provo io ad aiutarti:
1. algoritmo per il calcolo della fusione di due insiemi (ordinati) di cognomi, che utilizzi la function strcmp per determinare quale tra due cognomi precede l’altro nell’ordine alfabetico. L’intersezione dei due insiemi di input può essere non vuota; gli eventuali elementi uguali devono apparire ripetuti nell’array “fuso”.
Ognuno dei tre insiemi di cognomi (due di input e uno di output) è un array di puntatori a char. Nei tre test usare insiemi di almeno 10 e 20 cognomi, 20 e 30 cognomi, 30 e 40 cognomi.
Se ho capito bene hai, in sostanza, due array di puntatori a char fatti così:
char *cognomi1[] = { "Bennato", "Nannini", "Rossi", ..ecc.. };
char *cognomi2[] = { "Pausini", "Celentano", "Battisti", ..ecc.. };
In questo esempio i cognomi sono "cablati" nel programma. Dal testo non si capisce se i cognomi devono essere presi in input da tastiera, da un file o altro.
La frase "L’intersezione dei due insiemi di input può essere non vuota" indica che lo stesso cognome può apparire in entrambi gli insiemi (non era più semplice dire "i cognomi possono essere ripetuti"??).
A questo punto devi mettere tutti i cognomi in un unico array di puntatori a char ed ordinarlo usando un qualche algoritmo di ordinamento (bubblesort, quicksort, ecc...), facendo uso appunto della strcmp.
2. algoritmo che, data in input una matrice a banda quadrata nxn memorizzata con tecnica standard (in un array 2D), genera la sua rappresentazione nel formato diagonale con offset (un array 2D nx3 + un array 1D degli offset). L’algoritmo è implementato come function C.
Sviluppare anche un algoritmo che opera la trasformazione inversa, cioè passa dalla rappresentazione diagonale con offset a quella standard.
Nei test (che per questo esercizio devono essere almeno 6) usare array 2D 5x5,7x7,9x9,10x10,15x15,20x20. Gli elementi della matrice sono di tipo float, con valori nell’intervallo [-10,10]. Il main genera a caso gli elementi non nulli della matrice (array 2D), mentre gli le diagonali che contengono tali elementi non nulli sono prefissate mediante una scanf. Utilizzare matrici con almeno 4 diagonali non nulle e non tutte adiacenti. Si ricorda che, se x_casuale è dichiarata di tipo float, allora l’istruzione
x_casuale=-10.0F+20.0F*(float)rand()/(float)MAX_RAND;
genera un numero casuale di tipo float (distribuzione uniforme) nell’intervallo [-10,10].
Questo invece non l'ho proprio capito. Dovresti anche spiegarmi ad esempio cos'è "una matrice a banda quadrata nxn memorizzata con tecnica standard" che per me non ha alcun senso.
Certo che i professori d'oggi appartengono (quasi) tutti al UCCS (Ufficio Complicazioni Cose Semplici). :Prrr:
[...]
Io sto provando di mio qualcosa, ma sinceramente non mi è chiaro del tutto cosa si chiede.
Grazie :)
Se studi informatica (non so in quale facolta` ti trovi), ti consiglio di prendere confidenza con i tutor e farti aiutare da loro. Se non vuoi rivolgerti dai tutor, studia con uno o piu' amici. Questo te lo dico come investimento per il futuro... altrimenti sono **zzi. Cioe` gli algoritmi devi imparare a scriverteli da te...
Se studi informatica (non so in quale facolta` ti trovi), ti consiglio di prendere confidenza con i tutor e farti aiutare da loro. Se non vuoi rivolgerti dai tutor, studia con uno o piu' amici. Questo te lo dico come investimento per il futuro... altrimenti sono **zzi. Cioe` gli algoritmi devi imparare a scriverteli da te...
Ma infatti io di programmi ne so scrivere. Qualcosa insomma la riesco a fare. Il mio problema principale e' capire cosa si chiede come in questo caso :)'
Ciao, ci provo io ad aiutarti:
Se ho capito bene hai, in sostanza, due array di puntatori a char fatti così:
char *cognomi1[] = { "Bennato", "Nannini", "Rossi", ..ecc.. };
char *cognomi2[] = { "Pausini", "Celentano", "Battisti", ..ecc.. };
In questo esempio i cognomi sono "cablati" nel programma. Dal testo non si capisce se i cognomi devono essere presi in input da tastiera, da un file o altro.
La frase "L’intersezione dei due insiemi di input può essere non vuota" indica che lo stesso cognome può apparire in entrambi gli insiemi (non era più semplice dire "i cognomi possono essere ripetuti"??).
A questo punto devi mettere tutti i cognomi in un unico array di puntatori a char ed ordinarlo usando un qualche algoritmo di ordinamento (bubblesort, quicksort, ecc...), facendo uso appunto della strcmp.
Questo invece non l'ho proprio capito. Dovresti anche spiegarmi ad esempio cos'è "una matrice a banda quadrata nxn memorizzata con tecnica standard" che per me non ha alcun senso.
Certo che i professori d'oggi appartengono (quasi) tutti al UCCS (Ufficio Complicazioni Cose Semplici). :Prrr:
Ecco, quello che non hai capito tu non l'ho capito nemmeno io. E' questo il problema. Cioe', ma perche' non spiagare le cose in modo semplice...
Per quanto riguarda il primo problema ora leggo cosa hai scritto :) Grazie!
Ma infatti io di programmi ne so scrivere. Qualcosa insomma la riesco a fare. Il mio problema principale e' capire cosa si chiede come in questo caso :)'
non metto in dubbio se sai scrivere programmi o no. Intendevo che se devi superare un esame di programmazione in ingegneria meccanica, io stesso mi farei passare l'algoritmo da un collega di ingegneria informatica :-) ma se uno studia quest'ultima... non so se mi sono spiegato, questo intendevo. Non oserei giudicare te e nessuno... ti do questo suggerimento come collega universitario, tutto qua
leadergl
21-11-2005, 14:39
se non ricordo male le matrici a banda, quadrate, sono di questo tipo:
5 4 4 2
4 5 4 4
4 4 5 4
2 4 4 5
o una cosa del genere...che se ci fate caso sono simmetriche negli elementi...
mi pare...
oppure sono quelle di questo tipo:
5 5 0 0 0
0 5 5 0 0
0 0 5 5 0
0 0 0 5 5
0 0 0 0 5
che se notate sono tutti elementi nulli tranne quelli in una striscia (banda)
cmq una di queste due...forse più la seconda e se avete studiato calcolo numerico sapete anche qual'è la loro rappresentazione nel: formato diagonale con offset (un array 2D nx3 + un array 1D degli offset).
non metto in dubbio se sai scrivere programmi o no. Intendevo che se devi superare un esame di programmazione in ingegneria meccanica, io stesso mi farei passare l'algoritmo da un collega di ingegneria informatica :-) ma se uno studia quest'ultima... non so se mi sono spiegato, questo intendevo. Non oserei giudicare te e nessuno... ti do questo suggerimento come collega universitario, tutto qua
Sisi, ma io avevo capito. Il problema e' che lavoro fuori citta' e non conosco personalmente colleghi universitari. Studio quando posso e vado all'universita' a fare esami. Ecco perche' ho scritto qui :)
Tnx leadergel. Almeno cosi' si riesce a cominciare a capire cosa viene chiesto per il secondo algoritmo...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.