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

    [C]Elezione del rappresentante

    Ciao,
    devo creare un programma che svolga questo problema:
    Per l'elezione del rappresentante di classe vi sono tre candidati, A, B e C. Durante lo spoglio il programma conteggia, uno alla volta, il numero di voti ottenuti da ciascun candidato e il numero di schede nulle. Al termine dello spoglio il programma comunica il nome del vincitore e la percentuale delle schede valide sul totale.

    Io ho scritto questo programma:
    codice:
    //Elezioni dei rappresentanti
    #include <stdio.h>
    int main()
    {
        int num; //Numero totale delle schede
        int val; //Numero di schede valide
        int nul; //Numero di schede nulle
        float per; //Percentuale di schede valide
        int k; //Numero di voti per a
        int j; //Numero di voti per b
        int w; //Numero di voti per c
        char a, b, c, d; //Candidati a, b, c mentre d e\' cio\' che e\' scritto sulla scheda
        a='a';
        b='b';
        c='c';
        printf("Inserire il nome del candidato 0 per terminare:");
        do
        {
            scanf("%c", &d);
            num++;
            if(d==a)
            {
                k++;
                val++;
            }
            else
            {
                if(d==b)
                {
                    j++;
                    val++;
                }
                else
                {
                    if(d==c)
                    {
                        w++;
                        val++;
                    }
                    else
                        nul++;
                }
            }                        
        }
        while(d!=0);
        per=val*100/num;  
        if(k>j)
        {
            if(k>w)
            printf("a ha vinto le elezioni");
            else
            printf("c ha vinto le elezioni");
        }    
        else
        {
            if(j>c)
            printf("b ha vinto le elezioni");
            else
            printf("c ha vinto le elezioni");
        }
        printf("Il numero di schede totali e\' di: %d",num);
        nul=num-val;
        printf("Il numero di schede valide e\' di: %d",val);   
        printf("Il numero di schede nulle e\' di: %d",nul);
        printf("La percentuale di schede valide sul totale e\' di: %f",per);   
        printf("\n");     
        system("pause");   
        return 0;
    }
    Il problema è che rimane sempre piantato sulla printf senza mai avanzare.
    Potreste gentilmente spiegarmi dove ho sbagliato e se vi sono degli altri problemi che mi sono sfuggiti?

    Ciao e grazie mille
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Di quale printf parli?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Della prima poichè il programma rimane fermolo su quella anche se inserisco i valori.
    printf("Inserire il nome del candidato 0 per terminare:");
    quando io scrivo i valori il programma non avanza.

    P.S. Dite che c'è un problema nel do while?
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In effetti

    while(d!=0);

    a cosa serve?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Volevo far in modo tale che quando l'utente inserisce lo zero vuol dire che sono finite le schede da contare e che si può proseguire col vedere quale candidato a vinto le elezioni.
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dopo la scanf va inserito il ciclo

    while(getchar()!='\n');

    per pulire il buffer di tastiera e il controllo va fatto con un carattere non con il numero 0

    while(d!='0');
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Io non l'ho mai fatto quindi neanche dove iniziare, se per te non è un problema potresti farmi vedere dove e come devo farlo.

    Ciao e grazie mille
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma di cosa parli? T'ho mostrato cosa fare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ho cecato di fare ciò che tu mi hai consigliato però non sò se è giusto.
    codice:
    //Elezioni dei rappresentanti
    #include <stdio.h>
    int main()
    {
        int num; //Numero totale delle schede
        int val; //Numero di schede valide
        int nul; //Numero di schede nulle
        float per; //Percentuale di schede valide
        int k; //Numero di voti per a
        int j; //Numero di voti per b
        int w; //Numero di voti per c
        char a, b, c, d; //Candidati a, b, c mentre d e\' cio\' che e\' scritto sulla scheda
        a='a';
        b='b';
        c='c';
        printf("Inserire il nome del candidato 0 per terminare:");
        do
        {
            scanf("%c", &d);
         while(getchar()!='\n'); //Serve per pulire il buffer di tastiera
         {
            num++;
            if(d==a)
            {
                k++;
                val++;
            }
            else
            {
                if(d==b)
                {
                    j++;
                    val++;
                }
                else
                {
                    if(d==c)
                    {
                        w++;
                        val++;
                    }
                    else
                        nul++;
                }
            }                        
         }
        }
        
        while(d!='0');
        per=val*100/num;  
        if(k>j)
        {
            if(k>w)
            printf("\n\na ha vinto le elezioni");
            else
            printf("\n\nc ha vinto le elezioni");
        }    
        else
        {
            if(j>c)
            printf("\n\nb ha vinto le elezioni");
            else
            printf("\n\nc ha vinto le elezioni");
        }
        printf("\n\nIl numero di schede totali e\' di: %d",num);
        nul=num-val;
        printf("\n\nIl numero di schede valide e\' di: %d",val);   
        printf("\n\nIl numero di schede nulle e\' di: %d",nul);
        printf("\n\nLa percentuale di schede valide sul totale e\' di: %f",per);   
        printf("\n\n");     
        system("pause");   
        return 0;
    }
    Ma è giusto o sbagliato visto che non sapevo bene cosa fare?

    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Le parti che ti ho detto di inserire vanno bene, ma ne devi rivedere altre ...

    Compila, esegui e controlla, no?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.