Buongiorno devo fare un progetto con i grafi in c ma ho un problema non riesco a collegare l'amministratore con l'utente in pratica l'amministratore può inserire città o eliminarle ma se tipo inserisco la città poi se rifaccio partire il programma questa città non rimane memorizzata nell'elenco delle città cosi anche per la rimozione potete aiutarmi? posto il codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "Graph.h"
#include "List.h"
#include "Menu.h"
#include <string.h>
#define MAXCITTA 7
#define MAXEMAILAMMINISTRATORE 20
#define MAXEMAILPWDADMINISTRATOR 7
#define MAXDELETECITTA 7
#define MAXTRATTE 40
#define MAXDELETETRATTE 40
#define MAXEMAIL 20
#define MAXPWD 7
#define MAXCITTAPARTENZA 30
int main() {
int sceltaUt2;
int sceltaUt1;
int scelta;
int sceltaUt;
int sceltaAmministratore;
char cittaPartenza[MAXCITTAPARTENZA];
char email[MAXEMAIL];
char pwd[MAXPWD];
char deleteCity[MAXDELETECITTA];
char city[MAXCITTA];
char emailAdministrator[MAXEMAILAMMINISTRATORE];
char pwdAdministrator[MAXEMAILPWDADMINISTRATOR];
Graph g = NULL;
//inizializzo matrice con città
char** nomiCitta = (char**) calloc(20, sizeof(char*));
for(int i=0; i<20; i++) nomiCitta[i] = (char*) calloc(256, sizeof(char));
strcpy(nomiCitta[0], "Napoli");
strcpy(nomiCitta[1], "Roma");
strcpy(nomiCitta[2], "Milano");
strcpy(nomiCitta[3], "Torino");
strcpy(nomiCitta[4], "Salerno");
strcpy(nomiCitta[5], "Praga");
strcpy(nomiCitta[6], "Bari");
strcpy(nomiCitta[7], "Londra");
strcpy(nomiCitta[8], "Cagliari");
strcpy(nomiCitta[9], "Venezia");
strcpy(nomiCitta[10], "Calabria");
strcpy(nomiCitta[11], "Firenze");
strcpy(nomiCitta[12], "Palermo");
strcpy(nomiCitta[13], "Catania");
strcpy(nomiCitta[14], "Parma");
strcpy(nomiCitta[15], "Verona");
strcpy(nomiCitta[16], "Bergamo");
strcpy(nomiCitta[17], "Bolzano");
strcpy(nomiCitta[18], "Perugia");
strcpy(nomiCitta[19], "Taranto");
g = initGraph(20,nomiCitta); //popolo grafo
addEdge(g, getCityIndexByName(g, "Milano"), getCityIndexByName(g, "Roma"), 30, 4.78);
addEdge(g, getCityIndexByName(g, "Napoli"), getCityIndexByName(g, "Milano"),2 ,7.1);
addEdge(g, getCityIndexByName(g, "Roma"), getCityIndexByName(g, "Milano"),3, 15.3);
addEdge(g, getCityIndexByName(g, "Torino"), getCityIndexByName(g, "Salerno"), 4 , 17.1);
addEdge(g, getCityIndexByName(g, "Verona"), getCityIndexByName(g, "Praga"), 4 , 40.5);
addEdge(g, getCityIndexByName(g, "Praga"), getCityIndexByName(g, "Salerno"), 5, 38.2);
addEdge(g, getCityIndexByName(g, "Salerno"), getCityIndexByName(g, "Praga"), 7, 21.3);
addEdge(g, getCityIndexByName(g, "Firenze"), getCityIndexByName(g, "Londra"), 9, 10.1);
addEdge(g, getCityIndexByName(g, "Bari"), getCityIndexByName(g, "Perugia"), 10, 42.2);
addEdge(g, getCityIndexByName(g, "Venezia"), getCityIndexByName(g, "Verona"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Calabria"), getCityIndexByName(g, "Bergamo"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Cagliari"), getCityIndexByName(g, "Verona"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Palermo"), getCityIndexByName(g, "Milano"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Catania"), getCityIndexByName(g, "Palermo"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Parma"), getCityIndexByName(g, "Verona"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Londra"), getCityIndexByName(g, "Bolzano"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Bergamo"), getCityIndexByName(g, "Perugia"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Bolzano"), getCityIndexByName(g, "Taranto"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Perugia"), getCityIndexByName(g, "Parma"),4, 46.4);
addEdge(g, getCityIndexByName(g, "Taranto"), getCityIndexByName(g, "Milano"),4, 46.4);
while((scelta = menu())){
switch (scelta)
{
case 1:
printf("Insert e-mail: ");
scanf("%s", emailAdministrator);
printf("Insert password (max 7 characters): ");
scanf("%s", pwdAdministrator);
while((sceltaAmministratore = menuAmministratore())){
switch (sceltaAmministratore) {
case 1://stampa archivo con città
printGraph(g);
break;
case 2://inserisci città
printf("Insert the city you want to enter:");
scanf("%s", city);
addNode(g,city);
printf("~Operation successfully performed~");
break;
case 3://cancella città
printf("Insert the city to be deleted:\n");
scanf("%s", deleteCity);
removeNodeByString(g,deleteCity);
printf("~\nOperation successfully performed~\n");
break;
case 4: /*Se l'amministatore vuole uscire*/
printf("Thank you goodbye!\n");
return 0;
break;
default: /*Se l'utente sbaglia ad inserire il numero*/
printf("This button does not allow you to make choices! Try again!\n");
break;
}
}
return 0;
break;
case 2:
while((sceltaUt = menuUtente())){
switch (sceltaUt) {
case 1:
printf("Inserisci l'email: ");
scanf ("%s", email);
printf("Inserisci password(max 7 caratteri): ");
scanf("%s", pwd);
printf("\niscrizione effettuata con successo\n");
break;
case 2:
printf("Inserisci l'email: ");
scanf ("%s", email);
printf("Inserisci password(max 7 caratteri): ");
scanf("%s", pwd);
printf("\naccesso effettuata con successo\n");
while((sceltaUt1 = menuUtente1())){
switch (sceltaUt1) {
case 1://visualizza prenotazioni attive
break;
case 2://effettua prenotazione
while((sceltaUt2 = menuUtente2())){
switch (sceltaUt2) {
case 1://visualizza tratta più breve
break;
case 2://visualizza meta più economica
break;
case 3://visualizza meta più economica
break;
case 4://visualizza meta più gettonata
printf("\nEnter city of start: ");
scanf("%s", cittaPartenza);
srand( (unsigned int) time(NULL) );
printf("\n The most popular destination is the following: ");
printf("%s\n", nomiCitta[rand()%9]);
break;
case 5: /*Se l'amministatore vuole uscire*/
printf("Thank you goodbye!\n");
return 0;
break;
default: /*Se l'utente sbaglia ad inserire il numero*/
printf("This button does not allow you to make choices! Try again!\n");
break;
}
}
return 0;
break;
}
}
}
}
case 3: /*Se l'utente vuole uscire*/
printf("Thank you for choosing the flight booking management service, come back to visit us!\n");
return 0;
break;
default: /*Se l'utente sbaglia ad inserire il numero*/
printf("This button does not allow you to make choices! Try again!\n");
break;
} /*Fine switch*/
} /*Fine do*/
return 0;
} /*Fine main*/