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

Stato
Discussione chiusa ad ulteriori risposte.

FZY0D

Nuovo Utente
2
3
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:
  • Mi piace
Reazioni: BWD87

BWD87

Moderatore
Staff Forum
Utente Èlite
39,427
22,775
CPU
Core i5 10600k @5,1GHz cache x49
Dissipatore
Corsair Hydro h100x (2x ml120pro white led push + 2x ml120 pull)
Scheda Madre
MSI Z490 Tomahawk
HDD
Kingston A2000 256GB (SO) + Crucial MX500 1TB (giochi) + Seagate Barracuda 1TB (storage vario)
RAM
32Gb Crucial Ballistix DDR4 3600MHz C16 @4000mhz 17-19-19-42
GPU
MSI GeForce GTX 1070Ti AERO + kraken g12/kraken x31 @2114core/4554vram + 2x sp120 pwm
Monitor
AOC AG271QX
PSU
Corsair TX550M
Case
Corsair Carbide 400R moddato
Periferiche
Ventole case: 3x silent wings 2 in, 2x sp140 led in, 1x sp140 led out
OS
Windows 10
Scrivere in maiuscolo equivale ad urlare e va contro al regolamento. Correggi il titolo
 
  • Mi piace
Reazioni: DispatchCode

DispatchCode

Moderatore
Staff Forum
Utente Èlite
1,563
1,207
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
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:
  • Mi piace
Reazioni: Moffetta88 e BWD87

FZY0D

Nuovo Utente
2
3
grazie mille
Post unito automaticamente:

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.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando

Discussioni Simili