PDA

View Full Version : [c] qualche consiglio su programma scientifico


Death By Stereo
26-02-2007, 15:00
Salve a tutti, dovrei creare un programma che riceve in ingresso un numero n di dati (non noto a priori), ognuno dei quali è composto da 2 valori di tipo float e il programma deve ordinarli in ordine crescente sulla base del primo di questi 2 valori. Il programma deve stampare la situazione corrente (cioè la lista ordinata dei valori inseriti fino a quel punto) ogni 10 inserimenti. Si è posto l'accento sulla scelta della struttura adeguata.

Qualcuno saprebbe darmi qualche consiglio su come procedere?

Grazie mille ;)

andbin
26-02-2007, 15:20
Salve a tutti, dovrei creare un programma che riceve in ingresso un numero n di dati (non noto a priori), ognuno dei quali è composto da 2 valori di tipo float e il programma deve ordinarli in ordine crescente sulla base del primo di questi 2 valori. Il programma deve stampare la situazione corrente (cioè la lista ordinata dei valori inseriti fino a quel punto) ogni 10 inserimenti. Si è posto l'accento sulla scelta della struttura adeguata.

Qualcuno saprebbe darmi qualche consiglio su come procedere?Innanzitutto ti conviene creare una struttura che contiene i due float. Poi potresti gestire un array di questa struttura allocato dinamicamente. In pratica, usando la funzione realloc, allochi (e in seguito riallochi) un array di quella struttura, che man mano si espande in base alla necessità.
Per l'ordinamento, se non ci sono requisiti/richieste particolari, potresti usare la ben nota funzione qsort().

Death By Stereo
26-02-2007, 16:18
Innanzitutto ti conviene creare una struttura che contiene i due float. Poi potresti gestire un array di questa struttura allocato dinamicamente. In pratica, usando la funzione realloc, allochi (e in seguito riallochi) un array di quella struttura, che man mano si espande in base alla necessità.
Per l'ordinamento, se non ci sono requisiti/richieste particolari, potresti usare la ben nota funzione qsort().

E gestire la creazione degli array con un ciclo while?

Per quanto riguarda l'ordinamento da quello che ho capito i valori non devono essere ordinati alla fine bensì nel momento stesso in cui vengono inseriti quindi non so se quicksort sia molto adatto...che dici?

grazie mille...

andbin
26-02-2007, 16:50
E gestire la creazione degli array con un ciclo while?Certamente devi avere un loop. Poi come uscire dal loop (cioè in quale condizione) lo stabilisci tu.

Per quanto riguarda l'ordinamento da quello che ho capito i valori non devono essere ordinati alla fine bensì nel momento stesso in cui vengono inseriti quindi non so se quicksort sia molto adatto...che dici?Beh, qui dipende da quando vuoi fare l'ordinamento. Se l'ordinamento lo vuoi fare ad ogni inserimento, allora ovviamente il quicksort non è il massimo. In tal caso sarebbe più utile e comodo usare una lista linkata con inserimento ordinato (cioè quando vuoi inserire un elemento scansioni la lista per trovare il posto giusto dove inserirlo).
Altrimenti pensavo che si potrebbe usare qsort solamente quando devi visualizzare i dati, ovvero ogni 10 inserimenti. In questo caso una qsort sarebbe forse più accettabile.

Se vuoi prova con la lista linkata ... butta giù del codice e se hai problemi ... chiedi pure.

Death By Stereo
26-02-2007, 16:53
Certamente devi avere un loop. Poi come uscire dal loop (cioè in quale condizione) lo stabilisci tu.

Beh, qui dipende da quando vuoi fare l'ordinamento. Se l'ordinamento lo vuoi fare ad ogni inserimento, allora ovviamente il quicksort non è il massimo. In tal caso sarebbe più utile e comodo usare una lista linkata con inserimento ordinato (cioè quando vuoi inserire un elemento scansioni la lista per trovare il posto giusto dove inserirlo).
Altrimenti pensavo che si potrebbe usare qsort solamente quando devi visualizzare i dati, ovvero ogni 10 inserimenti. In questo caso una qsort sarebbe forse più accettabile.

Se vuoi prova con la lista linkata ... butta giù del codice e se hai problemi ... chiedi pure.


Ok provo con la lista...entro mercoledì dovrei riuscire a combinare qualcosa. Magari se mi serve qualche piccolo chiarimento ti mando un pm così non racconto i fatti miei a tutto il forum! :D

Grazie mille!

Ciao!