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

    problema di una funzione in C...(Gioco Impiccato)

    Buongiorno a tutti sono nuova del forum....ho un problema con una funzione.....allora questa funzione serve per il gioco dell'impiccato che devo realizzare in C...il problema consiste nel prendere una parola a caso dal file e trasferirla in una stringa!!!qualcuno mi può aiutare???

    io inizialmente avevo pensato a generare un numero random e attribuirlo al puntatore al file xò nn è possibile;

    successivamente ho caricato il file in un vettore xò è chiaro che questo rende il programma molto lento...

    c'è un'altra soluzione???

    grazie...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Perché lento? Quante parole hai? Come sono organizzate nel file?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ci sono 30 parole per ogni file sono 11 file e in più c'è un file di 110 parole....
    nel file le parole sono scritte una per ogni riga

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non mi sembra che ci voglia molto a leggere 440 parole e metterle in memoria ... di che tempi stiamo parlando?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ok lasciando stare il tempo.....il problema è che la funzione nn stampa la parola che prende dal vettore che contiene ttt le parole di un file......

    questa è la funzione....
    void Carica_Parola(FILE *fp)
    { char c,b;
    int i=1,t,n,a;
    int NUM_RIGHE=1;
    fp=fopen("impostazioni.txt","r");
    if(fp!=NULL)
    {c=getc(fp);
    do
    {
    c=getc(fp);
    if(c=='\n')
    i++;
    if(i==3)
    {fscanf(fp,"%s", &nomefile);
    }
    }while(c!=EOF);
    }else{printf("ERRORE nell'apertura del file");}
    strcat(nomefile, ".txt");
    fp=fopen(nomefile,"r");
    if(fp!=NULL)
    {b=getc(fp);
    do
    {
    b=getc(fp);

    if(b=='\n')
    {NUM_RIGHE++;
    }

    }while(b!=EOF);
    }else{printf("ERRORE nell'apertura del file");}

    fp=fopen(nomefile,"r");
    if(fp!=NULL)
    if(a=strcmp("Dizionario",nomefile)==0)
    {for(i=0;i<DIM_CAT;i++)
    {fscanf(fp,"%s",CATEGORIE[i]);
    // CATEGORIE[i] è definito come typedef char stringa[30]; stringa CATEGORIE[DIM_CAT]; e DIM_CAT è definito come costante di 110
    n=DIM_CAT;}
    }else{
    n=30;
    for(i=0;i<n;i++)
    {fscanf(fp,"%s",CATEGORIE[i]);}}
    i=rand()%n;
    printf("%d",i);
    parola[30]=CATEGORIE[i];
    printf("%s",parola);
    lung=strlen(parola);
    for(i=0;i<lung;i++)
    {parola_segreta[lung]="_";}
    for(i=0;i<lung;i++)
    {printf("%s",parola_segreta[lung]);}
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Intanto, non capisco a cosa serva il parametro

    FILE *fp

    per questa funzione.

    A parte questo, dovresti spiegare la logica che hai usato nelle varie parti della funzione per capire cosa non va.

    In particolare,

    - cosa è cosa contiene il file impostazioni.txt
    - cosa è parola nella linea parola[30]=CATEGORIE[i];
    - cosa è parola_segreta


    P.S. Per favore, non usare abbreviazioni tipo nn ttt dato che sono molto fastidiose per la comprensione dei messaggi. E per il codice, usa i tag CODE come indicato nel regolamento, altrimenti il codice è molto meno chiaro e si rinuncia a rispondere.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    il file impostazioni.txt contiene il numero dei giocatori il numero dei tentativi rimasti e il nome del file(della categoria)

    parola[30]=CATEGORIA[i] assegna a parola la stringa nella i-esima posizione di CATEGORIA

    parola_segreta serve per nascondere la parola, visto che dovrà stampare i trattini al posto della parola

    FILE *fp viene usato per passare il file impostazioni.txt

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da rainofkisses
    il file impostazioni.txt contiene il numero dei giocatori il numero dei tentativi rimasti e il nome del file(della categoria)
    Quindi diciamo che sicuramente (perché lo hai controllato con un printf) nella variabile

    nomefile

    c'è il nome del file da cui leggere la parola. Corretto?

    parola[30]=CATEGORIA[i] assegna a parola la stringa nella i-esima posizione di CATEGORIA

    parola_segreta serve per nascondere la parola, visto che dovrà stampare i trattini al posto della parola
    Sì ma se fornisci tutto il codice utile per fare una prova di compilazione senza errori, si fa meno fatica ad individuare il problema.

    Ad esempio, lung, parola, parola_segreta danno un errore dato che non sono dichiarate da nessuna parte.

    FILE *fp viene usato per passare il file impostazioni.txt
    fp non passa il file impostazioni.txt (a parte il fatto che un file non si passa). Il suo uso e' inutile. Eliminalo dai parametri e indicalo all'interno della funzione come semplice variabile locale.

    FILE *fp;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    si nomefile contiene il nome della categoria

    char nomefile[30];
    char parola[30];
    char parola_segreta[100];
    int lung;

    sono tutte variabili globali

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da rainofkisses
    ... sono tutte variabili globali
    In questo caso la riga

    codice:
    parola[30]=CATEGORIE[i];
    non ha senso. Semmai dovrebbe essere

    codice:
    strcpy(parola, CATEGORIE[i]);
    E subito dopo, il codice

    codice:
    for(i=0;i<lung;i++)
    {parola_segreta[lung]="_";}
    for(i=0;i<lung;i++)
    {printf("%s",parola_segreta[lung]);}
    dovrebbe essere

    codice:
    for(i=0;i<lung;i++)
        { parola_segreta[lung]='_'; }
    
    printf("%s",parola_segreta);
    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.