Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Anche io ho provato per curiosità e funziona perfettamente!
    DR

  2. #12
    Sono quasi riuscito a fare tutto il programma, mi sono ritrovato un sacco di variabili e cicli !A breve lo posto così se qualcuno ha voglia di darci un'occhiata e suggerirmi se c'era un modo più veloce mi fa un grande favore!Grazie

  3. #13
    eccolo qua tutto il programma, dovrebbe esserci tutto quello che chiede il testo

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAX 100
    
    struct dati
    {
        char codice[4];
        int portata;
    };
    typedef struct dati codiceautocarro;
    
    int scelta_autocarro(int peso, int cont,codiceautocarro c[MAX]);
    int due_autocarri(int sped,int z,codiceautocarro d[MAX]);
    
    int main()
    {
        FILE *autocarri;
        int pesospedizione=0,i=0,flag=0;
        codiceautocarro a[MAX];
    
        autocarri=fopen("trasporti.txt","r");
        if(autocarri==NULL)
        {
            printf("\n\nErrore nell'apertura del file\n\n");
            exit(1);
        }
    
        fscanf(autocarri,"%s %d", a[i].codice, &a[i].portata);
        i++;
        while(!feof(autocarri) && i<100)
        {
            fscanf(autocarri,"%s %d", a[i].codice, &a[i].portata);
            i++;
        }
    
        printf("Sono stati letti %d autocarri\n",i);
        fclose(autocarri);
    
        while(i<=MAX && flag!=3)
        {
            printf("\nInserire il peso della prossima spedizione da effettuare >");
            scanf("%d",&pesospedizione);
    
            flag=scelta_autocarro(pesospedizione,i,a);
        }
    
    return 0;
    }
    
    int scelta_autocarro(int peso, int cont,codiceautocarro c[MAX])
    {
        int j=0,k=0,minimo=0,x=0,l=0;
    
    
        minimo=c[0].portata;
    
        for(j=0;j<cont;j++)
        {
            if(c[j].portata>=peso)
            {
                if(c[j].portata<=minimo)
                {
                    l++;
                    minimo=c[j].portata;
                    k=j;
                }
            }
        }
        if(l!=0)
        {
            strcpy(c[k+1].codice,c[k].codice);
            c[k].portata=c[k+1].portata;
            k++;
            printf("\n\nAutocarro utilizzato per la spedizione > %s\n\n",c[k].codice);
        }
        else
           x=due_autocarri(peso,cont,c);
    return x;
    }
    
    int due_autocarri(int sped,int z,codiceautocarro d[MAX])
    {
        int flg=0,g=0,t=0,y=0,min=0,u=0,p=0;
    
        min=(d[0].portata+d[1].portata);
    
        for(g=0;g<z;g++)
        {
            for(t=0;t<z;t++)
            {
                if(t!=g)
                {
                if((d[g].portata+d[t].portata)>=sped)
                {
                    y++;
                    if((d[g].portata+d[t].portata)<=min)
                    {
                         min=(d[g].portata+d[t].portata);
                         u=g;
                         p=t;
                    }
                }
                }
            }
        }
        if(y==0)
        {
           flg=3;
           printf("\n\nLa spedizione non puo essere effettuata\n\n");
        }
        else
        {
            
            //Serve per eliminare il codice dell'autocarro già utilizzato....ma non funziona!
            strcpy(d[u+1].codice,d[u].codice);
            d[u].portata=d[u+1].portata;
            u++;
            strcpy(d[p+1].codice,d[p].codice);
            d[p].portata=d[p+1].portata;
            p++;
            
            
            printf("\n\nAutocarri utilizzati per la spedizione: %s %s\n\n",d[u].codice,d[p].codice);
        }
    
    return flg;
    }
    Unico problema, ho messo un commento, non riesco a eliminare nella seconda funzione, gli autocarri già utilizzati....qualcuno ha qualche idea?

  4. #14
    Non riesco proprio a fare in modo che quando il file stampa un codice dell'autocarro poi lo elimini....qualcuno mi saprebbe spiegare come si fa?Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.