Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Trusty
    Registrato dal
    Dec 2004
    Messaggi
    642

    [C] Saluti a tutti!!!!

    Buongiorno a tutti!!!
    Sono appena arrivato nel vostro club (forum) e ho già bisogno di un piccolo aiutino da parte vostra!!Ebbene, vado all'Università ma mi trovo impacciato su una cosa:
    Dati i seguenti tipi:

    typedef struct{
    int ore;
    int minuti;}Orario;

    typedef struct {
    Orario time;
    char attivita[20];} Impegno;


    devo scrivere una funzione void agenda (Impegno agenda[],int n) che data una agenda, cioè un array di impegni di dimensione n, riordina gli impegni contenuti secondo l'ordine cronologico! Vi giuro che è una settimana che ci provo ma non ce la faccio proprio (senza scrivere una tonnellata) di righe di codice!! Vi prego, aiutatemi!!!!

  2. #2

    Re: [C] Saluti a tutti!!!!

    Originariamente inviato da Trusty
    Buongiorno a tutti!!!
    Sono appena arrivato nel vostro club (forum) e ho già bisogno di un piccolo aiutino da parte vostra!!Ebbene, vado all'Università ma mi trovo impacciato su una cosa:
    Dati i seguenti tipi:

    typedef struct{
    int ore;
    int minuti;}Orario;

    typedef struct {
    Orario time;
    char attivita[20];} Impegno;


    devo scrivere una funzione void agenda (Impegno agenda[],int n) che data una agenda, cioè un array di impegni di dimensione n, riordina gli impegni contenuti secondo l'ordine cronologico! Vi giuro che è una settimana che ci provo ma non ce la faccio proprio (senza scrivere una tonnellata) di righe di codice!! Vi prego, aiutatemi!!!!
    Innanzitutto (ma ci penseranno i moderatori a rimproverarti) ti consiglio di mettere un titolo più esplicativo la prox volta.
    Per quanto riguarda il tuo problema prima una domanda secca:ma gli algoritmi di ordinamento su interi li avete fatti?Tipo selectionsort,quicksort,bubblesort etc...Se è così il problema si riduce a riadattare leggermente uno di quelli per ordinare rispetto al campo che ti interessa.Prima rispondi alla mia domanda quindi,li avete fatti?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Con il banalissimo bubblesort:
    codice:
    typedef struct{ 
    int ore; 
    int minuti;}Orario; 
    
    typedef struct { 
    Orario time; 
    char attivita[20];} Impegno; 
    
    int OrarioComp(Orario a, Orario b)
    {
    	int r;
    	r = a.ore - b.ore;
    	if (!r) r = a.minuti - b.minuti;
    	return r;
    }
    
    void OrdinaImpegni(Impegno a[], int n)
    {
    	for (int i = n-1; i >= 0; i--)
    		for (int j = n-2; j >= 0; j--)
    			if (OrarioComp(a[j].time, a[j+1].time)>0)
    			{
    				Impegno temp = a[j];
    				a[j] = a[j+1];
    				a[j+1] = temp;
    			}
    }

  4. #4
    Utente di HTML.it L'avatar di Trusty
    Registrato dal
    Dec 2004
    Messaggi
    642
    No, gli algoritmi di ordinamento non li abbiamo ancora fatti!!! Per quanto riguarda la procedura devo farne una sola !!! Si possono concentrare in un unica procedura le due procedure di sopra?? Grazie per le risposte !!!!


    Thank you!!!!!!!!!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Con una sola procedura (molto molto poco elegante)
    codice:
    typedef struct{ 
    int ore; 
    int minuti;}Orario; 
    
    typedef struct { 
    Orario time; 
    char attivita[20];} Impegno; 
    
    void OrdinaImpegni(Impegno a[], int n)
    {
    	for (int i = n-1; i >= 0; i--)
    		for (int j = n-2; j >= 0; j--)
    			if ((a[j].time.ore*60 + a[j].time.minuti) > (a[j+1].time.ore*60 + a[j+1].time.minuti))
    			{
    				Impegno temp = a[j];
    				a[j] = a[j+1];
    				a[j+1] = temp;
    			}
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    unomichiasada questi sono programmi abbastanza semplici probabilmente lo fanno come esercitazione introduttiva agli algoritmi di ordinamento

  7. #7
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    Originariamente inviato da Trusty
    Buongiorno a tutti!!!
    Sono appena arrivato nel vostro club (forum) e ho già bisogno di un piccolo aiutino da parte vostra!!
    benvenuto anche a te

    oltre a specificare il linguaggio come giustamente hai fatto, ricorda di utilizzare titoli più significiativi
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  8. #8
    Utente di HTML.it L'avatar di Trusty
    Registrato dal
    Dec 2004
    Messaggi
    642
    Posso chiedervi se cortesemente mi spiegate l'if del codice di sopra??

    Tante Grazie!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    codice:
    if ((a[j].time.ore*60 + a[j].time.minuti) > (a[j+1].time.ore*60 + a[j+1].time.minuti))
    Questo if fa un semplice confronto:
    facendo ore*60+minuti ottiene i minuti totali dell'uno e dell'altro, quindi li confronta. Se un elemento che viene prima nella lista in termini di tempo sta dopo, fa uno scambio. Insomma il significato e':
    SE IL TOTALE MINUTI DEL PRIMO E' MAGGIORE DEL TOTALE MINUTI DEL SECONDO ...
    L'alternativa sarebbe:

    codice:
    if ((a[j].time.ore > a[j+].time.ore) || (a[j].time.ore == a[j+1].time.ore && a[j].time.minuti > a[j+1].time.minuti))
    Questo invece dice:
    SE IL TOTALE ORE DEL PRIMO E' MAGGIORE DEL TOTALE ORE DEL SECONDO O IL TOTALE ORE E' UGUALE, MA IL TOTALE MINUTI DEL PRIMO E' MAGGIORE DEL TOTALE MINUTI DEL SECONDO ...

    Capito ora ?

  10. #10
    Utente di HTML.it L'avatar di Trusty
    Registrato dal
    Dec 2004
    Messaggi
    642
    Certo!!!
    Grazie ancora!!!!!! Ciauzzz!!!!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.