BUONGIORNO..sto realizzando un progetto in c che gestisce le prenotazioni dei voli ma la funzione random non mi funziona sapete aiutarmi a capire perche?
C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <string.h>
#include <stdbool.h>
#include "Graph.h"
#include "List.h"
#include "Queue.h"
#include "Menu.h"
#include "ListPrenotazioni.h"
#include "ListUtente.h"
#define MAXDELETECITTA 7
#define BUFFER_SIZE 256
#define randomize srand(time(NULL))
#define random(x) rand()%x
int main(int argc, char** argv){
char cittaPartenza[10];
char cod_id[7];
char deleteCity[MAXDELETECITTA];
char city[10];
int n=1,m;
char email[100];
char pwd[7];
ListPrenotazioni L = NULL;//per listPrenotazioni
ListUtente l = NULL;//per listUtente
randomize;
Graph g = populateGraph();
int mostPopularDestination = random(g->nodes_count);
char buffer_email[BUFFER_SIZE];
char buffer_password[BUFFER_SIZE];
// qui va inserita la DS per contenere gli utenti registrati, e la DS per contenere i voli prenotati da un utente
int loginChoice;
int adminChoice;
int userChoice;
int user1Choice;
int user2Choice;
bool continueLoop;
FILE *fp;
struct prenotazione *lista=NULL;
fp = fopen("prova.txt","r");
if (fp == NULL) gestioneErrore();
lista = leggiFile(fp, lista);
fclose(fp);
do{
loginChoice = displayLoginMenu();
if(loginChoice == 0){ //azioni amministratore
continueLoop = true;
printf("Insert e-mail: ");
scanf("%s", buffer_email);
printf("Insert password (max 7 characters): ");
scanf("%s", buffer_password);
/*
Se l'admin non e' presente nella data structure degli admin --> continueLoop = false
In questo modo torna al menu di login e non vengono eseguite operazioni
*/
while(continueLoop){
adminChoice = displayAdminMenu();
switch (adminChoice){
case 0: // exit / logout
printf("admin logout\n");
continueLoop = false;
break;
case 1: // stampa destinazioni
printf("\nThe destinations and the routes are as follows:\n");
printGraph(g);
break;
case 2: // inserisci destinazioni
printf("Insert the city you want to enter(N.B. first capital letter):");
scanf("%s", city);
addNode(g,city);
// addNode(g, getCityName("new destination"));
printf("\n~Operation successfully performed~\n");
break;
case 3: // cancella destinazioni
printf("\nInsert the city to be deleted(N.B. first capital letter):\n");
scanf("%s", deleteCity);
// removeNodeByIndex(g, getCityIndex(g, "target city"));
removeNodeByString(g,deleteCity);
printf("\n ~Operation successfully performed~ \n");
break;
default: /*Se l'utente sbaglia ad inserire il numero*/
printf("This button does not allow you to make choices! Try again!\n");
break;
}
}
}else if(loginChoice == 1){//azioni utenti
continueLoop = true;
while(continueLoop){
user1Choice = displayUserMenu1();
switch (user1Choice){
case 0: // exit / logout
printf("user logout\n");
continueLoop = false;
break;
case 1://effettuo iscrizione
for(int i=0; i<n; i++){
printf("\nInserti e-mail:\n");
scanf("%s",email);
printf("\nInsert password:\n");
scanf("%s",pwd);
l=insertTailUtente(l,email,pwd);
}
break;
case 2://effettuo accesso
printf("\nInsert e-mail:\n");
scanf("%s",email);
printf("\nInsert password:\n");
scanf("%s",pwd);
if(loginChoice == 1){//azioni utenti
continueLoop = true;
while (continueLoop){
userChoice = displayUserMenu();
switch (userChoice){
case 0:
continueLoop = false;
break;
case 1: // exit/logout
printListPrenotazione(lista);
break;
case 2: // effettua prenotazione
if(loginChoice == 1){//azioni utenti
continueLoop = true;
while (continueLoop){
user2Choice = displayUserMenu2();
switch (user2Choice){
case 0:
continueLoop = false;
break;
case 1://Prenotazione basata sulle rotte più economiche inserendo la città e la destinazione di partenza
break;
case 2://Prenotazione basata sui percorsi più brevi inserendo la città di partenza e destinazione
break;
case 3://Prenotazione basata sulla destinazione più economica inserendo solo la città di partenza
break;
case 4://Prenotazione basata sulla destinazione più popolare inserendo solo la città di partenza
printf("\nEnter city of start: ");
scanf("%s", cittaPartenza);
printf("\n The most popular destination is the following:\n");
mostPopularDestination = random(g->nodes_count);
printf("Enter the number of reservations you wish to make\n");
scanf("%d",&m);
for (int i=0; i<m; i++){
printf("\nInsert citta:\n");
scanf("%s",city);
printf("\nInsert id:\n");
scanf("%s",cod_id);
L = insertTailPrenotazioni(L,city,cod_id);
}
break;
}
}
}
case 5: // vedi prenotazioni
printListPrenotazioni(L);
break;
//case 3: // vedi prenotazioni
// printListPrenotazioni(L);
// break;
}
}
}
}
}
}
else if(loginChoice == 2){
printf("Thank you goodbye!\n");
}else{
printf("This button does not allow you to make choices! Try again!\n");
}
}while(loginChoice != 2);
return 0;
}