Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Salvarle dove?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #12
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ogni singola parola in un array di char?

  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Valutane la lunghezza, alloca dinamicamente lo spazio per il vettore (più il carattere terminatore), copia la stringa.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #14
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da oregon
    Valutane la lunghezza, alloca dinamicamente lo spazio per il vettore (più il carattere terminatore), copia la stringa.
    Non abbiamo fatto l'allocazione dinamica al corso
    Altre soluzioni?

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Per sapere se ci sono altre soluzioni valide, dovresti rispondere ai seguenti quesiti :

    sai quante sono le parole (al massimo) presenti nella stringa?

    sai quanto potrebbe essere lunga (al massimo) ogni parola?

    Se non sai una delle due informazioni, allora è necessaria l'allocazione dinamica.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da oregon
    Per sapere se ci sono altre soluzioni valide, dovresti rispondere ai seguenti quesiti :

    sai quante sono le parole (al massimo) presenti nella stringa?

    sai quanto potrebbe essere lunga (al massimo) ogni parola?

    Se non sai una delle due informazioni, allora è necessaria l'allocazione dinamica.
    Scusami, è che ci stò davvero perdendo la ragione. Sono 5 parole e la lunghezza l'ho impostata a 50. Questo è quello che ho scritto:

    codice:
    #include <stdio.h>
    #include <string.h>
    #define N   50
    
    int main(){
        FILE *f; // Variabile per aprire il file
        char sep; // Carattere separatore: #
        char file[N]; // Stringa del nome del file da aprire
        char vettore[N]; // Vettore iniziale dove inserisco l'intera stringa con i #
        char parole[N][N]; // Vettore finale contenente le parole del file
        char *var;
        int i;
        printf("Inserire il separatore di stringhe: ");
        scanf("%c", &sep);
        printf("Inserire il nome del file da aprire: ");
        scanf("%s", &file);
        f=fopen(file, "r");
        fscanf(f, "%s", &vettore);
        var=strtok(vettore, "#");
        while(var!=NULL){
            printf("%s\n", var);
            scanf("%s", &parole[i]);
            printf("%s\n", parole[i]);
            var=strtok(NULL, "#");
            i++;
        }
        fclose(f);
    }
    Riesco a stamparla singolarmente. Ma il problema è che dovrei leggerle da file e salvarle in un vettore parola per parola, escluso il carattere #.

  7. #17
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Come dice Oregon, ti tocca sapere quanto è lunga la stringa (supponiamo sia lunga N) e qual'è il numero massimo di parole che hai (supponiamo siano al massimo M parole).
    Allora dichiari una matrice di char MxN e ci copi le varie stringhe.
    Se invece non sai quante parole hai al massimo, ma sai la lunghezza massina di ogni parola, puoi contare i token dati dalla strtok con un contatore:
    codice:
    var=strtok(vettore, "#");
    int i=1;
    while(var!=NULL){
         var=strtok(NULL, "#");
         i++;
    }
    Per poi dichiarare una matrice di char ixN.
    Però il problema è che ora devi richiamare di nuovo la strtok:
    codice:
    var=strtok(vettore, "#");
    Comunque vadano le cose, sappi che non stai utilizzando l' algortimo più veloce, nemmeno quello migliore in termini di spazio occupato.
    Una volta dichiarata la matrice con la strcpy copi i vari token nella matrice.
    Se la dimensione delle parole non ha limite, ma glielo vuoi dare tu un limite, puoi usare fgets per stabilire di prendere in input stringhe con un numero massimo di caratteri.

  8. #18
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Ok penso di aver capito. Ma l'algoritmo migliore per questo genere di cose qual'è?

  9. #19
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Dovresti usare l' allocazione dinamica per non sprecare spazio.
    Se hai una matrice ixN solo una stringa è lunga N, le altre sono più corte.
    Invece con l' allocazione dinamica puoi avere un array di tante stringhe ognuna di lunghezza differente.I comandi per allocare sono calloc e malloc, quando li studi ti consiglio di rifarti questo esercizio usando l' allocazione dinamica.

  10. #20
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da ramy89
    Dovresti usare l' allocazione dinamica per non sprecare spazio.
    Se hai una matrice ixN solo una stringa è lunga N, le altre sono più corte.
    Invece con l' allocazione dinamica puoi avere un array di tante stringhe ognuna di lunghezza differente.I comandi per allocare sono calloc e malloc, quando li studi ti consiglio di rifarti questo esercizio usando l' allocazione dinamica.
    Al secondo semestre dovrei studiarle, mi segno questo esercizio

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 © 2026 vBulletin Solutions, Inc. All rights reserved.