Pagina 1 di 7 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 63
  1. #1

    [C] ordinare una struttura di date

    questa è la traccia:

    -Leggere un vettore di date e ordinarlo
    in modo non decrescente
    -Utilizzare l’algoritmo di ordinamento
    bubble sort

    è nella lezione delle strutture ho buttato giu un po di codice

    codice:
    #include <stdio.h>
    #define dim 10
    
    struct data {int giorno; int mese; int anno;};
    typedef enum {FALSE, TRUE} BOOLEAN;
    int leggi (struct data *d);
    int visualizza(struct data d);
    BOOLEAN confronta (struct data d1, struct data d2);
    int leggidate(struct data a[], int n);
    int visualizzadate(struct data a[], int n);
    int ordina (struct data a[], int n);
    
    
    
    
    
    int main(){
        int n, i;
        struct data a[dim];
        
        printf("numero di strutture desiderate = ");
        scanf("%d", &n);
        
       
        
        leggidate(a,n);
        visualizzadate(a,n);
        ordina(a,n);    
        visualizzadate(a,n);
        
        
        system("pause");
        return 0;
    }
    
    int leggi(struct data *d){
        printf("inserisci giorno = ");
        scanf("%d", &d->giorno);
        printf("inserisci mese = ");
        scanf("%d", &d->mese);
        printf("inserisci anno = ");
        scanf("%d", &d->anno);
    }
    
    
    int visualizza(struct data d){
        printf("%d %d %d", d.giorno, d.mese, d.anno);
        printf ("\n");
    }
    
    int leggidate(struct data a[], int n){
        int i;
        for(i=0;i<n;i++);
        leggi(&a[i]);
    
    }
    
    int visualizzadate(struct data a[], int n){
        int i;
        for(i=0;i<n;i++);
        visualizza(a[i]);
    }
    
    BOOLEAN confronta ( struct data d1, struct data d2)
    
    { BOOLEAN ris;
    if (d1.anno < d2.anno) ris=TRUE;
    else
    if (d1.anno > d2.anno) ris=FALSE;
    else 
    if (d1.mese < d2.mese) ris=TRUE;
    else
    if (d1.mese > d2.mese) ris=FALSE;
    else 
    if (d1.giorno < d2.giorno) ris=TRUE;
    else
    if (d1.giorno > d2.giorno) ris=FALSE;
    else 
    ris = TRUE;
    return ris;
    }
    
    int ordina (struct data a[], int n){
        
            /*QUI NON HO PROPRIO IDEA COME MODIFICARE L'ALGORITMO DEL BUBBLESORT
               PER FARLO FUNZIONARE */
    mi aiutate nel ragionamento dandomi qualche spunto? oggi sto più fregato del solito....

  2. #2
    Un esempio di bubble sort

    codice:
    void bubbleSort(int numbers[], int array_size)
    {
      int i, j, temp;
     
      for (i = (array_size - 1); i >= 0; i--) {
        for (j = 1; j <= i; j++){
          if (numbers[j-1] > numbers[j]){
            temp = numbers[j-1];
            numbers[j-1] = numbers[j];
            numbers[j] = temp;
          }
        }
      }
    }
    Ora sono stanco anche io..

  3. #3
    questo non mi ordina una struttura ma un semplice array giusto?

  4. #4
    Si hai ragione..la funzione mostrata da simo_us è una funzione per ordinare un array, ma la puoi adattare benissimo a qualsiasi struttura dati. Basta sostituire la condizione dell' if, infatti mettendo al posto di un confronto tra numeri un confronto fra strutture(mi sembra di avere visto gia una funzione che confronta le date anche se non l'ho controllata) e mettendo al posto dello scambio tra numeri uno scambio di strutture dentro il blocco dell' if hai risolto il tuo problema.

  5. #5
    ok sembra abbastanza fattibile...ora sto per uscire...appena torno mi metto all'opera e domani posto il codice corretto (spero)...

  6. #6
    no niente da fare non so come modificare il bubblesort....un piccolo aiutino?

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Skass89
    no niente da fare non so come modificare il bubblesort....un piccolo aiutino?
    Suggerimento: trasforma la data contenuta nella struttura nel formato giapponese (aaaammgg): in questo modo puoi fare confrontare due dati facilmente. Il blocco if è molto simile a quello che ti è già stato scritto.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    un esempio generico di condizione dell'if?...nn ne ho mai vista una per le strutture...e sul libro che ho non ne trovo...

  9. #9
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Basta confrontare il/i campo/i che ti interessano.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non ti confondere con il fatto che sia una struttura.

    Per il confronto devi utilizzare il suo campo similmente a come utilizzavi un elemento di array o una variabile.

    Solo per lo scambio, quando lo dovrai fare, scambierai tutti i campi della struttura e non solo un elemento di array o variabile semplice.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.