Ordinamento linguaggio c

di il
18 risposte

Ordinamento linguaggio c

Ragazzi qualcuno sa come ordinare questo programma?

#include <stdio.h>
#include <stdlib.h>

typedef char mese[20];
typedef struct {
 int minuto;
 int ora;
 int giorno;
 mese month;
 int anno;
 } data;

typedef struct {
int n_pagina;
char testo[30];
}PaginaAgenda;


void funzione_tempo(){
mese mesi[12] = {"Gennaio", "Febbraio", "Marzo",
"Aprile", "Maggio","Giugno",
"Luglio","Agosto","Settembre",
"Ottobre","Novembre", "Dicembre"};	
int i, currM, currMonthDays;
data input;	
printf("Inserire la data (formato dd/h:m/mm/yyyy): ");
scanf(" %2d/%2d:%2d/%2d/%4d",&input.giorno,&input.ora,&input.minuto,&currM, &input.anno);
// CASO 30 gg
if(currM == 4 || currM == 6 || currM == 9 || currM == 11)
currMonthDays = 30;
// CASO 31 gg
else if(currM != 2)
currMonthDays = 31;
// CASO FEBBRAIO ANNO BISESTILE
else if((input.anno % 4 == 0 && input.anno % 100 != 0) || input.anno % 400 == 0)
currMonthDays = 29;
// CASO FEBBRAIO NON BISESTILE
else
currMonthDays = 28;
strcpy(input.month, mesi[currM-1]);
printf("\n\nData immessa: \n\tGiorno:  %d\n\tOra: %d\n\tMinuto: %d\n\tMese: %s\n\tAnno: %d\n\n",input.giorno,
input.ora,input.minuto,input.month,input.anno);	
}




void funzione_agenda(){
int n=3; int premi=1;
PaginaAgenda Agenda[n]; // Agenda per 1 mese
int i=0; char text[30];
//Lettura appuntamenti.
Agenda[i].n_pagina=(i+1);
printf("Inserisci l'appuntamento per il giorno %d: ", (i+1));
scanf("%s",text);
strcpy(Agenda[i].testo,text);
//Stampo agenda.
printf("\nVisualizzo l'agenda\n");
printf("\nPagina %d \n", Agenda[i].n_pagina);
printf("Appuntamento %s \n", Agenda[i].testo);
}



int main(){
int agendadipagine=3;
int k;

for(k=0;k<agendadipagine;k++){
funzione_tempo();
funzione_agenda();
}






	return 0;
}

18 Risposte

  • Re: Ordinamento linguaggio c

    Si, certamente
  • Re: Ordinamento linguaggio c

    Devi ordinare il programma?
  • Re: Ordinamento linguaggio c

    Si
  • Re: Ordinamento linguaggio c

    E' possibile ordinare questo programma? Anche per ora? E se si quale algoritmo dovrei usare?
  • Re: Ordinamento linguaggio c

    Sì ma in italiano che vuol dire?
    Devi ordinare l'agenda degli appuntamenti per data e ora?
  • Re: Ordinamento linguaggio c

    oregon ha scritto:


    Devi ordinare il programma?
    Nel senso di ordinarlo su Amazon?
  • Re: Ordinamento linguaggio c

    Puoi indentare meglio il codice cortesemente?
    Seconda cosa, prima di postare codice, dovresti descrivere quello che dovrebbe fare il codice in esecuzione.
  • Re: Ordinamento linguaggio c

    Allora l'esercizio è questo:
    Scrivere un programma che sia in grado di gestire l'agenda di uno studente. Ogni appuntamento
    indica l'ora e una breve descrizione dello stesso. Possono esserci piu' appuntamenti nello stesso
    giorno. L’utente immette gli appuntamenti tramite tastiera.
    Gli impegni in agenda possono essere immessi in modo disordinato (ad esempio e’ possibile
    immettere l’impegno per giovedi’ 20 e successivamente l’impegno per lunedi’ 4) ma l’agenda deve
    stampare a video gli impegni in ordine di data e di ora.
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef char mese[20];
    typedef struct {
     int minuto;
     int ora;
     int giorno;
     mese month;
     int anno;
     } data;
     
    typedef struct {
    int n_pagina;
    char testo[30];
    }PaginaAgenda;
     
     
    mese mesi[12] = {"Gennaio", "Febbraio", "Marzo",
    "Aprile", "Maggio","Giugno",
    "Luglio","Agosto","Settembre",
    "Ottobre","Novembre", "Dicembre"}; 
    data input;
     
     
     
     
    void funzione_tempo(){
    int i, currM, currMonthDays;
    printf("Inserire la data (formato dd/h:m/mm/yyyy): ");
    scanf(" %2d/%2d:%2d/%2d/%4d",&input.giorno,&input.ora,&input.minuto,&currM, &input.anno);
    // CASO 30 gg
    if(currM == 4 || currM == 6 || currM == 9 || currM == 11)
    currMonthDays = 30;
    // CASO 31 gg
    else if(currM != 2)
    currMonthDays = 31;
    // CASO FEBBRAIO ANNO BISESTILE
    else if((input.anno % 4 == 0 && input.anno % 100 != 0) || input.anno % 400 == 0)
    currMonthDays = 29;
    // CASO FEBBRAIO NON BISESTILE
    else
    currMonthDays = 28;
    strcpy(input.month, mesi[currM-1]);
    printf("\n\nData immessa: \n\tGiorno:  %d\n\tOra: %d\n\tMinuto: %d\n\tMese: %s\n\tAnno: %d\n\n",input.giorno,
    input.ora,input.minuto,input.month,input.anno);
    }
     
     
     
     
    void funzione_agenda(){
    int a;
    PaginaAgenda Agenda[a]; // Agenda per 1 mese
    char text[30];
    //Lettura appuntamenti.
    Agenda[a].n_pagina=(a);
    printf("Inserisci l'appuntamento per il giorno %d: ", (a));
    scanf("%s",text);
    strcpy(Agenda[a].testo,text);
    //Stampo agenda.
    printf("\nVisualizzo l'agenda\n");
    printf("\nPagina %d \n", Agenda[a].n_pagina);
    printf("Appuntamento: %s \n data: Giorno:%d\t Ora:%d\t Minuto:%d\t Mese:%s\t Anno:%d\t\n", Agenda[a].testo,input.giorno,
    input.ora,input.minuto,input.month,input.anno);
    }
     
    //algoritmo di ordinamento.
     
     
     
     
    int main(){
    int agendadipagine=3;
    int k;
     
    for(k=0;k<agendadipagine;k++){
    funzione_tempo();
    funzione_agenda();
    }
        return 0;
    }
  • Re: Ordinamento linguaggio c

    Ora dovrei ordinare per data gli appuntamenti
  • Re: Ordinamento linguaggio c

    Ok ora va meglio, anche se non è indentato. Comunque il codice è sbagliato, non c'è logica. Eseguilo tu a matita e vedi cosa ti esce.

    Un consiglio avanzato per la gestione dei mesi, esiste un tipo Enum in C.
  • Re: Ordinamento linguaggio c

    Quindi devo riscrivere tutto il codice?
  • Re: Ordinamento linguaggio c

    Andiamo per passi. Funzione_tempo cosa dovrebbe fare? fa quello che pensi? testa sul foglio o a mente.
  • Re: Ordinamento linguaggio c

    Devi separare il problema in due parti.

    La prima parte consiste nell'assegnare un numero intero univoco a una data e ora, ad esempio il numero di minuti passati dall'inizio dell'anno 2000, di modo che questi interi assegnati rispettino l'ordinamento cronologico delle date. Ci sono molte formule possibili, se vuoi usare qualcosa di standard c'è la funzione time() in time.h, che ti dà il numero di secondi passati dall'inizio del 1970 (se non ricordo male). Io però proverei a scrivere una formula da solo.

    La seconda parte consiste nell'ordinare questi interi univocamente assegnati alle date. Ci sono tantissimi algoritmi di sort, solitamente si inizia con il Bubble Sort. Il forum è strapieno di esempi a riguardo. Anche qui lo standard mette a disposizione qsort() in stdlib.h, ma è sempre meglio fare da zero quando si impara
  • Re: Ordinamento linguaggio c

    Ok grazie ora riscrivo e cerco di usare i vostri consigli e riposto il codice
Devi accedere o registrarti per scrivere nel forum
18 risposte