RICHIAMARE UNA PARTE DI PROGRAMMA

di il
5 risposte

RICHIAMARE UNA PARTE DI PROGRAMMA


#include <stdio.h>
#include <stdlib.h>
#define MAX 100

int main() {

char titolo[MAX];
int categoria;
int ambiente;
int risposta;
int opzione;
int i=0;
int t=0;
FILE *e;

do{
printf("1)LIBRI LETTI \n2)LIBRI DA LEGGERE\n");
printf("Digita numero di uno dei due ambienti: ");
scanf("%d%*c", &ambiente);
system("CLS");
  }while(ambiente>2 || ambiente<1);


if(ambiente==1)
{

        do{
    printf("1)INSERIRE UN NUOVO TITOLO ALL'INTERNO DEL CATALOGO DEI LIBRI LETTI \n\n2)VISIONARE CATALOGO PERSONALE DEI LIBRI LETTI");
    printf("\n\nDigita numero di una delle due opzioni: ");
    scanf("%d%*c", &opzione);
    system("CLS");
          }while(opzione>2 || opzione<1);


    if(opzione==2)
    {







    }

































































































































if(opzione==1)
    {

printf ("INSERISCI TITOLO: ");

scanf("%[^\n]s", titolo);

printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");

         do
           {
            printf("DIGITA NUMERO DELLA CATEGORIA: ");
             scanf("%d%*c", &categoria);
             if(categoria>15)
               {
                   system("CLS");
                  printf("IL TITOLO DEL LIBRO INSERITO E': ");

               /*   do{
                    printf("%c ", titolo[i]);
                    i++;
                  }while(titolo[i] > 10);   */ // cosa significa array di char > 10 ?

                   printf("%s",titolo);

                  printf("\n\n");
                   printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
                     printf("DI NUOVO ");
                     }


            } while(categoria>15);


if(categoria==1)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\EPICA.txt","a+");

     fprintf(e, "%s", titolo);

 printf ("Fatto!");
  fclose(e);
}

else if (categoria==2)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\LIBRI_SACRI.txt","a+");

     fprintf (e, "%s",titolo);


 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==3)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GIALLO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

   else if (categoria==4)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STORICO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==5)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FILOSOFIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==6)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STRATEGIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

else if (categoria==7)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\SATIRA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==8)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\HORROR.txt","a+");

     fprintf (e, "%s",titolo);


 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==9)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GOTICO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==10)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\POESIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==11)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FIABE_FAVOLE_ROMANZI-FANTASTICI.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==12)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASY.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==13)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASCIENZA.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==14)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\AVVENTURA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==15)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\BIOGRAFIA_SAGGI_CRONACHE.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
         }

        do{
        system("CLS");
        printf("1)SI \n\n2)NO \n\n");
        printf("Devi inserire altri titoli ?");
        scanf("%d%*c", risposta);
        }while(risposta<1 || risposta>2);
        if(risposta==1)
        {
          stampa();
        }

        else if(risposta==2)
        {
          printf("SEI FUORI!");
        }

   }


}



return 0;
}










int stampa()
{
char titolo[MAX];
int categoria;
int ambiente;
int esci;
int opzione;
int i=0;
int t=0;
FILE *e;



printf ("INSERISCI TITOLO: ");

scanf("%[^\n]s", titolo);

printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");

         do
           {
            printf("DIGITA NUMERO DELLA CATEGORIA: ");
             scanf("%d%*c", &categoria);
             if(categoria>15)
               {
                   system("CLS");
                  printf("IL TITOLO DEL LIBRO INSERITO E': ");

               /*   do{
                    printf("%c ", titolo[i]);
                    i++;
                  }while(titolo[i] > 10);   */ // cosa significa array di char > 10 ?

                   printf("%s",titolo);

                  printf("\n\n");
                   printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
                     printf("DI NUOVO ");
                     }


            } while(categoria>15);


if(categoria==1)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\EPICA.txt","a+");

     fprintf(e, "%s", titolo);

 printf ("Fatto!");
  fclose(e);
}

else if (categoria==2)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\LIBRI_SACRI.txt","a+");

     fprintf (e, "%s",titolo);


 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==3)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GIALLO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

   else if (categoria==4)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STORICO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==5)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FILOSOFIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==6)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STRATEGIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

else if (categoria==7)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\SATIRA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==8)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\HORROR.txt","a+");

     fprintf (e, "%s",titolo);


 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==9)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GOTICO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==10)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\POESIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==11)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FIABE_FAVOLE_ROMANZI-FANTASTICI.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==12)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASY.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==13)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASCIENZA.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==14)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\AVVENTURA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==15)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\BIOGRAFIA_SAGGI_CRONACHE.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
         }

      return 0;


}
Sopra ho riportato l'intero programma... L'obbiettivo sarebbe riuscire -se si vuole- a inserire nuove stringhe (titolo) all'interno del file di testo, senza dover ogni volta chiudere e riaprire il programma... Ho pensato quindi al dichiarare fuori dal main una funzione che ho chiamato stampa() , in cui mettere quella parte di codice che vorrei richiamare all'interno del main se l'utente digita 1 (ovvero, si, voglio inserire un nuovo titolo nel file).
Purtroppo non ho esperienza con le funzioni, e devo aver sbagliato qualcosa.
Per esempio, dovrei mettere qualcosa dentro le parentesi che seguono il nome della funzione stampa() ?
Sotto vi riporto soltanto la parte di codice che riguarda la funzione dichiarata dopo il main:

int stampa()
{
char titolo[MAX];
int categoria;
int ambiente;
int esci;
int opzione;
int i=0;
int t=0;
FILE *e;



printf ("INSERISCI TITOLO: ");

scanf("%[^\n]s", titolo);

printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");

         do
           {
            printf("DIGITA NUMERO DELLA CATEGORIA: ");
             scanf("%d%*c", &categoria);
             if(categoria>15)
               {
                   system("CLS");
                  printf("IL TITOLO DEL LIBRO INSERITO E': ");

               /*   do{
                    printf("%c ", titolo[i]);
                    i++;
                  }while(titolo[i] > 10);   */ // cosa significa array di char > 10 ?

                   printf("%s",titolo);

                  printf("\n\n");
                   printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
                     printf("DI NUOVO ");
                     }


            } while(categoria>15);


if(categoria==1)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\EPICA.txt","a+");

     fprintf(e, "%s", titolo);

 printf ("Fatto!");
  fclose(e);
}

else if (categoria==2)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\LIBRI_SACRI.txt","a+");

     fprintf (e, "%s",titolo);


 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==3)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GIALLO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

   else if (categoria==4)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STORICO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==5)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FILOSOFIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==6)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STRATEGIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

else if (categoria==7)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\SATIRA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==8)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\HORROR.txt","a+");

     fprintf (e, "%s",titolo);


 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==9)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GOTICO.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==10)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\POESIA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==11)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FIABE_FAVOLE_ROMANZI-FANTASTICI.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==12)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASY.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==13)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASCIENZA.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==14)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\AVVENTURA.txt","a+");


     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
    }

    else if (categoria==15)

   {
    e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\BIOGRAFIA_SAGGI_CRONACHE.txt","a+");

     fprintf (e, "%s",titolo);

 printf ("Fatto! \n");
    fclose(e);
         }

      return 0;


}


E qui sotto vi riporto soltanto la parte all'interno del main in cui richiamo la funzione stampa();

do{
        system("CLS");
        printf("1)SI \n\n2)NO \n\n");
        printf("Devi inserire altri titoli ?");
        scanf("%d%*c", risposta);
        }while(risposta<1 || risposta>2);
        if(risposta==1)
        {
          stampa();
        }

        else if(risposta==2)
        {
          printf("SEI FUORI!");
        }

Grazie tante ancora... al momento, così com'è, se digito 1 (si, voglio inserire un nuovo titolo nel file di testo) il programma si interrompe..

5 Risposte

  • Re: RICHIAMARE UNA PARTE DI PROGRAMMA

    Ma stai seguendo un libro o no? Non si impara su un forum
  • Re: RICHIAMARE UNA PARTE DI PROGRAMMA

    oregon ha scritto:


    Ma stai seguendo un libro o no? Non si impara su un forum
    Si sto studiando da diversi libri, però non tutto è chiaro.
    E si, pensavo di poter imparare in un forum...
  • Re: RICHIAMARE UNA PARTE DI PROGRAMMA

    No, il forum e' utile per chiarire concetti criptici, per risolvere problemi spinosi, NON come alternativa al libro di testo.

    Non perche' siamo antipatici (a volte lo siamo ), ma perche' sul libro c'e' spiegato TUTTO per filo e per segno, con esempi. Inoltre il libro ti fa fare un percorso che va dai concetti semplici ai piu' complessi e, cosa FONDAMENTALE ti insegna la terminologia.

    Cosi' quando fai una domanda sul forum, e ti rispondiamo con la terminologia tecnica, tu capisci di che cosa stiamo parlando. E, SOPPRATTUTO, quando fai una domanda, se usi correttamente la terminologia, ANCHE NOI capiamo di cosa TU stia parlando.
  • Re: RICHIAMARE UNA PARTE DI PROGRAMMA

    charliecandace ha scritto:


    oregon ha scritto:


    Ma stai seguendo un libro o no? Non si impara su un forum
    Si sto studiando da diversi libri, però non tutto è chiaro.
    Ma il capitolo sulle funzioni e gli argomenti da passare va letto e studiato più volte.
    L'hai fatto? Cosa non hai capito? Partiamo da qualcosa di concreto altrimenti ...
    E si, pensavo di poter imparare in un forum...
    E no, non puoi. Che faccio, ti invio tutto il capitolo sulle funzioni?


    P.S. Solo per saperlo, non va bene scrivere i titoli dei post tutti in maiuscolo ...
  • Re: RICHIAMARE UNA PARTE DI PROGRAMMA

    Va bene, scusate, capisco che ho molte esigenze ma la programmazione mi sta appassionando, e man mano, i problemi che non riesco a risolvere cerco di capirli meglio leggendo libri, usando internet... comunque grazie mille per il vostro aiuto, siete stati molto gentili
Devi accedere o registrarti per scrivere nel forum
5 risposte