Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    113

    [C] problema di ordinamento

    Ciao , ho fatto questo programma ma ho qualche problema nell'ultima fase di ordinamento:
    codice:
    
    #include <stdio.h>
    #define n 100
    
    struct prenotazione{
        struct cog_nome{
            char cognome[15];
            char nome[15];
        }cog;
        int giorno;
        char mese[10];
        int stanza;
        int notti;
    }preno[n], pre[n];
    
    int main()
    {
        int i, j, k, v, y, app;
        char buffer[15];
    
        FILE *cfPtr;
    
        if ((cfPtr = fopen("clienti.dat", "w")) == NULL ) {
            printf("Il file non può essere aperto.\n");
        } else {
            i = 0;
            printf("Inserisci cognome, nome, giorno e mese di inizio permanenza, nmero stanza e numero notti : \n");
            printf("Inserisci EOF per terminare\n");
            scanf(" %s%s%d%s%d%d\n", preno[i].cog.cognome, preno[i].cog.nome, &preno[i].giorno, preno[i].mese, &preno[i].stanza, &preno[i].notti);
            fprintf(cfPtr, "%35s", "PRENOTAZIONI\n\n");
            fprintf(cfPtr, "%10s %10s %10s %10s %8s %7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
            fprintf(cfPtr, "%10s %10s %10d %10s %8d %6d\n", preno[i].cog.cognome, preno[i].cog.nome, preno[i].giorno, preno[i].mese, preno[i].stanza, preno[i].notti);
            while (!feof(stdin)) {
                i++;
                scanf(" %s%s%d%s%d%d\n", preno[i].cog.cognome, preno[i].cog.nome, &preno[i].giorno, preno[i].mese, &preno[i].stanza, &preno[i].notti);
                fprintf(cfPtr, "%10s %10s %10d %10s %8d %6d\n", preno[i].cog.cognome, preno[i].cog.nome, preno[i].giorno, preno[i].mese, preno[i].stanza, preno[i].notti);
            }
            fclose(cfPtr);
        }
    
        printf("%d", i);
    
        printf("\n\n");
        printf("%35s", "PRENOTAZIONI\n\n");
        printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
        for ( j = 0; j <= i; j++ ) {
            printf("%10s%10s%10d%10s%8d%6d\n", preno[j].cog.cognome, preno[j].cog.nome, preno[j].giorno, preno[j].mese, preno[j].stanza, preno[j].notti);
    
        }
    
        j = 0;
        for ( k = 0; k <= i; k++ ) {
            if ( preno[k].stanza == 12 && strcmp(preno[k].mese, "aprile") == 0) {
                    strcpy(pre[j].cog.cognome, preno[k].cog.cognome);
                    strcpy(pre[j].cog.nome, preno[k].cog.nome);
                    pre[j].giorno = preno[k].giorno;
                    strcpy(pre[j].mese, preno[k].mese);
                    pre[j].stanza = preno[k].stanza;
                    pre[j].notti = preno[k].notti;
                    j++;
            }
        }
    
        y = i;
    
        printf("\n\n");
        printf("%38s", "PRENOTAZIONI APRILE DELLA STANZA 12\n\n");
        printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
        for ( i = 0; i < j; i++ ) {
            printf("%10s%10s%10d%10s%8d%6d\n", pre[i].cog.cognome, pre[i].cog.nome, pre[i].giorno, pre[i].mese, pre[i].stanza, pre[i].notti);
    
        }
    
    
        for ( k = 0; k < y; k++ ) {
            for ( j = k + 1; j <= y; j++ ) {
                if ( preno[k].stanza == 12 && strcmp(preno[k].mese, "aprile") == 0 && preno[j].stanza == 12 && strcmp(preno[j].mese, "aprile") == 0) {
                    if ( preno[k].giorno > preno[j].giorno) {
                        strcpy(buffer, preno[k].cog.cognome);
                        strcpy(preno[k].cog.cognome, preno[j].cog.cognome);
                        strcpy(preno[j].cog.cognome, buffer);
                        strcpy(buffer, preno[k].cog.nome);
                        strcpy(preno[k].cog.nome, preno[j].cog.nome);
                        strcpy(preno[j].cog.nome, buffer);
                        app = preno[k].giorno;
                        preno[k].giorno = preno[j].giorno;
                        preno[j].giorno = app;
                        strcpy(buffer, preno[k].mese);
                        strcpy(preno[k].mese, preno[j].mese);
                        strcpy(preno[j].mese, buffer);
                        app = preno[k].stanza;
                        preno[k].stanza = preno[j].stanza;
                        preno[j].stanza = app;
                        app = preno[k].notti;
                        preno[k].notti = preno[j].notti;
                        preno[j].notti = app;
                    }
                }
            }
    
        }
    
        printf("\n\n");
        printf("%50s", "PRENOTAZIONI DELLA STANZA 12 NEL MESE DI APRILE IN ORDINE CRESCENTE DI DATA\n\n");
        printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
        for ( k = 0; k <= y; k++ ) {
            printf("%10s%10s%10d%10s%8d%6d\n", preno[k].cog.cognome, preno[k].cog.nome, preno[k].giorno, preno[k].mese, preno[k].stanza, preno[k].notti);
    
        }
    
     return 0;
    }
    precisamente in questa parte
    codice:
     for ( k = 0; k < y; k++ ) {
            for ( j = k + 1; j <= y; j++ ) {
                 if ( preno[k].stanza == 12 && strcmp(preno[k].mese, "aprile")  == 0 && preno[j].stanza == 12 && strcmp(preno[j].mese,  "aprile") == 0) {
                    if ( preno[k].giorno > preno[j].giorno) {
                        strcpy(buffer, preno[k].cog.cognome);
                        strcpy(preno[k].cog.cognome, preno[j].cog.cognome);
                        strcpy(preno[j].cog.cognome, buffer);
                        strcpy(buffer, preno[k].cog.nome);
                        strcpy(preno[k].cog.nome, preno[j].cog.nome);
                        strcpy(preno[j].cog.nome, buffer);
                        app = preno[k].giorno;
                        preno[k].giorno = preno[j].giorno;
                        preno[j].giorno = app;
                        strcpy(buffer, preno[k].mese);
                        strcpy(preno[k].mese, preno[j].mese);
                        strcpy(preno[j].mese, buffer);
                        app = preno[k].stanza;
                        preno[k].stanza = preno[j].stanza;
                        preno[j].stanza = app;
                        app = preno[k].notti;
                        preno[k].notti = preno[j].notti;
                        preno[j].notti = app;
                    }
                }
            }
    
        }
    
        printf("\n\n");
        printf("%50s", "PRENOTAZIONI DELLA STANZA 12 NEL MESE DI APRILE IN ORDINE CRESCENTE DI DATA\n\n");
        printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
        for ( k = 0; k <= y; k++ ) {
             printf("%10s%10s%10d%10s%8d%6d\n", preno[k].cog.cognome,  preno[k].cog.nome, preno[k].giorno, preno[k].mese, preno[k].stanza,  preno[k].notti);
    
        }
    non capisco non mi esegue le condizioni e non mi metta in ordine di giorno..

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    113
    Risolto!

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.