Esercizio-file

di il
1 risposte

Esercizio-file

Salve a tutti,
ho realizzato un esercizio in linguaggio c, ma non capisco dove ho sbagliato.
Vi posto la traccia:

Si desidera sviluppare un programma (in linguaggio C) per assegnare i posti ai passeggeri di un aeromobile. La
mappa del posti e descritta da un ?le di testo contenente una riga per ogni ?la disponibile sull’ ` aereo. Ogni riga
rappresenta al massimo 10 posti, ognuno dei quali e indicato da un carattere alfabetico: `
• w indica un posto vicino ad un ?nestrino (window);
• a indica un posto vicino ad un corridoio (aisle);
• c indica un posto intermedio (central);
• x indica un posto inesistente (alcune ?le hanno meno posti di altre, perche di classe diversa o perch ´ e´
adiacenti a spazi dedicati ai servizi di bordo).
Se il carattere e minuscolo, il posto ` e libero, mentre se ` e maiuscolo il posto ` e occupato. Le ?le sono numerate `
da 1 a N, corrispondenti alle righe del ?le, mentre i posti sono etichettati A B C D E F G H I J, corrispondenti
all’ordine in cui sono elencati nelle righe del ?le.
Ad esempio la seguente e una possibile mappa dei posti di un ipotetico aeromobile: `
WxAAxW
WxAAxW
wcAAcw
WcAAcW
Indica che questo aeromobile e dotato di 4 ?le, le ?le 1 e 2 dispongono solo di 4 posti, mentre le altre ?le `
hanno 6 posti ciascuna. I seguenti posti sono gia occupati: ` 1A e 1F (?nestrino), 1C e 1D (corridoio), 2A e 2F
(?nestrino), 3C e 3D (corridoio), 4A e 4F (?nestrino), 4C e 4D (corridoio).
Il programma riceve come primo parametro sulla riga di comando il nome del ?le contenente la mappa dei
posti, come secondo parametro il tipo di posto da assegnare (un carattere minuscolo secondo la codi?ca indicata
sopra ed escluso il carattere x) e come terzo parametro il nome del ?le con la nuova mappa da generare dopo
l’assegnazione del posto.
Il programma deve assegnare il primo posto disponibile del tipo indicato, partendo dai posti con numerazione
inferiore, comunicare il posto assegnato in output e salvare la nuova mappa dei posti nel ?le indicato.
Se il posto richiesto non e disponibile, il programma deve segnalare la cosa in output e generare un ` a nuova
mappa identica a quella ricevuta in input.

1 Risposte

  • Re: Esercizio-file

    Questo è il codice che ho realizzato:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    
    int main(int argc,char*argv[]){
        if(argc!=4){
            printf ("Errore!");
            return -1;
        }
    
    FILE*fp=NULL;
    FILE*fr=NULL;
    char str[11];
    char let[]="ABCDEFGHIJ";
    int i,flag=1,cnt=0,pos,d;
    
    fp=fopen(argv[1],"r");
    if (fp==NULL){
        printf ("Errore");
        return -2;
    }
    
    while(fgets(str,11,fp)!=NULL && flag==1){
    
        for (i=0;i!='\0' && i<10;i++){
                 if (tolower(str[i])){
                 if(str[i]==argv[2][0]){
                     flag=0;
                     cnt++;
                     pos=i;
                     d=toupper(str[i]);
                 }
             }
             else
             flag=1;
        }
    }
    
    
    if(flag==0)
    printf ("assegnato il posto %d%c",cnt,let[pos]);
    else
    printf ("posto non disponibile");
    
    fr=fopen(argv[3],"w");
    
    if (fr==NULL){
        printf ("Errore");
        return -3;
    }
    
    while(fgets(str,11,fp)!=NULL)
        fprintf(fr,str);
    
    fclose(fp);
    fclose(fr);
    
    return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte