Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C] Valutazione programmi

    Buona sera a tutti. Ho letto il regolamento della sezione e non mi pare fosse contrario alla valutazione di un programma, in caso non avessi capito correttamente chiedo scusa in anticipo.

    Ho fatto due programmi seguendo questi due testi (http://elite.polito.it/files/courses...0Turno%20A.pdf e http://areeweb.polito.it/didattica/f...0705_tCc2.docx)

    Non sono riuscito a valutare da solo se funzionano perchè ho problemi a creare e aprire i file. Mi piacerebbe un vostro parere, se secondo voi sono corretti o ci sono errori. Ho l'esame la prossima settimana percui sto programmando come un pazzo, ma non vorrei fare errori e non accorgermene!

    Grazie in anticipo!

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 30
    
    int main()
    {
        FILE* fp;
        int mappa[N][N];
        char a_perdere;
        int i=0, j=0;
        int x1, x2, y1, y2;
        int max_altezza=0, min_altezza=0;
        int n_dati=0;
        int n_mare=0, n_terra=0, n_pianura=0, n_collina=0, n_montagna=0;
        float perc_mare, perc_pianura, perc_collina, perc_montagna;
    
        fp=fopen(mappa.dat, "r");
        if(fp==NULL)
        {
            printf("error1");
            return -1;
        }
        for(i=0; i<N; i++)
        {
            fscanf(fp,"%d", &mappa[i][0]);
            n_dati++;
            for(j=1; j<N; j++)
            {
                fscanf(fp, "%c%d", &a_perdere,&mappa[i][j]);
                n_dati++;
            }
        }
        if(n_dati!=(N*N))
        {
            printf("errore nel formato del file");
            return-4;
        }
    
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                if(mappa[i][j]>3000||mappa[i][j]<3000)
                {
                    printf("errore nel formato del file");
                    return-3;
                }
            }
        }
    
        printf("Inserire le coordinate x1, y1, x2, y2 della porzione di mappa da esaminare\n");
        printf("x1 deve essere minore di x2 e y1 minore di y2");
    
        scanf("%d%d%d%d", &x1,&y1,&x2,&y2);
        if(x1>x2||y1>y2)
        {
            printf("error2");
            return -2;
        }
    
        min_altezza=mappa[x1][y1];
        for(i=x1; i<x2; i++)
        {
            for(j=y1; j<y2; j++)
            {
                if(mappa[i][j]>max_altezza)
                    max_altezza=mappa[i][j];
    
                if(mappa[i][j]>0&&mappa[i][j]<min_altezza)
                    min_altezza=mappa[i][j];
    
                if(mappa[i][j]==0)
                    n_mare++;
                else n_terra++;
            }
        }
        perc_mare=(n_mare/(n_mare+n_terra))*100;
    
        for(i=x1; i<x2; i++)
        {
            for(j=y1; j<y2; j++)
            {
                if(mappa[i][j]>0&&mappa[i][j]<200)
                    n_pianura++;
                else n_terra++;
            }
        }
        perc_pianura=(n_pianura/(n_pianura+n_terra))*100;
    
        for(i=x1; i<x2; i++)
        {
            for(j=y1; j<y2; j++)
            {
                if(mappa[i][j]>=200&&mappa[i][j]<=600)
                    n_collina++;
                else n_terra++;
            }
        }
        perc_collina=(n_collina/(n_collina+n_terra))*100;
    
        for(i=x1; i<x2; i++)
        {
            for(j=y1; j<y2; j++)
            {
                if(mappa[i][j]>600)
                    n_montagna++;
                else n_terra++;
            }
        }
        perc_montagna=(n_montagna/(n_montagna+n_terra))*100;
        printf("Altitudine massima: %d\nAltitudine minima: %d\nMare: %.2f%%\nPianura: %.2f%%\nCollina: %.2f%%\nMontagna:%.2f%%", max_altezza,min_altezza,perc_mare,perc_pianura,perc_collina,perc_montagna);
    
        return 0;
    }
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define filter "filter.txt"
    
    int main(int argc, char*argv[])
    {
        typedef struct cad
        {
            char nome[36];
            char cognome[36];
            char R[50];
        } a;
    
        typedef struct filt
        {
            int num_prova;
            char ris;
        } fil;
    
        FILE*fp;
        FILE*fp2;
        int k=0, i=0, j=0;
        a cadetto[k];
        char* a_perdere;
        int n_filtri=0;
        fil filtro[n_filtri];
        int risultato[k];
        int falliti[i];
    
        if(argc!=2)
        {
            printf("error1");
            return-1;
        }
        fp=fopen(argv[1], "r");
        if(fp==NULL)
        {
            printf("error2");
            return-2;
        }
        while(!feof(fp))
        {
            k++;
            fscanf(fp,"%s%s", &cadetto[k-1].nome,&cadetto[k-1].cognome);
            for(i=0; i<50; i++)
                fscanf(fp,"%c%c", &a_perdere,&cadetto[k-1].R[i]);
        }
        fp2=fopen(filter, "r");
        if(fp2==NULL)
        {
            printf("error3");
            return-3;
        }
        while(!feof(fp2))
        {
            n_filtri++;
            fscanf(fp2,"%d%c", filtro[n_filtri-1].num_prova, filtro[n_filtri-1].ris);
    
        }
        fclose(fp2);
    
        for(i=0; i<n_filtri; i++)
        {
            for(j=0; j<k; j++)
            {
                if(cadetto[j].R[filtro[i].num_prova]==filtro[i].ris);
                risultato[j]++;
            }
        }
        j=0;
        for(i=0; i<k; i++)
        {
            if(risultato[i]=0)
            {
                j++;
                falliti[j-1]=i;
            }
        }
        printf("I cadetti che non hanno superato nessun test sono %d\n", j);
        printf("essi sono:\n");
        for(k=0; k<j; k++)
            printf("cadetto %s %s\n",cadetto[falliti[k]].nome, cadetto[falliti[k]].cognome);
    
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Che vuol dire "hai problemi a creare i file" ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Non riesco ad aprirli da linea di comando.. Non so se sono io babbo a usare la linea di comando o creo i file in maniera sbagliata!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non capisco ... il file lo crei con notepad ...

    Ma poi, scusa, l'hai compilato? Hai degli errori di compilazione? Dobbiamo farlo noi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Tutto compilato, non mi da errori di compilazione! solo che quando provo ad aprire da linea di comando l'exe e il file non succede niente.. e quindi non riesco a capire se sbaglio io qualcosa ad aprirlo o se ci sono errori nel codice

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Il primo programma non può essere compilato con questa linea

    fp=fopen(mappa.dat, "r");

    in quanto mancano gli apici

    fp=fopen("mappa.dat", "r");


    Quindi devi avere degli errori in compilazione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Vero, in effetti è l'unico errore di compilazione, me n'ero dimenticato ma credevo fosse per il tipo di formato, ho capito ora che l'unico motivo erano gli apici
    Grazie

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Nell'altro codice esiste un errore nell'ultima if (non di compilazione) in cui utilizzi = invece di ==
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Interessante, questo il compilatore non me l'aveva segnalato! Non riesco comunque ad aprire i file, quindi inizio a pensare di stare sbagliando qualcosa da linea di comando io! Adesso cerco una guida al riguardo!
    A livello di algoritmo ti sembrano sensati? (grazie mille comunque! )

  10. #10
    Originariamente inviato da wFree
    Interessante, questo il compilatore non me l'aveva segnalato!
    Perché un assegnamento in un if è legale, anche se normalmente è un errore di battitura. Per evitare questi problemi attiva i warning del tuo compilatore, che ti segnaleranno questa e altre situazioni di "potenziale errore".
    Non riesco comunque ad aprire i file
    Dopo N post ancora non si è capito cosa intendi dire... su che sistema operativo stai lavorando? Cosa intendi per "non riesco ad aprire i file"? Ottieni errori? Il programma che usi per aprirli li mostra vuoti? Altro ancora?
    Amaro C++, il gusto pieno dell'undefined behavior.

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.