Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Esercizio su struct

    Programma che permette di inserire un certo numero di offerte di fornitori:
    - codice fornitore (numero naturale)
    -Nome fornitore (array di carattere )
    - importo offerta in euro (numero float)
    Il programma cerca e visualizza l’offerta migliore (la più economica)

    Il programma è piuttosto semplice e compila ma al momento dell'esecuzione va in crash. Vi premetto che il mio prof. di info ha spiegato le struct abbastanza maluccio e molto probabilmente sbaglio in qualcosa a livello concettuale.

    Questo è il codice che ho pensato:

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #define MAX 100
    
    struct offerta{
           int Codice_fornitore;
           char Nome_fornitore[MAX];
           float Importo;
           };
    
    void main()
    {
         int i=0,j,ind;
         float miglioreoff;
         int scelta;
         struct offerta Off[MAX];
         do{
                fflush(stdin);
                printf("Vuoi inserire un offerta? SI=1   NO=2\n");
                scanf("%d",&scelta);
                if(scelta==1)
                {
                printf("Inserisci codice fornitore: ");
                fflush(stdin);
                scanf("%d",&Off[i].Codice_fornitore);
                printf("Inserisci nome fornitore: ");
                fflush(stdin);
                scanf("%s",Off[i].Nome_fornitore);
                printf("Inserisci importo: ");
                fflush(stdin);
                scanf("%f",&Off[i].Importo);
                i++;
                }
                
         }while(scelta == 1);
         for(j=1;j<i;j++)
         {
           miglioreoff=Off[0].Importo;
           if( Off[j].Importo> miglioreoff)
           
             Off[j].Importo=miglioreoff;
             ind=j;
             }
           printf("Migliore offerta: %d della azienda %s",miglioreoff,Off[ind].Nome_fornitore);
    system("pause");
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    if( Off[j].Importo> miglioreoff)
    Se questo if non si verifica mai ind sarà un valore indefinito perchè non l'hai mai inizializzato -> crash.
    Comunque non ho ben capito l'ultimo codice:
    codice:
    for(j=1;j<i;j++)
      {
        miglioreoff=Off[0].Importo;
        if( Off[j].Importo> miglioreoff)
          Off[j].Importo=miglioreoff;
        ind=j;
      }
    Non sembra che tu voglia stampare la migliore offerta, ma settare man mano che passi i valori a migliore offerta, inoltre miglioreoff sarà sempre uguale a Off[0].Importo in quanto lo risetti ad ogni ciclo.

    codice:
    miglioreoff=Off[0].Importo;
    ind = 0;
    for(j=1;j<i;j++)
      {
        if( Off[j].Importo < miglioreoff)
          miglioreoff=Off[j].Importo;
        ind=j;
      }
    Questo mi sembra più corretto, tuttavia c'è ancora un problema: se non vengono inserite offerte l'ultimo printf genererà un errore, ma questo lo lascio risolvere a te
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.