Buongiorno a tutti,
sto avendo problemi di funzionamento nella funzione "void verifica_id_viaggio".
Questa funzione viene chiamata in "void inserimento_prenotazione" che ha lo scopo di avvalorare una struct. La funzione "void verifica_id_viaggio" deve verificare che l'ID prelevato nella funzione "void inserimento_prenotazione" esista in tutte le struct caricate dall'utente.
Il problema è che la verifica non riesce nè con un ID esistente nè inesistente.
Pubblico l'intero codice.
Chi mi può aiutare? Sto tribolando da 3 giorni su questa cosa
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define SIZE 50
//Tabella VIAGGI
typedef struct
{
char id[SIZE];
char dest[SIZE];
int cat;
float prezzo;
int posti_disp;
int posti_occ;
} viaggi;
//Tabella PRENOTAZIONI
typedef struct
{
char id[SIZE];
char id_viaggio[SIZE];
int posti;
} prenotazioni;
void inserimento_viaggio(int numviaggi);
void inserimento_prenotazione(int numprenotazioni, int numviaggi);
void inserimento_categoria(int n);
void verifica_id_viaggio(char ver_viaggio[SIZE], int numviaggi);
void stampa_dati(int numviaggi);
int main()
{
int num_viaggi;
int num_prenotazioni;
puts("Inserire il numero di VIAGGI da caricare in tabella");
scanf("%d", &num_viaggi);
inserimento_viaggio(num_viaggi);
stampa_dati(num_viaggi);
puts("\nInserire il numero di PRENOTAZIONI da caricare in tabella");
scanf("%d", &num_prenotazioni);
// stampa_dati(num_viaggi);
inserimento_prenotazione(num_prenotazioni, num_viaggi);
}
void inserimento_viaggio(int numviaggi)
{
viaggi viaggio[SIZE];
int i=0;
puts("++++++ INSERIMENTO VIAGGI ++++++");
// printf("DIAGNOSTICA num_viaggi %d\n", numviaggi);
for(i=0; i<numviaggi; i++)
{
// puts("DIAGNOSTICA SEI IN FOR\n");
puts("\ninserire ID viaggio");
scanf("%s", viaggio[i].id);
// printf("ID VIAGGIO: %s\n", viaggio[i].id);
puts("\ninserire destinazione");
scanf("%s", viaggio[i].dest);
// printf("DESTINAZIONE: %s\n", viaggio[i].dest);
inserimento_categoria(i);
puts("\ninserire prezzo a persona");
scanf("%f", &viaggio[i].prezzo);
// printf("PREZZO A PERSONA: %.2f\n", viaggio[i].prezzo);
puts("\ninserire posti DISPONIBILI");
scanf("%d", &viaggio[i].posti_disp);
// printf("POSTI DISPONIBILI: %d\n", viaggio[i].posti_disp);
puts("\ninserire posti OCCUPATI");
scanf("%d", &viaggio[i].posti_occ);
// printf("POSTI OCCUPATI: %d\n", viaggio[i].posti_occ);
}
puts("++++++ INSERIMENTO VIAGGI CONCLUSO ++++++\n\n");
}
void inserimento_categoria(int i)
{
viaggi viaggio[SIZE];
// puts("DIAGNOSTICA SEI IN INSERIMENTO CATEGORIA");
// printf("DIAGNOSTICA INDICE FOR %d\n", i);
puts("\ninserire il numero relativo alla categoria");
do
{
puts("1. Giovani\n2. Romantico\n3. Culturale\n4. Religioso");
scanf("%d", &viaggio[i].cat);
// printf("DIAGNOSTICA: CATEGORIA INSERITA: %d\n", viaggio[i].cat);
}
while(viaggio[i].cat<1 || viaggio[i].cat>4);
}
void inserimento_prenotazione(int numprenotazioni, int numviaggi) //DEVI INSERIRE VERIFICA ESISTENZA
{
prenotazioni prenotazione[SIZE];
viaggi viaggio[SIZE];
int i=0;
char ver_id_viaggio[SIZE];
stampa_dati(numviaggi);
puts("\n++++++ INSERIMENTO PRENOTAZIONI ++++++");
printf("DIAGNOSTICA numprenotazioni %d\n", numprenotazioni);
printf("DIAGNOSTICA numviaggi %d\n", numviaggi);
for(i=0; i<numprenotazioni; i++)
{
// puts("DIAGNOSTICA SEI IN FOR\n");
puts("\ninserire ID prenotazione");
scanf("%s", prenotazione[i].id);
printf("ID PRENOTAZIONE: %s\n", prenotazione[i].id);
puts("\ninserire ID del viaggio da prenotare");
scanf("%s", ver_id_viaggio);
printf("ID VIAGGIO DA PRENOTARE: %s\n", ver_id_viaggio);
////////////////////////////////////////////////
verifica_id_viaggio(ver_id_viaggio, numviaggi); // VERIFICA ESISTENZA DEL VIAGGIO CERCANDO L'ID
////////////////////////////////////////////////
puts("\ninserire posti da prenotare");
scanf("%d", &prenotazione[i].posti);
printf("POSTI PRENOTATI: %d\n", prenotazione[i].posti);
}
puts("\n++++++ INSERIMENTO PRENOTAZIONI CONCLUSO ++++++");
}
void verifica_id_viaggio(char ver_viaggio[SIZE], int numviaggi)
{
viaggi viaggio[SIZE];
printf("\nDIAGNOSTICA id del viaggio richiesto in F prenotazione %s\n", ver_viaggio);
printf("DIAGNOSTICA numero di cicli del for per la ricerca dei viaggi %d\n", numviaggi);
stampa_dati(numviaggi);
int i=0;
for(i=0; i<numviaggi; i++)
{
if(strcmp(ver_viaggio, viaggio[i].id)==0)
{
puts("Identificativo viaggio VALIDO");
strcpy(ver_viaggio, viaggio[i].id);
printf("DIAGNOSTICA id viaggio verificato: -->%s\n", viaggio[i].id);
}
else
{
puts("ERRORE VIAGGIO NON TROVATO");
}
}
}
void stampa_dati(int numviaggi)
{
viaggi viaggio[SIZE];
puts("\n>>>>>>>>>>>>>>>>>>>DIAGNOSTICA STAMPA TABELLA VIAGGIO<<<<<<<<<<<<<<<<<<<<");
int i=0;
for(i=0; i<numviaggi; i++)
{
printf("ID VIAGGIO: %s\n", viaggio[i].id);
printf("DESTINAZIONE: %s\n", viaggio[i].dest);
printf("PREZZO A PERSONA: %.2f\n", viaggio[i].prezzo);
printf("POSTI DISPONIBILI: %d\n", viaggio[i].posti_disp);
printf("POSTI OCCUPATI: %d\n", viaggio[i].posti_occ);
}
}