Ordinamento linguaggio c

di il
18 risposte

18 Risposte - Pagina 2

  • Re: Ordinamento linguaggio c

    Ragazzi con un mio amico siamo riusciti a scrivere questo ma ora il problema sta nello ordinare gli appuntamenti in base a gli orari:
    #include <stdio.h> 
    #define M 100
    
    struct data {
       int minuti;
       int ora;
       int giorno;
       int mese;
       int anno;
    };
    
    typedef struct data DATA;
    
    
    void caricaDate (DATA *d, int dimensione);
    void caricaDate (DATA *d, int dimensione)
    {
    int i=0;
    for (i=0;i<dimensione;i++) {
    printf("Inserimento data n. %d\n",i+1);
    
    printf("\tOre: ");
    scanf("%d",&d[i].ora);
    		 
    printf("\tMinuti: ");
    scanf("%d",&d[i].minuti);
    		 
    printf("\tGiorno: ");
    scanf("%d",&d[i].giorno);
    
    printf("\tMese: ");
    scanf("%d",&d[i].mese);
    
    printf("\tAnno: ");
    scanf("%d",&d[i].anno);
    }
    }
    
    
    int CompareDate (const DATA, const DATA);
    int CompareDate (const DATA d1, const DATA d2) 
    {
    if (d1.anno<d2.anno) return 1;
    else
    if(d1.anno>d2.anno) return 2;
    else 
    if(d1.anno==d2.anno) 
    if(d1.mese<d2.mese) return 1;
    else 
    if (d1.mese > d2.mese) return 2;
    else 
    if(d1.mese==d2.mese) 
    if(d1.giorno<d2.giorno) return 1;
    else 
    if(d1.giorno>d2.giorno) return 2;
    else 
    if(d1.giorno==d2.giorno) 
    if(d1.minuti<d2.minuti) return 1;
    else
    if(d1.minuti>d2.minuti) return 2;
    else
    if(d1.minuti==d2.minuti) 
    if(d1.ora<d2.ora) return 1;
    else
    if(d1.ora>d2.ora) return 2;
    else
    if(d1.ora==d2.ora) return 0;
    }
    
    
    DATA *BubbleSort (DATA *d, int dimensione);
    DATA* BubbleSort (DATA *vettore, int dimensione){
    int i=0; int j;     
    DATA temp;
    int scambi=1;
    while (scambi==1 && i<=dimensione-2) {
    scambi=0;
    for(j=dimensione-1;j>=i+1;j--) 
    if((CompareDate(vettore[j],vettore[j-1])==0) || (CompareDate(vettore[j],vettore[j-1])==1)){
    temp=vettore[j];
    vettore[j]=vettore[j-1];
    vettore[j-1]=temp;
    scambi=1;} 
    i++;
    }
    return vettore;
    }
    
    //funzione agenda.
    
    typedef struct{
    char testo[30];
    int pagina;	
    }PaginaAgenda;
    
    void FunzAgenda(const DATA *d, int dimensione){
    
    PaginaAgenda Agenda[dimensione];
    char text[30];
    int i;
    
    for(i=0;i<dimensione;i++){
    Agenda[i].pagina=(i+1);
    printf("inserisci appuntamento:");
    scanf("%s",text);
    strcpy(Agenda[i].testo,text);
    }
    
    printf("\nVisualizzo l'agenda\n");
    for(i=0;i<dimensione;i++){
    printf("\nPagina %d \n", Agenda[i].pagina);
    printf("Appuntamento %s : %d:%d--%d/%d/%d  \n",Agenda[i].testo,d[i].ora,d[i].minuti,d[i].giorno, d[i].mese, d[i].anno);
    }
    }
    
    
    int main() {
     
     DATA d1[M];
     int dimensione;
     dimensione=3;
     
      
     caricaDate(d1, dimensione); 
     printf (" INSERISCI APPUNTAMENTI  \n");
     FunzAgenda(BubbleSort(d1, dimensione), dimensione);
     
     system("pause");
     return;
     
    }
  • Re: Ordinamento linguaggio c

    Il codice VA CORRETTAMENTE INDENTATO!
    Inserire la data un pezzetto alla volta e' da matti!
    meglio inserirla come una stringa in formato:

    yyyy/mm/gg/hh/min

    Oppure solo

    mm/gg/hh/mm

    Spero sia chiaro che vuol dire

    anno/mese/giorno/ora/minuto

    Ci sono un'infinito numero di algoritmi di ordinamento, pescatene uno ed implementatelo/usatelo

    (..zarola!!! anch'io scrivo "per taliano" )
  • Re: Ordinamento linguaggio c

    ...iNdentato direi....
  • Re: Ordinamento linguaggio c

    lucagallo128 ha scritto:


    Ragazzi con un mio amico siamo riusciti a scrivere questo ma ora il problema sta nello ordinare gli appuntamenti in base a gli orari:
    #include <stdio.h> 
    #define M 100
    
    struct data {
       int minuti;
       int ora;
       int giorno;
       int mese;
       int anno;
    };
    
    typedef struct data DATA;
    
    
    void caricaDate (DATA *d, int dimensione);
    void caricaDate (DATA *d, int dimensione)
    {
    int i=0;
    for (i=0;i<dimensione;i++) {
    printf("Inserimento data n. %d\n",i+1);
    
    printf("\tOre: ");
    scanf("%d",&d[i].ora);
    		 
    printf("\tMinuti: ");
    scanf("%d",&d[i].minuti);
    		 
    printf("\tGiorno: ");
    scanf("%d",&d[i].giorno);
    
    printf("\tMese: ");
    scanf("%d",&d[i].mese);
    
    printf("\tAnno: ");
    scanf("%d",&d[i].anno);
    }
    }
    
    
    int CompareDate (const DATA, const DATA);
    int CompareDate (const DATA d1, const DATA d2) 
    {
    if (d1.anno<d2.anno) return 1;
    else
    if(d1.anno>d2.anno) return 2;
    else 
    if(d1.anno==d2.anno) 
    if(d1.mese<d2.mese) return 1;
    else 
    if (d1.mese > d2.mese) return 2;
    else 
    if(d1.mese==d2.mese) 
    if(d1.giorno<d2.giorno) return 1;
    else 
    if(d1.giorno>d2.giorno) return 2;
    else 
    if(d1.giorno==d2.giorno) 
    if(d1.minuti<d2.minuti) return 1;
    else
    if(d1.minuti>d2.minuti) return 2;
    else
    if(d1.minuti==d2.minuti) 
    if(d1.ora<d2.ora) return 1;
    else
    if(d1.ora>d2.ora) return 2;
    else
    if(d1.ora==d2.ora) return 0;
    }
    
    
    DATA *BubbleSort (DATA *d, int dimensione);
    DATA* BubbleSort (DATA *vettore, int dimensione){
    int i=0; int j;     
    DATA temp;
    int scambi=1;
    while (scambi==1 && i<=dimensione-2) {
    scambi=0;
    for(j=dimensione-1;j>=i+1;j--) 
    if((CompareDate(vettore[j],vettore[j-1])==0) || (CompareDate(vettore[j],vettore[j-1])==1)){
    temp=vettore[j];
    vettore[j]=vettore[j-1];
    vettore[j-1]=temp;
    scambi=1;} 
    i++;
    }
    return vettore;
    }
    
    //funzione agenda.
    
    typedef struct{
    char testo[30];
    int pagina;	
    }PaginaAgenda;
    
    void FunzAgenda(const DATA *d, int dimensione){
    
    PaginaAgenda Agenda[dimensione];
    char text[30];
    int i;
    
    for(i=0;i<dimensione;i++){
    Agenda[i].pagina=(i+1);
    printf("inserisci appuntamento:");
    scanf("%s",text);
    strcpy(Agenda[i].testo,text);
    }
    
    printf("\nVisualizzo l'agenda\n");
    for(i=0;i<dimensione;i++){
    printf("\nPagina %d \n", Agenda[i].pagina);
    printf("Appuntamento %s : %d:%d--%d/%d/%d  \n",Agenda[i].testo,d[i].ora,d[i].minuti,d[i].giorno, d[i].mese, d[i].anno);
    }
    }
    
    
    int main() {
     
     DATA d1[M];
     int dimensione;
     dimensione=3;
     
      
     caricaDate(d1, dimensione); 
     printf (" INSERISCI APPUNTAMENTI  \n");
     FunzAgenda(BubbleSort(d1, dimensione), dimensione);
     
     system("pause");
     return;
     
    }
    Mi sembra che funzioni correttamente, dovete solo mettere la struct data come campo dell'altra struct PaginaAgenda
Devi accedere o registrarti per scrivere nel forum
18 risposte