Quiz semplice in c++

di il
8 risposte

Quiz semplice in c++

Buonasera, sono un principiante nel c++ (ho iniziato da poco) e sto provando a fare un programma che chieda la popolazione di uno stato e a seconda della risposta che assegni ti da un punteggio, il problema è che non mi dice il punteggio finale..

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>


HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);



void fai_domanda(int);
main()
{
int n;

printf("QUIZ:5 PUNTI PER RISPOSTA ESATTA,3 PUNTI PER andarci vicino ,0 PUNTI RISPOSTA ERRATA\n");
fai_domanda(n);
system("pause");
}
void fai_domanda(int n)
{
int h=1,somma=0,d,y,r=0;

for(h=0;h<3;h++)

{

printf("Italia");

printf("RISPOSTA NUMERO: " ,&d);
scanf("%d",&y);
if(d>55000000 or d<65000000); {
somma=r+5; }
if(d>50000000 or d<55000000); {
somma=r+3; }
if(d>65000000 or d<70000000); {
somma=r+3; }
if(d<50000000 or d>70000000); {
somma=r+0; }

printf("I punti totali sono:" ,"%somma", &somma );
scanf("%somma");


} }

8 Risposte

  • Re: Quiz semplice in c++

    Devi leggere un libro di testo per apprendere le basi.

    Quanto vale n del main() quando chiami fai_domanda(n)? Il main() non ha un return value? Gli handle servono ai principianti? Dentro fai_domanda() perché h la inizializzi a 1 per poi rimetterla a 0? La n invece dove la usi? Or come si scrive in C? Se d è esattamente uguale a 55 milioni che succede?

    Tutte problematiche che ti fanno perdere un mucchio di tempo che potresti risparmiarti imparando le basi
  • Re: Quiz semplice in c++

    Usa i tag CODE per inserire codice nel forum.

    Oltre a confermare quello che ti è stato già detto, ti chiedo ... questa riga

    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);

    l'hai scritta tu? Se sì, sai cosa significa?
    Se no, perché l'hai scritta?

    E questa

    scanf("%somma");

    cosa vuol dire?

    Va bene che stai iniziando, ma inizi in maniera sbagliata. Si deve STUDIARE quello che si scrive.
    Copiare codice da internet o da altri programma in genere, e non capirlo, non ti consente di imparare nulla.
  • Re: Quiz semplice in c++

    Intanto è C, non C++.
    Ti posto una versione funzionante, ma prendilo come un codice di esempio, non come un compito svolto.
    
    #include<stdio.h>
    #include<stdlib.h>
    
    void fai_domanda();
    int main()
    {
        printf("QUIZ: 5 PUNTI PER RISPOSTA ESATTA, 3 PUNTI PER andarci vicino, 0 PUNTI RISPOSTA ERRATA\n");
        fai_domanda();
        system("pause");
        return 0;
    }
    void fai_domanda()
    {
        int somma = 0;
        unsigned int r;
    
        printf("Popolazione Italia\n");
        printf("RISPOSTA: ");
        scanf("%u",&r);
        if(r>55000000 && r<65000000) {
            somma=somma+5; 
        }
        else if(r>50000000 && r<55000000) {
            somma=somma+3; 
        }
        else if(r>65000000 && r<70000000) {
            somma=somma+3; 
        }
        else if(r<50000000 && r>70000000) {
        somma=somma+0; 
        }
        printf("I punti totali sono: %d \n", somma);
    }
    
    Ovviamente non sono riuscito a dare un senso a tutto quello che hai scritto, per esempio a che ti serviva includere windows, time, string? A che ti serviva l'handle? Perché fai tre volte la stessa domanda? Perché facevi la scanf su una variabile di output (somma)? Perché hai passato un intero alla funzione fai_domanda se poi non l'hai usato? A che ti servivano tutte quelle variabili?
    Un consiglio, se sei alle prime armi, non cercare codice su internet da copia-incollare, soprattutto se C o C++ perché 1) se ne accorgono subito che non è tuo 2) è facile trovarsi orpelli di cui non conosci il significato e ti ritrovi a procedere alla cieca senza imparare niente. Il codice di esempio lo trovi sul libro sotto la spiegazione. Dopodiché provi a scrivere qualcosa da solo e se hai difficoltà (ma solo dopo aver studiato), chiedi sul forum. Buono studio
  • Re: Quiz semplice in c++

    Alexv ha scritto:


    Intanto è C, non C++.
    Ti posto una versione funzionante, ma prendilo come un codice di esempio, non come un compito svolto.
    
    #include<stdio.h>
    #include<stdlib.h>
    
    void fai_domanda();
    int main()
    {
        printf("QUIZ: 5 PUNTI PER RISPOSTA ESATTA, 3 PUNTI PER andarci vicino, 0 PUNTI RISPOSTA ERRATA\n");
        fai_domanda();
        system("pause");
        return 0;
    }
    void fai_domanda()
    {
        int somma = 0;
        unsigned int r;
    
        printf("Popolazione Italia\n");
        printf("RISPOSTA: ");
        scanf("%u",&r);
        if(r>55000000 && r<65000000) {
            somma=somma+5; 
        }
        else if(r>50000000 && r<55000000) {
            somma=somma+3; 
        }
        else if(r>65000000 && r<70000000) {
            somma=somma+3; 
        }
        else if(r<50000000 && r>70000000) {
        somma=somma+0; 
        }
        printf("I punti totali sono: %d \n", somma);
    }
    
    Ovviamente non sono riuscito a dare un senso a tutto quello che hai scritto, per esempio a che ti serviva includere windows, time, string? A che ti serviva l'handle? Perché fai tre volte la stessa domanda? Perché facevi la scanf su una variabile di output (somma)? Perché hai passato un intero alla funzione fai_domanda se poi non l'hai usato? A che ti servivano tutte quelle variabili?
    Un consiglio, se sei alle prime armi, non cercare codice su internet da copia-incollare, soprattutto se C o C++ perché 1) se ne accorgono subito che non è tuo 2) è facile trovarsi orpelli di cui non conosci il significato e ti ritrovi a procedere alla cieca senza imparare niente. Il codice di esempio lo trovi sul libro sotto la spiegazione. Dopodiché provi a scrivere qualcosa da solo e se hai difficoltà (ma solo dopo aver studiato), chiedi sul forum. Buono studio
    Concordo.
    @Alexv, non hai corretto il fatto che se vengono inseriti 55000000 o 65000000, verrà attribuito un punteggio = 0 perché fuori dai range degli if.
    
        if(r>=55000000 && r<65000000) { // anche 55000000 riceve 5 punti
            somma=somma+5;
        }
        else if(r>50000000 && r<55000000) {
            somma=somma+3;
        }
        else if(r>=65000000 && r<70000000) { // anche 65000000 riceve 3 punti
            somma=somma+3;
        }
        else if(r<50000000 && r>70000000) { // non fa male a nessuno ma è inutile.
            somma=somma+0; // non fa male a nessuno ma è inutile.
        }
    
  • Re: Quiz semplice in c++

    Vi ringrazio dei consigli, il problema è che il programma deve richiedere più nazioni e non solo l'italia. Però deve richiedere solo un tot di nazioni e non sempre le stesse, se io le scrivo in ordine me le chiede in ordine. Vorrei invece che me le chiedesse random per ogni volta che lo faccio partire.
    Ho scritto 3 nazioni per non dilungarmi troppo, ovviamente a programma finito ne dovranno essere molte di più
    #include<stdio.h>
    #include<stdlib.h>
    
    void fai_domanda();
    int main()
    {
        printf("QUIZ: 5 PUNTI PER RISPOSTA ESATTA, 3 PUNTI PER andarci vicino, 0 PUNTI RISPOSTA ERRATA\n");
        fai_domanda();
        system("pause");
        return 0;
    }
    void fai_domanda()
    {
        int somma = 0;
        int h=1;
        unsigned int r;
    
        printf("Popolazione Italia\n");
        printf("RISPOSTA: ");
        scanf("%u",&r);
        if(r>=55000000 && r<65000000) {
            somma=somma+5; 
        }
        else if(r>50000000 && r<55000000) {
            somma=somma+3; 
        }
        else if(r>=65000000 && r<70000000) {
            somma=somma+3; 
        }
        else if(r<50000000 && r>70000000) {
        somma=somma+0; 
        }
        
         printf("Popolazione Spagna\n");
        printf("RISPOSTA: ");
        scanf("%u",&r);
        if(r>=55000000 && r<65000000) {
            somma=somma+5; 
        }
        else if(r>50000000 && r<55000000) {
            somma=somma+3; 
        }
        else if(r>=65000000 && r<70000000) {
            somma=somma+3; 
        }
        else if(r<50000000 && r>70000000) {
        somma=somma+0; 
        }
        
        
         printf("Popolazione Portogallo\n");
        printf("RISPOSTA: ");
        scanf("%u",&r);
        if(r>=55000000 && r<65000000) {
            somma=somma+5; 
        }
        else if(r>50000000 && r<55000000) {
            somma=somma+3; 
        }
        else if(r>=65000000 && r<70000000) {
            somma=somma+3; 
        }
        else if(r<50000000 && r>70000000) {
        somma=somma+0; 
        }
        printf("I punti totali sono: %d \n", somma);
        
    } 
    
  • Re: Quiz semplice in c++

    Allora somma dovrà stare fuori da fai_domanda() oppure dovrà essere static, come dovresti già aver capito avendo letto un libro di testo. Leva le variabili inutili come h e quell'else if finale come ti ha detto Rubik, che non si può vedere. Per le scelte random il forum è pieno di esempi
  • Re: Quiz semplice in c++

    Immaginavo che dovesse chiedere più nazioni. Se è così puoi parametrizzare gli if. Per esempio, dato il numero esatto della popolazione n, controllerà se la risposta è compresa nell'intervallo tra n più o meno il suo 5%, il suo 10% e il suo 15%. Per ogni nazione devi conoscere almeno nome e popolazione e poi ne peschi una a caso con la funzione rand().
  • Re: Quiz semplice in c++

    Per fare un programma del genere puoi usare due "elenchi" dove inserire a priori le nazioni con le rispettive popolazioni, ti posto un aiuto per iniziare con il piede giusto:
    
    #define MAXnazioni 4 // decidi quante nazioni inserire
    
    // 11 significa che puoi usare 10 caratteri 1 è per il terminatore, puoi ampliare
    const char nazioni[MAXnazioni][11]={"Italia    ","Spagna    ","Portogallo","Grecia    "};
    const int popolazione [MAXnazioni]={60461827,46754783,10196707,10423055};
    
    int main(){
        int i = 0;
        for (i=0; i<MAXnazioni; i++){
            printf("%s = %d\n", nazioni[i],popolazione[i]);
        }
        return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
8 risposte