RISOLTO ho un problema con il mio codice l'output mostrato è scoretto

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

FZY0D

Nuovo Utente
Messaggi
2
Reazioni
3
Punteggio
23
L'OUTPUT E' IL PRIMO
nella funzione se scegli a di dovrebbe dare il primo printf se scegli b il secondo e c il terzo .se scelgo b mi da il secondo se scelgo c mi da il terzo ma se scelgo a mi da comunque il secondo e non il primo se qualcuno mi sa risolvere il problema la ringrazio.

C:
#include <stdio.h>
void mostratesto(char sceltalunghezza,char lungo[],char medio[],char corto[]);
void controllodiff(char sceltadifficolta);
int controlerror(char sceltadifficolta,char sceltalunghezza,int errori,char inserimento[],char lungo[],char medio[],char corto[]);

int main(void)
{   
    int accuratezza,errori;
    char inserimento[1000];
    char sceltalunghezza;
    char sceltadifficolta;
    char corto[1000]="TypingTest è un sito dedicato a migliorare la capacità di scrivere sulla tastiera del computer il sito offre una prova con un testo in inglese con un cronometro ed il conto di battute al minuto\n\n";
   
    char medio[1000]="10fastfingers è un sito web semplice in italiano che ha uno dei migliori strumenti di test della velocità di digitazione con una semplice interfaccia utente e immediata per iniziare subito senza troppi click\n\n";
   
    char lungo[1000]="Keybr è una applicazione web che supporta sette lingue e layout di differenti mostrando una frase da scrivere diversa seconda della lingua selezionata si può scegliere un livello di difficoltà e il tipo di testo che può essere casuale ed incomprensibile personalizzato oppure estratto da un sito o blog il programma tiene traccia delle velocità di battitura e degli errori ed evidenzia il carattere da digitare in verde il test di scrittura veloce registra la velocità massima la velocità media ed l'eventuale miglioramento\n\n";

    printf("benvenuto al test di scrittura qui potrai testare il tuo modo di scrivere.\nOra scegli la lunghezza del testo\n A=corto\n B=medio\n C=lungo\n ");
        scanf("%c",&sceltalunghezza);
               
               
   
            while(sceltalunghezza!='A' && sceltalunghezza!='a' && sceltalunghezza!='B' && sceltalunghezza!='b' && sceltalunghezza!='C' && sceltalunghezza!='c' )//controllo se l'utente ha inserito una lettera errata
                {
                    printf("la scelta è diversa da quella richiesta riprova\n");
                    scanf("%c",&sceltalunghezza);
                }
                mostratesto(sceltalunghezza,lungo,corto,medio);   
       
   
   
    printf("scegli la difficolta\n A=facile (lettere errate illimitate)\n B=medio (10 lettere sbagliate)\n C=difficile (1 lettera errata)\n");
            scanf(" %c",&sceltadifficolta);
            while('\n'!=getchar());
            controllodiff(sceltadifficolta);

   
   
    printf("ottimo ora che hai impostato il tuo test cominciamo\n\n ricopia il testo\n\n");
        mostratesto(sceltalunghezza,lungo,corto,medio);
    printf("1\n2\n3\nvia\n");
        fgets(inserimento, sizeof(inserimento), stdin);

   
        controlerror(sceltadifficolta, sceltalunghezza,errori,inserimento, lungo, medio,corto);
        if(sceltalunghezza=='A' || sceltalunghezza=='a')//controllo dell'accuratezza
        {
            accuratezza=(193*100)/errori;
        }
        else if(sceltalunghezza=='B' || sceltalunghezza=='b')
        {
            accuratezza=(207*100)/errori;
        }
        else if(sceltalunghezza=='C' || sceltalunghezza=='c')
        {
            accuratezza=(523*100)/errori;
        }
            printf("la tua accuratezza è di %d\n",accuratezza);

   
   
   
}

void mostratesto(char sceltalunghezza,char lungo[],char medio[],char corto[])//questa funzione mostrerà il testo scelto al utente
{
    if(sceltalunghezza=='A' || sceltalunghezza=='a')
    {
        puts(corto);
    }
    else if(sceltalunghezza=='B' || sceltalunghezza=='b')
    {
        puts(medio);
    }
    else if(sceltalunghezza=='C' || sceltalunghezza=='c')
    {
        puts(lungo);
    }

}

void controllodiff(char sceltadifficolta)//questa funzione veda quanti errori può fare l'utente
{
    if(sceltadifficolta=='A' || sceltadifficolta=='a')
    {
        printf("errori illimitati impostati\n\n");
       
    }
    else if(sceltadifficolta=='B' || sceltadifficolta=='b')
    {
        printf("10 errori impostati \n\n");

    }
    else if(sceltadifficolta=='C' || sceltadifficolta=='c')
    {
        printf("1 errore impotsato \n\n");
    }
   
}

int controlerror(char sceltadifficolta,char sceltalunghezza,int errori,char inserimento[],char lungo[],char medio[],char corto[])//questa funzione controllerà quanti errori ha fatto l'utente
{
    int i=0;
    if(sceltadifficolta=='A' || sceltadifficolta=='a')
    {
        if(sceltalunghezza=='A' || sceltalunghezza=='a')
        {
            while(corto!='\0')
                {
                    if(inserimento!=corto)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        else if(sceltalunghezza=='B' || sceltalunghezza=='b')
        {
            while(medio!='\0')
                {
                    if(inserimento!=medio)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        else if(sceltalunghezza=='C' || sceltalunghezza=='c')
        {
                while(lungo!='\0')
                {
                    if(inserimento!=lungo)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        printf("Finito hai fatto %d errori, è il momento di passare alla difficoltà succesiva\n",errori);
    }
    else if(sceltadifficolta=='B' || sceltadifficolta=='b')
    {
        if(sceltalunghezza=='A' || sceltalunghezza=='a')
        {
            while(corto!='\0')
                {
                    if(inserimento!=corto)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        else if(sceltalunghezza=='B' || sceltalunghezza=='b')
        {
            while(medio!='\0')
                {
                    if(inserimento!=medio)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        else if(sceltalunghezza=='C' || sceltalunghezza=='c')
        {
                while(lungo!='\0')
                {
                    if(inserimento!=lungo)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        if(errori>=10)
        {
        printf("Finito hai fatto %d errori, mi dispiace ma hai fatto troppi errori rifai il test o cambia modalità\n",errori);
        }
        else
        {
            printf("complimentihai fatto meno di 10 errori\n");    
        }
    }
    else if(sceltadifficolta=='C' || sceltadifficolta=='c')
    {
        if(sceltalunghezza=='A' || sceltalunghezza=='a')
        {
            while(corto!='\0')
                {
                    if(inserimento!=corto)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        else if(sceltalunghezza=='B' || sceltalunghezza=='b')
        {
            while(medio!='\0')
                {
                    if(inserimento!=medio)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        else if(sceltalunghezza=='C' || sceltalunghezza=='c')
        {
                while(lungo!='\0')
                {
                    if(inserimento!=lungo)
                    {
                        errori++;
                    }
                    i++;
                }
        }
        if(errori>=1)
        {
        printf("Finito hai fatto %d errori, mi dispiace ma hai fatto troppi errori rifai il test o cambia modalità\n",errori);
        }
        else
        {
            printf("complimentihai fatto 0 errori\n");
        }
    }
    return errori;
}
 
Ultima modifica da un moderatore:
Ti ho formattato il codice, per favore, la prossima volta utilizza il tag CODE. Già che ci sei, prendi anche nota del regolamento di questa sezione, dove troverai tutte le info utili. ?

PS. ora leggo il codice e poi ti rispondo

EDIT:

Non so se è un problema dovuto alla formattazione che è stata persa, ma se hai scritto questo while (corto != '\0') si tratta di un errore (anche se magari compila, dovresti ricevere un warning). Dovresti usare corto[i].

Comunque hai invertito i parametri. La funzione ha come argomenti:

C:
void mostratesto(char sceltalunghezza, char lungo[], char medio[], char corto[])

ma tu la chiami come:
C:
 mostratesto(sceltalunghezza, lungo, corto, medio);
 
Ultima modifica:
grazie mille
--- i due messaggi sono stati uniti ---
Ti ho formattato il codice, per favore, la prossima volta utilizza il tag CODE. Già che ci sei, prendi anche nota del regolamento di questa sezione, dove troverai tutte le info utili. ?

PS. ora leggo il codice e poi ti rispondo

EDIT:

Non so se è un problema dovuto alla formattazione che è stata persa, ma se hai scritto questo while (corto != '\0') si tratta di un errore (anche se magari compila, dovresti ricevere un warning). Dovresti usare corto[i].

Comunque hai invertito i parametri. La funzione ha come argomenti:

C:
void mostratesto(char sceltalunghezza, char lungo[], char medio[], char corto[])

ma tu la chiami come:
C:
 mostratesto(sceltalunghezza, lungo, corto, medio);
[/
[/QUOTE]

Ti ho formattato il codice, per favore, la prossima volta utilizza il tag CODE. Già che ci sei, prendi anche nota del regolamento di questa sezione, dove troverai tutte le info utili. ?

PS. ora leggo il codice e poi ti rispondo

EDIT:

Non so se è un problema dovuto alla formattazione che è stata persa, ma se hai scritto questo while (corto != '\0') si tratta di un errore (anche se magari compila, dovresti ricevere un warning). Dovresti usare corto[i].

Comunque hai invertito i parametri. La funzione ha come argomenti:

C:
void mostratesto(char sceltalunghezza, char lungo[], char medio[], char corto[])

ma tu la chiami come:
C:
 mostratesto(sceltalunghezza, lungo, corto, medio);
grazie non lo avevo notato ora funziona
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top