Concetti Chiave
- Il programma calcola il punteggio di un esaminando in un quiz a risposte multiple basato su 20 domande.
- Le risposte corrette sono fornite come stringa e il programma confronta queste con le risposte date dall'esaminando, leggendo da un file di testo.
- Il confronto tra risposte è insensibile al caso, grazie alla conversione delle risposte corrette in maiuscolo.
- Il punteggio è calcolato aggiungendo 1 punto per ogni risposta esatta e sottraendo 0.25 punti per ogni risposta sbagliata.
- Il risultato finale del punteggio viene scritto in un file di output, fornendo un facile accesso ai risultati ottenuti.
Si desidera realizzare un programma che calcoli il punteggio ottenuto da un esaminando in un quiz a risposte multiple. Il quiz contiene 20 domande, ognuna delle quali può avere la risposta A, B, C, D oppure E.
Al programma viene fornita la stringa delle risposte esatte (ossia le 20 lettere corrispondenti alle 20 risposte esatte).
Funzionamento del programma
Il programma deve quindi leggere dal file scheda.txt le risposte date da un esaminando.
Le risposte sono elencate una per riga.
Non è noto se le risposte (sia quelle esatte sia quelle fornite dall’esaminando) sono scritte con caratteri alfabetici maiuscoli o minuscoli. Il programma deve essere in grado di elaborare correttamente qualunque combinazione di maiuscole e minuscole. Si
garantisce che le risposte contengono solo caratteri leciti. Il programma deve fornire come risultato il punteggio conseguito dall’esaminando, calcolato secondo le seguenti regole:
• si aggiunge un punto per ogni risposta esatta
• si sottraggono 0.25 punti per ogni risposta sbagliata
Calcolo del punteggio
Il punteggio ottenuto va scritto in un file di testo.
#include
#include
#include
#define MAX_RISPOSTE 20
#define PRE 1.0 // Punti per Risposta Esatta
#define PRS -0.25 // Punti per Risposta Sbagliata
int main ()
{
char risposta[2];
char risposteEsatte[MAX_RISPOSTE+1];
FILE *fpScheda, *fpRisultati;
double punteggio = 0.0;
int i;
//printf("Digita la stringa contenente le risposte corrette\n");
//gets(risposteEsatte);
//fflush(stdin);
strcpy(risposteEsatte,"AAABACcCcCDDDDDaBaBB"); //per test
strupr(risposteEsatte); //conversione in maiuscolo delle risposte esatte
/* apertura e controllo del file di input */
fpScheda = fopen ("scheda.txt", "rt");
if (fpScheda == NULL)
{
printf("Errore: impossibile aprire il file in lettura\n");
getchar();
exit(1);
}
/* lettura dei dati */
i = 0;
while (fscanf(fpScheda,"%s",risposta) != EOF)
{
/* la risposta data e' in risposta[0] */
if (toupper(risposta[0]) == risposteEsatte)
punteggio += PRE;
else
punteggio += PRS;
i++;
}
/* chiusura del file */
fclose(fpScheda);
/* stampa del risultato */
//printf ("Punti conseguiti: %f\n", punteggio); //per test
/* apertura e controllo del file di output */
fpRisultati = fopen ("risultati.txt", "wt");
if (fpRisultati == NULL)
{
printf("Errore: impossibile aprire il file in scrittura\n");
getchar();
exit(2);
}
fprintf (fpRisultati,"%f\n", punteggio);
fclose(fpRisultati);
getchar();
return 0;
}
Domande da interrogazione
- Come viene calcolato il punteggio dell'esaminando nel quiz?
- Qual è il formato delle risposte fornite dall'esaminando?
- Dove viene salvato il punteggio finale dell'esaminando?
Il punteggio viene calcolato aggiungendo 1 punto per ogni risposta esatta e sottraendo 0.25 punti per ogni risposta sbagliata.
Le risposte dell'esaminando sono elencate una per riga in un file chiamato "scheda.txt" e possono essere scritte in qualsiasi combinazione di maiuscole e minuscole.
Il punteggio finale viene scritto in un file di testo chiamato "risultati.txt".