Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    trovare l'errore logico

    Si vuole simulare la gestione di un dizionario dei sinonimi. Il dizionario è indicizzato tramite le lettere dell’alfabeto ed ogni parola contiene i suoi sinonimi (massimo 5).
    L’utente deve inserire una frase dove ogni parola è separata da uno spazio
    Il programma riconosce ogni singola parola e chiede all’utente se vuole cercare nel dizionario il suo sinonimo. Se la risposta è affermative il programma sostituisce la parola con il suo sinonimo.
    Provvedere all’implementazione dell’algoritmo che data una frase ritorna una nuova frase con i sinonimi al posto delle parole decise dall’utente. Effettuare almeno 3 test.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct Dizionario
    {
            char indice;
            struct {
                   char parola [20];
                   struct {
                          char sinonimi [20];
                          } s[5];
                          } p[4];
                          }d;
                          int i=0,f=0,c=0;
    int main(void)
    {
        FILE *ofp;
        d dizionario [2];
        ofp=fopen ("dizionario.txt","r");
        i=0;
        while (i !=2) {
              if (i == 0) {
                    dizionario [i].indice='a';
                    }
                    if (i == 1) {
                          dizionario [i].indice='b';
                          }
                          fprintf (ofp,"%c\n",dizionario [i].indice);
                          c=0;
                          while (c != 4) {
                                printf ("i=%d,c=%d",i,c);
                                printf ("\n inserisci la %d parola dell' indice %c: ",c,dizionario[i].indice);
                                scanf ("%s",dizionario [i].p[c].parola);
                                fprintf (ofp,"%s\n",dizionario [i].p[c].parola);
                                f = 0;
                                while (f != 5) {
                                      printf ("\n inserisci il %d sinonimo della parola %s:",f,dizionario[i].p[c].parola);
                                      scanf ("%s", dizionario[i].p[c].s[f].sinonimi);
                                      fprintf (ofp, "%s\n", dizionario [i].p[c].s[f].sinonimi);
                                      f++;
    }
    c++;
    }
    i++;
    }
    fclose (ofp);
      system("PAUSE");	
      return 0;
    }
    ragazzi il programma viene compilato ma non eseguito, perchè? grazie per la risposta

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    In che senso non viene eseguito ?

  3. #3
    quando lo vado ad eseguire, windows mi da un errore del tipo non inviare ecc. penso che sia un errore logico del codice

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct Dizionario
    {
            char indice;
            struct {
                   char parola [20];
                   struct {
                          char sinonimi [20];
                          } s[5];
                          } p[4];
                          }d;
                          int i=0,f=0,c=0;
    int main(void)
    {
        FILE *ofp;
        d dizionario [2];
        ofp=fopen ("dizionario.txt","r");
        i=0;
        while (i !=2) {
              if (i == 0) {
                    dizionario [i].indice='a';
                    }
                    if (i == 1) {
                          dizionario [i].indice='b';
                          }
                          fprintf (ofp,"%c\n",dizionario [i].indice);
                          c=0;
                          while (c != 4) {
                                printf ("i=%d,c=%d",i,c);
                                printf ("\n inserisci la %d parola dell' indice %c: ",c,dizionario[i].indice);
                                scanf ("%s",dizionario [i].p[c].parola);
                                fprintf (ofp,"%s\n",dizionario [i].p[c].parola);
                                f = 0;
                                while (f != 5) {
                                      printf ("\n inserisci il %d sinonimo della parola %s:",f,dizionario[i].p[c].parola);
                                      scanf ("%s", dizionario[i].p[c].s[f].sinonimi);
                                      fprintf (ofp, "%s\n", dizionario [i].p[c].s[f].sinonimi);
                                      f++;
    }
    c++;
    }
    i++;
    }
    fclose (ofp);
      system("PAUSE");	
      return 0;
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    A quanto sembra dal codice, sul file ci devi scrivere, non leggere. Modifica la chiamata a fopen() con "w" come secondo argomento, non "r". E comunque in generale dopo l'apertura dei file fai sempre una verifica del puntatore al file stream che hai appena tentato di aprire: se è NULL significa che hai sbagliato qualcosa. In questo modo puoi renderti conto più facilmente di errori del genere.

    codice:
    ofp = fopen ("dizionario.txt", "w");
    if (ofp == NULL) {
        fprintf(stderr, "Problema nell'apertura del file.\n");
        return -1;
    }
    every day above ground is a good one

  5. #5
    Si grazie YuYevon finalemente cosi il programma viene eseguito.. ora però secondo quanto dice la traccia:
    Si vuole simulare la gestione di un dizionario dei sinonimi. Il dizionario è indicizzato tramite le lettere dell’alfabeto ed ogni parola contiene i suoi sinonimi (massimo 5).
    L’utente deve inserire una frase dove ogni parola è separata da uno spazio
    Il programma riconosce ogni singola parola e chiede all’utente se vuole cercare nel dizionario il suo sinonimo. Se la risposta è affermative il programma sostituisce la parola con il suo sinonimo.
    Provvedere all’implementazione dell’algoritmo che data una frase ritorna una nuova frase con i sinonimi al posto delle parole decise dall’utente. Effettuare almeno 3 test.

    Non so come proseguire..
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct Dizionario
    {
            char indice;
            struct {
                   char parola [20];
                   struct {
                          char sinonimi [20];
                          } s[5];
                          } p[4];
                          }d;
                          int i=0,f=0,c=0;
    int main(void)
    {
        FILE *ofp;
        d dizionario [2];
        ofp = fopen ("dizionario.txt", "w");
    if (ofp == NULL) {
        fprintf(stderr, "Problema nell'apertura del file.\n");
        return -1;
    }
        i=0;
        while (i !=2) {
              if (i == 0) {
                    dizionario [i].indice='a';
                    }
                    if (i == 1) {
                          dizionario [i].indice='b';
                          }
                          fprintf (ofp,"%c\n",dizionario [i].indice);
                          c=0;
                          while (c != 4) {
                                printf ("i=%d,c=%d",i,c);
                                printf ("\n inserisci la %d parola dell' indice %c: ",c,dizionario[i].indice);
                                scanf ("%s",dizionario [i].p[c].parola);
                                fprintf (ofp,"%s\n",dizionario [i].p[c].parola);
                                f = 0;
                                while (f != 5) {
                                      printf ("\n inserisci il %d sinonimo della parola %s:",f,dizionario[i].p[c].parola);
                                      scanf ("%s", dizionario[i].p[c].s[f].sinonimi);
                                      fprintf (ofp, "%s\n", dizionario [i].p[c].s[f].sinonimi);
                                      f++;
    }
    c++;
    }
    i++;
    }
    fclose (ofp);
      system("PAUSE");	
      return 0;
    }

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.