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

    [C]Aiuto urgente! Problema struct

    codice:
    /*            
    Usare le Struct; 
    2 Struct: Alunni,Data
    Usare le funzioni: Inserimento,Modifica data e per cognome,Stampa,Ordinamento,Ricerca per data e per cognome
    */
    #include <stdio.h>
    #define MAX 100
    
    
    typedef struct{
      char cognome [30];
      char nome    [30];
      float media;
      int giorno;
      int mese;
      int anno;
     }studente;
     
    
          
    // prototipi di funzione
    int selezione(int sel);
    void inserimento(studente vettstud[],int x);
    void stampa(studente vettstud[],int size);
    
    //il programma inizia dalla funzione main
    int main()
    {int sel,scelta,decisione,x,contr,size,i;
     contr=0;
      
       studente vettstudenti[100];
       printf("*** Benvenuto nel programma ***\n\n");
       printf("Inserisci il numero di studenti da prendere in considerazione(MAX 100) :");
       scanf("%d",&size);
        
        if(size > 100)
         { 
          while(size > 100)
           {printf("\n\nInserisci il numero di studenti da prendere in considerazione (MAX 100) :");
            scanf("%d",&size);
           }    
         }
         
       sel=selezione(scelta);
       
       while(contr==0)
        {
       
       switch (sel)
            {
                 case 1:
                        printf("\n\nQuanti studenti vuoi inserire? :");
                        scanf("%d",&x);
                        inserimento(vettstudenti,x);
                        break;
                 
                 case 2:
                        printf("\n\n*** Stampo gli studenti ***");
                        stampa(vettstudenti,size);
                        break;
                 
                 
                 case 6:
                        printf("Esco...");
                        contr=1;
                        break;
                 
                default:
                        printf("\nAttenzione! Valore inserito errato!\n");
                        break;    
             }
     sel=selezione(scelta);
          }
        
        system("CLS");
        system("PAUSE");
        //fine del programma
    }
    
    
    int selezione(int sel)
    {
        printf("\nProgramma studenti\n\n");
        printf("[1].Inserimento studenti\n[2].Stampa studenti\n[3].Ordinamento studenti\n[4].Modifica per data o cognome\n[5].Ricerca per data o per data o per congnome\n[6].Esci dal programma\n\nInserisci la tua scelta :");
        scanf("%d",&sel);
        return sel;
    }
    
    void inserimento(studente vettstud[],int x)
    {  int i;
         for(i=0;i<x;i++)
            { 
             printf("\nInserisci il cognome del %d studente :",i+1);
             scanf("%s",&vettstud[i].cognome);
             fflush(stdin);
             printf("\nInserisci il nome del %d studente :",i+1);
             scanf("%s",&vettstud[i].nome);
             fflush(stdin);
             printf("\nInserisci la data di nascita (gg-mm-aaaa) :");
             scanf("%d-%d-%d",&vettstud[i].giorno,&vettstud[i].mese,&vettstud[i].anno);
             printf("\nInserisci la media del %d studente:",i+1);
             scanf("%f",&vettstud[i].media);
             printf("\n**********\n");
            }   
       printf("\n\nInserimento completato! \n\n");    
       printf("%d",&vettstud[0].giorno);
    }
    
    void stampa(studente vettstud[],int size)
    { int i;
      i=0;
       printf("\n\tCognome\t\tNome\t\tData di nascita\t\tMedia\n");
      for(i=0;i<size;i++)
      { 
       printf("\n\t%s",&vettstud[i].cognome);
       printf("\t\t\%s",&vettstud[i].nome); 
       printf("\t\t\%d-%d-%d",&vettstud[i].giorno,&vettstud[i].mese,&vettstud[i].anno);
      }
     printf("\n\n***Stampa completata!***\n\n");
    }
    L'esercizio non è completo....perchè quando vado ad eseguirlo la data mi risulta sporca e non mi è possibile scrivere?
    Grazie a tutti anticipatamente

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dovresti fornire qualche indicazione in più sul malfunzionamento ... non è chiaro quello che vorresti, nè quello che succede ...

    P.S. Non c'è nulla di *urgente* nel forum ... non inserire questa richiesta nel titolo ... potresti anche ottenere l'effetto contrario ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perché il buffer di lettura è sporco, quindi prima di leggere il carattere successivo dovresti pulirlo
    RTFM Read That F*** Manual!!!

  4. #4
    Originariamente inviato da valia
    perché il buffer di lettura è sporco, quindi prima di leggere il carattere successivo dovresti pulirlo
    Lo pulisco con

    codice:
    fflush(stdin);
    Come mai non funge?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perché il carattere invio è letto dalla successiva scanf, quindi 3 elementi in riga fanno in modo che non leggi bene il carattere, devi separare la lettura della data in 3 istruzioni
    RTFM Read That F*** Manual!!!

  6. #6
    Originariamente inviato da valia
    perché il carattere invio è letto dalla successiva scanf, quindi 3 elementi in riga fanno in modo che non leggi bene il carattere, devi separare la lettura della data in 3 istruzioni
    Ho già provato. Non funziona purtroppo.

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.