Liste

di il
14 risposte

Liste

Devo realizzare un progetto dove devo gestire con ricorsione una biblioteca ma ho un po di problemi con inserimento di un nuovo libro potete aiutarmi vi posto una parte di codice

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define MAXLEN 20
 /* Creazione di un array di struct libro contenente 5 campi*/
 
struct libro{
char titolo[30];
char nome_autori[5][20];
int codice_identificativo;
int prezzo_di_prestito;
int status; /* Status indica se il libro è presente(1) oppure è in prestito(0)*/
struct nodo *next;
};
typedef struct libro Libro;

struct studenti{
char nome[MAXLEN];
char cognome[MAXLEN];
int matricola[MAXLEN];
};
typedef struct studenti Studenti;
 
 
 
 
 

int main ()
{

int scelta;  /*Variabile di controllo dello switch*/
int i,max; /* Variabili utilizzate per inserire un nuovo libro nell'archivio*/
int flag=2;
char titolo_richiesto[30]; /* Le variabili flag e titolo_richiesto sono utilizzate per richiedere un libro tramite il codice */
int cod_id; /* Variabile utilizzata per richiedere un libro tramite il codice*/
int id; /* Variabile utilizzata per restituire un libro tramite codice*/


 
 
/* Inizializzazione della libreria */
Libro libreria [] =
{
    {"Il signore degli anelli",{"James Redfield","Silvestrone"},5,1,1},
    {"Harry Potter",{"Paulo Coelho"},7,1,2},
    {"La bibbia",{"Marco Bianchi"},8,0,3},
    {"Piccole donne",{"Piero Mozzi"},60,0,4},
    {"Guarnizione",{"Napoleton Hill"},1,0,5},
    {"Il nome della rosa",{"Louise"},10,1,6},
    {"Via col vento",{"Jerry Ford"},3,1,7},
    {"Odissea",{"Rhonda Bryne","Galano","Loius Scott","Trent"},40,1,8},
    {"Cuore",{"Fabio Marchesi"},12,1,9},
    {"Malavoglia",{"Valeria Soglia"},4,0,10},
    {"Siddharta",{"Still"},2,1,11},
    {"Lolita",{"Moccia","Crail Wilcox"},12,0,12},
    {"Amabili resti",{"Wagner","Pone Raffy"},35,1,13},
    {"Sulla strada",{"Boldi"},1,1,14},
    {"Possession",{"Esposito Faby"},25,1,15},
};
 
do{
/* Inizializzazione biblioteca */
printf("* * * * * * * * * * * * * * * * * * * * * * *\nBenvenuto nel programma di gestione biblioteca\n* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("Premere:\n 1. Per inserire un nuovo libro;\n 2. Per richiedere libro tramite titolo;\n 3. Per richiedere un libro tramite codice;\n 4. Per restituire un libro;\n 5. Per uscire.\n");

printf("Inserisci il nuemro dell'operazione che vuoi effettuare:\n");
scanf("%d",&scelta); /*Viene inserito nella variabile var il numero inserito dall'utente e di conseguenza inserito nel ciclo Switch*/
switch (scelta) /* Creo uno switch con 5 case, uno per ogni possibile scelta */
{
 [code]

 case 3 :
i=0;
printf("Inserire il codice identificativo del libro da richiedere: \n");
scanf("%d",&cod_id);
while(flag!=0 && i<19){
if(cod_id==libreria[i].codice_identificativo){
flag=0;
if(libreria[i].status==1){
printf("\nIl libro e' presente nell'archivio ed e' disponibile.\n");
    libreria[i].status=0;
printf("\nSuddetto libro le e' appena stato ceduto in prestito: %s.\nArrivederci e Grazie!\n", libreria[i].titolo);}
else{
printf("\nIl libro e' presente nell'archivio ma attualmente e' in prestito\n");}
}
else{
i=i+1;}}
if(flag!=0){
printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!\n");}
break;
qui invece le ultime due printf non vengono eseguito mai...ma non capisco perchè

case 4 : /* Case costruito per restituire un libro tramite codice*/
i=0;
printf("Inserire il codice identificativo del libro da restituire: \n");
scanf("%d",&id);
while(flag!=0 && i<19){
if(id==libreria[i].codice_identificativo){
flag=0;
if(libreria[i].status==1){
printf("\nErrore: Il libro e' gia' disponibile.\nArrivederci e Grazie.\n");}
else{
libreria[i].status=1;
printf("\nSuddetto libro e' appena stato restituito: %s\nLa ringraziamo per la serieta'. Arrivederci!\n",libreria[i].titolo);}
}
else{
i=i+1;
  }
}
if(flag!=0){
printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!");}
break;
 
l'ultima printf non viene mai eseguita.

grazie in anticipo

14 Risposte

  • Re: Liste

    Premetto che dal post e dalle struct che hai creato, ho paura che tu non abbia ben capito la traccia del compito. Si parla di liste, non di array, e non hai usato la ricorsione.
    Tornando alla printf, per caso il costrutto case che hai postato si trova all'interno di un qualche ciclo e l'hai eseguito più volte? Se è così, il consiglio (valido in generale) è di inizializzare la variabile di controllo "flag" prima di ogni ciclo while, visto che la usi, appunto, per i while.
  • Re: Liste

    Alexv ha scritto:


    Premetto che dal post e dalle struct che hai creato, ho paura che tu non abbia ben capito la traccia del compito. Si parla di liste, non di array, e non hai usato la ricorsione.
    Tornando alla printf, per caso il costrutto case che hai postato si trova all'interno di un qualche ciclo e l'hai eseguito più volte? Se è così, il consiglio (valido in generale) è di inizializzare la variabile di controllo "flag" prima di ogni ciclo while, visto che la usi, appunto, per i while.
    si vero ho aggiustato in realtà il programma deve fare:
    1.prendere il libro in prestito
    2. restituire un libro
    3. Esegui richiesta\n (accetta o rifiuta)
    4. Per uscire.
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    #define MAXLEN 20
     
    /* Creazione di un array di struct libro contenente 5 campi*/
     
    struct libro{
    char titolo[MAXLEN];
    char nome_autori[MAXLEN];
    int codice_identificativo;
    int prezzo_di_prestito;
    int status; /* Status indica se il libro è presente(1) oppure è in prestito(0)*/
    };
    typedef struct libro Libro;
     /*La typedef permetterà di creare un array di struct nel corpo nel main attraverso cui inserire dei
     libri con le caratteristiche descritte sopra nella struct*/
    
    int main ()
    {
     
     
    int scelta; /*Questa variabile sarà utilizzata nella switch per decidere che cosa fare...*/
    int i,max; /* Variabili utilizzate per inserire un nuovo libro nell'archivio */
    int flag=2;
    char titolo_richiesto [MAXLEN]; /* Le variabili flag e titolo_richiesto sono utilizzate per richiedere un libro tramite il codice */
    int cod_id; /* Variabile utilizzata per richiedere un libro tramite il codice*/
    int id; /* Variabile utilizzata per restituire un libro tramite codice*/
    char nome;
    char matricola;
     
    /* Inizializzazione della libreria */
    Libro libreria [] =
    {
    {"Il signore degli anelli","James Redfield","Silvestrone",5,1,1},
    {"Harry Potter","Paulo Coelho",7,1,2},
    {"La bibbia","Marco Bianchi",8,0,3},
    {"Piccole donne","Piero Mozzi",60,0,4},
    {"Guarnizione","Napoleton Hill",1,0,5},
    {"Il nome della rosa","Louise",10,1,6},
    {"Via col vento","Jerry Ford",3,1,7},
    {"Odissea","Rhonda Bryne","Galano","Loius Scott","Trent",40,1,8},
    {"Cuore","Fabio Marchesi",12,1,9},
    {"Malavoglia","Valeria Soglia",4,0,10},
    {"Siddharta","Still",2,1,11},
    {"Lolita","Moccia","Crail Wilcox",12,0,12},
    {"Amabili resti","Wagner","Pone Raffy",35,1,13},
    {"Sulla strada","Boldi",1,1,14},
    {"Possession","Esposito Faby",25,1,15},
    {"Germinale","Fabio Beatrice",10,0,16},
    {"Il piccolo principe","Siani",24,1,17},
    {"Un uomo","Finucci Genny",14,1,18},
    {"Amleto","Ohls","Ylenia Star",23,0,19}
    };
     
     
    /* Inizializzazione biblioteca */
    do
    {
        printf("* * * * * * * * * * * * * * * * * * * * * * *\nBenvenuto nel programma di gestione biblioteca\n* * * * * * * * * * * * * * * * * * * * * * *\n");
       
        printf("Inserisci nome Studente:\n");
        scanf("%s", &nome);
        printf("Inserisci matricola studente:\n");
        scanf("%s", &matricola);
        
        printf("Premere:\n 1. Richiedere libro tramite codice\n 2. Restituire un libro tramite codice\n 3. Esegui richiesta\n 4. Per uscire.\n");
    
        printf("Inserisci il numero dell'operazione che vuoi effettuare:\n");
        scanf("%d",&scelta); /*Viene inserito nella variabile var il numero inserito dall'utente e di conseguenza inserito nel ciclo Switch*/
    
    switch (scelta) /* Creo uno switch con 5 case, uno per ogni possibile scelta */
    {
     
    case 1: /* Se l'utente preme il tasto 2 vuole richjedere un libro tramite il codice*/
            i=0;
            printf("Inserire il codice identificativo del libro da richiedere: \n");
            scanf("%d",&cod_id);
            while(flag!=0 && i<19){
            if(cod_id==libreria[i].codice_identificativo){
            flag=0;
            if(libreria[i].status==1){
            printf("\nIl libro e' presente nell'archivio ed e' disponibile.\n");
                libreria[i].status=0;
            printf("\nSuddetto libro le e' appena stato ceduto in prestito: %s.\nArrivederci e Grazie!\n", libreria[i].titolo);}
            else{
            printf("\nIl libro e' presente nell'archivio ma attualmente e' in prestito\n");}
            }
            else{
            i=i+1;}}
            if(flag!=0){
            printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!\n");}
            break;
             
    case 2 : /* Case costruito per restituire un libro tramite codice*/
     
      i=0;
     printf("Inserire il codice identificativo del libro da restituire: \n");
    scanf("%d",&id);
       while(flag!=0 && i<19){
    if(id==libreria[i].codice_identificativo){
    flag=0;
    if(libreria[i].status==1){
    printf("\nErrore: Il libro e' gia' disponibile.\nArrivederci e Grazie.\n");}
    else{
    libreria[i].status=1;
    printf("\nSuddetto libro e' appena stato restituito: %s\nLa ringraziamo per la serieta'. Arrivederci!\n",libreria[i].titolo);}
    }
    else{
    i=i+1;}}
    if(flag!=0){
    printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!");}
    break;
     
    
    case 4 : /*Se l'utente vuole uscire dalla biblioteca*/
       printf("Grazie per aver scelto il servizio di gestione della biblioteca, torna a trovarci!\n");
        break;
    
    
    
    default: /*Se l'utente sbaglia ad inserire il numero*/
    printf("Questo tasto non consente di effetuare scelte! Riprova!\n");break;
    
    
    } /*Fine switch*/
    } /*Fine do*/
      while (scelta<4);
      
      } /*Fine main*/
    
        
    però vorrei farlo in modo ricorsivo ed ho dei problemi con il case 1,2,3.Potresti aiutarmi a completare ovviamente non facendoli voi, ed inoltre se voglio inserire i libri non nel mai come posso fare?
    grazie in anticipo
  • Re: Liste

    Un thread per volta, per favore.
    Ti scrivo una versione funzionante del secondo che hai postato, perché si tratta solo di errori sintattici (indici mancanti, errori nell'inizializzare il vettore, mancata assegnazione dello status a 0 quando presti un libro). Non ho ben capito cosa voglia dire il punto 3, quindi l'ho lasciato vuoto.
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #define MAXLEN 100
    /* Creazione di un array di struct libro contenente 5 campi*/
    
    struct libro {
    	char titolo[100];
    	char nome_autori[100];
    	int codice_identificativo;
    	int prezzo_di_prestito;
    	int status; /* Status indica se il libro è presente(1) oppure è in prestito(0)*/
    	//struct libro* next;
    };
    typedef struct libro Libro;
    
    int main()
    {
    
    	int scelta; /*Variabile di controllo dello switch*/
    	int i;/* Variabili utilizzate per inserire un nuovo libro nell'archivio*/
    	//char titolo_richiesto[30]; /* Le variabili flag e titolo_richiesto sono utilizzate per richiedere un libro tramite il codice */
    	//int cod_id; /* Variabile utilizzata per richiedere un libro tramite il codice*/
    	int id; /* Variabile utilizzata per restituire un libro tramite codice*/
    	int trovato;
    	/* Inizializzazione della libreria */
    	Libro libreria[] =
    	{
    	{"Il signore degli anelli","James Redfield,Silvestrone",5,1,1,},
    	{"Harry Potter","Paulo Coelho",7,1,1},
    	{"La bibbia","Marco Bianchi",8,0,1},
    	{"Piccole donne","Piero Mozzi",60,0,1},
    	{"Guarnizione","Napoleton Hill",1,0,1},
    	{"Il nome della rosa","Louise",10,1,1},
    	{"Via col vento","Jerry Ford",3,1,1},
    	{"Odissea","Rhonda Bryne, Galano,Loius Scott,Trent",40,1,1},
    	{"Cuore","Fabio Marchesi",12,1,1},
    	{"Malavoglia","Valeria Soglia",4,0,1},
    	{"Siddharta" ,"Still",2,1,11},
    	{"Lolita","Moccia Crail Wilcox",12,0,1},
    	{"Amabili resti", "Wagner Pone Raffy",35,1,1},
    	{"Sulla strada","Boldi",1,1,1},
    	{"Possession","Esposito Faby",25,1,1},
    	};
    	do {
    		/* Inizializzazione biblioteca */
    		printf("* * * * * * * * * * * * * * * * * * * * * * *\nBenvenuto nel programma di gestione biblioteca\n* * * * * * * * * * * * * * * * * * * * * * *\n");
    		printf("Premere:\n 1. Per richiedere libro tramite titolo\n 2. Per restituire un libro\n 3. Esegui richiesta\n 4. Per uscire.\n");
    
    		printf("Inserisci il nuemro dell'operazione che vuoi effettuare:\n");
    		scanf("%d", &scelta); /*Viene inserito nella variabile var il numero inserito dall'utente e di conseguenza inserito nel ciclo Switch*/
    		switch (scelta) /* Creo uno switch con 5 case, uno per ogni possibile scelta */
    		{
    		case 1: /* Se l'utente preme il tasto 2 vuole richiedere un libro tramite il titolo*/
    			printf("\nInserisci il codice identificativo del libro da richidere:\n");
    			scanf("%d", &id);
    			trovato = 0;
    			for (i = 0; i <= 15 && trovato == 0; i++)
    			{
    				if (id == libreria[i].codice_identificativo)
    				{
    					trovato = 1;
    
    					if (libreria[i].status == 1) {
    						printf("\nCome da lei richiesto,%s le sara' dato in prestito!\n", libreria[i].titolo);
    						libreria[i].status = 0;
    					}
    					else if (libreria[i].status == 0)
    					{
    						printf("\nCi dispiace, %s, al momento e' in prestito.\n", libreria[i].titolo);
    					}
    				}
    			}
    			if (trovato == 0)
    			{
    				printf("\nIl libro non e' presente nei nostri archivi.\n");
    			}
    			break;
    		case 2: /* Case costruito per restituire un libro tramite codice*/
    			i = 0;
    			printf("Inserire il codice identificativo del libro da restituire: \n");
    			scanf("%d", &id);
    			trovato = 0;
    			while (trovato == 0 && i < 15) {
    				if (id == libreria[i].codice_identificativo) {
    					trovato = 1;
    					if (libreria[i].status == 1) {
    						printf("\nErrore: Il libro e' gia' disponibile.\nArrivederci e Grazie.\n");
    					}
    					else {
    						libreria[i].status = 1;
    						printf("\nSuddetto libro e' appena stato restituito: %s\nLa ringraziamo per la serieta'. Arrivederci!\n", libreria[i].titolo);
    					}
    				}
    				else {
    					i = i + 1;
    				}
    			}
    			if (trovato == 0) {
    				printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!");
    			}
    			break;
    
    
    		case 3: /*esegui richiesta da parte dello studente */
    			break;
    
    		case 4:
    
    			printf("Grazie per aver scelto il servizio di gestione della biblioteca, torna a trovarci!\n");
    			break;
    
    		default: /*Se l'utente sbaglia ad inserire il numero*/
    			printf("Questo tasto non consente di effetuare scelte! Riprova!\n"); break;
    
    		} /* Fine switch */
    	} /* Fine do */
    	while (scelta != 4);
    	return 0;
    } //fine main
    
    Questa però è la versione che hai fatto tu in precedenza, senza liste e ricorsione, ma con un vettore statico. Per aiutarti a farlo con le liste, dovresti far sapere se hai familiarità con queste e iniziare a scrivere tu qualcosa, altrimenti dovremmo fare il programma da capo.
  • Re: Liste

    Alexv ha scritto:


    Un thread per volta, per favore.
    Ti scrivo una versione funzionante del secondo che hai postato, perché si tratta solo di errori sintattici (indici mancanti, errori nell'inizializzare il vettore, mancata assegnazione dello status a 0 quando presti un libro). Non ho ben capito cosa voglia dire il punto 3, quindi l'ho lasciato vuoto.
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #define MAXLEN 100
    /* Creazione di un array di struct libro contenente 5 campi*/
    
    struct libro {
    	char titolo[100];
    	char nome_autori[100];
    	int codice_identificativo;
    	int prezzo_di_prestito;
    	int status; /* Status indica se il libro è presente(1) oppure è in prestito(0)*/
    	//struct libro* next;
    };
    typedef struct libro Libro;
    
    int main()
    {
    
    	int scelta; /*Variabile di controllo dello switch*/
    	int i;/* Variabili utilizzate per inserire un nuovo libro nell'archivio*/
    	//char titolo_richiesto[30]; /* Le variabili flag e titolo_richiesto sono utilizzate per richiedere un libro tramite il codice */
    	//int cod_id; /* Variabile utilizzata per richiedere un libro tramite il codice*/
    	int id; /* Variabile utilizzata per restituire un libro tramite codice*/
    	int trovato;
    	/* Inizializzazione della libreria */
    	Libro libreria[] =
    	{
    	{"Il signore degli anelli","James Redfield,Silvestrone",5,1,1,},
    	{"Harry Potter","Paulo Coelho",7,1,1},
    	{"La bibbia","Marco Bianchi",8,0,1},
    	{"Piccole donne","Piero Mozzi",60,0,1},
    	{"Guarnizione","Napoleton Hill",1,0,1},
    	{"Il nome della rosa","Louise",10,1,1},
    	{"Via col vento","Jerry Ford",3,1,1},
    	{"Odissea","Rhonda Bryne, Galano,Loius Scott,Trent",40,1,1},
    	{"Cuore","Fabio Marchesi",12,1,1},
    	{"Malavoglia","Valeria Soglia",4,0,1},
    	{"Siddharta" ,"Still",2,1,11},
    	{"Lolita","Moccia Crail Wilcox",12,0,1},
    	{"Amabili resti", "Wagner Pone Raffy",35,1,1},
    	{"Sulla strada","Boldi",1,1,1},
    	{"Possession","Esposito Faby",25,1,1},
    	};
    	do {
    		/* Inizializzazione biblioteca */
    		printf("* * * * * * * * * * * * * * * * * * * * * * *\nBenvenuto nel programma di gestione biblioteca\n* * * * * * * * * * * * * * * * * * * * * * *\n");
    		printf("Premere:\n 1. Per richiedere libro tramite titolo\n 2. Per restituire un libro\n 3. Esegui richiesta\n 4. Per uscire.\n");
    
    		printf("Inserisci il nuemro dell'operazione che vuoi effettuare:\n");
    		scanf("%d", &scelta); /*Viene inserito nella variabile var il numero inserito dall'utente e di conseguenza inserito nel ciclo Switch*/
    		switch (scelta) /* Creo uno switch con 5 case, uno per ogni possibile scelta */
    		{
    		case 1: /* Se l'utente preme il tasto 2 vuole richiedere un libro tramite il titolo*/
    			printf("\nInserisci il codice identificativo del libro da richidere:\n");
    			scanf("%d", &id);
    			trovato = 0;
    			for (i = 0; i <= 15 && trovato == 0; i++)
    			{
    				if (id == libreria[i].codice_identificativo)
    				{
    					trovato = 1;
    
    					if (libreria[i].status == 1) {
    						printf("\nCome da lei richiesto,%s le sara' dato in prestito!\n", libreria[i].titolo);
    						libreria[i].status = 0;
    					}
    					else if (libreria[i].status == 0)
    					{
    						printf("\nCi dispiace, %s, al momento e' in prestito.\n", libreria[i].titolo);
    					}
    				}
    			}
    			if (trovato == 0)
    			{
    				printf("\nIl libro non e' presente nei nostri archivi.\n");
    			}
    			break;
    		case 2: /* Case costruito per restituire un libro tramite codice*/
    			i = 0;
    			printf("Inserire il codice identificativo del libro da restituire: \n");
    			scanf("%d", &id);
    			trovato = 0;
    			while (trovato == 0 && i < 15) {
    				if (id == libreria[i].codice_identificativo) {
    					trovato = 1;
    					if (libreria[i].status == 1) {
    						printf("\nErrore: Il libro e' gia' disponibile.\nArrivederci e Grazie.\n");
    					}
    					else {
    						libreria[i].status = 1;
    						printf("\nSuddetto libro e' appena stato restituito: %s\nLa ringraziamo per la serieta'. Arrivederci!\n", libreria[i].titolo);
    					}
    				}
    				else {
    					i = i + 1;
    				}
    			}
    			if (trovato == 0) {
    				printf("\nL'archivio non dispone di alcun libro avente questo codice identificativo\nArrivederci e Grazie!");
    			}
    			break;
    
    
    		case 3: /*esegui richiesta da parte dello studente */
    			break;
    
    		case 4:
    
    			printf("Grazie per aver scelto il servizio di gestione della biblioteca, torna a trovarci!\n");
    			break;
    
    		default: /*Se l'utente sbaglia ad inserire il numero*/
    			printf("Questo tasto non consente di effetuare scelte! Riprova!\n"); break;
    
    		} /* Fine switch */
    	} /* Fine do */
    	while (scelta != 4);
    	system("pause");
    	return 0;
    } //fine main
    
    Questa però è la versione che hai fatto tu in precedenza, senza liste e ricorsione, ma con un vettore statico. Per aiutarti a farlo con le liste, dovresti far sapere se hai familiarità con queste e iniziare a scrivere tu qualcosa, altrimenti dovremmo fare il programma da capo.
    grazie mille il terzo consiste nel fatto che una richiesta può essere accettata o rifiutata ma il codice sopra non è quello che ho messo io?
  • Re: Liste

    No, questo funziona. Adesso il programma non si chiude più dopo la prima operazione, in più c'era qualche errore nel tuo, per esempio se lo status può essere solo 1 o 0, non puoi inizializzare l'elenco con numeri diversi. Gli altri errori li ho elencati sopra. Mi spiace, ma ancora non ho capito il punto 3 (che tipo di richiesta?).
  • Re: Liste

    Alexv ha scritto:


    No, questo funziona. Adesso il programma non si chiude più dopo la prima operazione, in più c'era qualche errore nel tuo, per esempio se lo status può essere solo 1 o 0, non puoi inizializzare l'elenco con numeri diversi. Gli altri errori li ho elencati sopra. Mi spiace, ma ancora non ho capito il punto 3 (che tipo di richiesta?).
    il casa 2 dove restituisco il libro con il codice dopo indicato il codice non va avanti...
  • Re: Liste

    Il case 2 funziona ... anche se l'italiano è un po' traballante "Suddetto libro ..." ...
  • Re: Liste

    Alexv ha scritto:


    No, questo funziona. Adesso il programma non si chiude più dopo la prima operazione, in più c'era qualche errore nel tuo, per esempio se lo status può essere solo 1 o 0, non puoi inizializzare l'elenco con numeri diversi. Gli altri errori li ho elencati sopra. Mi spiace, ma ancora non ho capito il punto 3 (che tipo di richiesta?).
    il case 2 in modo ricorsivo come potrei realizzarlo?
  • Re: Liste

    La parte del case 2 fa una ricerca sequenziale nell'array. Devi implementare una funzione di

    ricerca ricorsiva
  • Re: Liste

    oregon ha scritto:


    La parte del case 2 fa una ricerca sequenziale nell'array. Devi implementare una funzione di

    ricerca ricorsiva
    alla fine ho usato il file con la funzione iterativa per stampare il file cioè questa:
    
      case 1: /*stampa lista*/
                 fd=fopen("listaLibri.txt", "r");
                       if( fd==NULL ) {
                         perror("Errore in apertura del file");
                         exit(1);
                       }
    
                          /* lettura linea per linea */
                       while(1) {
                         res=fgets(libreria, 15, fd);
                         if(res==NULL)
                           break;
    
                         if( libreria[0] != '#' )
                           printf("%s", libreria);
                       }
    
                           /* chiude il file */
                       fclose(fd);
                 return 0;
    
    
    in realtà devo usare le liste
  • Re: Liste

    Ma se devi usare la lista con i dati in memoria che cosa c'entra il file?

    Penso che tu non abbia capito nulla delle liste.
  • Re: Liste

    oregon ha scritto:


    Ma se devi usare la lista con i dati in memoria che cosa c'entra il file?

    Penso che tu non abbia capito nulla delle liste.
    no io non so come inserire i 15 libri perché non posso inserirli a mano con una funzione di inserisci in testa
  • Re: Liste

    Stai facendo una ENORME confusione ad ogni post.
    Mi dispiace ma è questa la situazione. Se non si studiano le cose prima è assolutamente INUTILE mettersi alla tastiera e scrivere codice a caso.

    Cambi ogni volta quello che vuoi o devi fare perché non hai nessuna idea di ciò che fai dato che non l'hai STUDIATO.

    Parli di case 2 e mostri il codice del case 1. Parli di leggere un file e visualizzarlo ma devi visualizzare il contenuto della lista. Subito dopo devi leggere il file ed inserire i dati nella lista .... insomma NON SI CAPISCE nulla.
  • Re: Liste

    Lasciando perdere il file, sapresti copiare anche un solo elemento del vettore di libri del codice di sopra all'interno della lista?
Devi accedere o registrarti per scrivere nel forum
14 risposte