Salve, ho un problema e vorrei sapere come affrontarlo.
Nel seguente codice:
Devo implementare un archivio di utenti (nome...ecc.), ogni utente deve poter inserire un massaggio( devo usare una stringa e non posso utilizzare fopen/fclose…).
Come noterete nello switch devo anche poter dare la possibilità ad ogni utente di poter visualizzare tutti i messaggi di un utente e di eliminare un massaggio.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 120
#define LEN 100
typedef struct {
char nome[MAX];
char cognome[MAX];
char sesso[MAX];
int giorno;
char mese[MAX];
int anno;
} Utente;
typedef struct {
Utente elementi[LEN];
int num_utenti;
}Lista ;
typedef struct {
char autore[MAX];
char testo[MAX];
int mi_piace;
char destinatario[MAX];
} Messaggio;
int menu();
Lista Inserimento_Utente ();
void Stampa_Elenco (Lista utent);
Messaggio Inserimento_Messaggio (Lista utent);
int main()
{
int scelta;
Lista L;
while (scelta=menu()){ // Dopo che l'utente fa un'operazione questo permette di far comparire di nuovo il menu
switch(scelta){
case 1:
system ("CLS");
printf("***INSERIMENTO UTENTE***\n\n");
L=Inserimento_Utente();
printf("\n");
Stampa_Elenco(L);
system ("PAUSE");
break;
case 2:
system ("CLS");
printf("***INSERIMENTO MESSAGGIO***\n\n");
system ("PAUSE");
break;
case 3:
system ("CLS");
printf("***VISUALIZZAZIONE MESSAGGIO***\n\n");
system ("PAUSE");
break;
case 4:
system ("CLS");
printf("***ELIMINA MESSAGGIO***\n\n");
system ("PAUSE");
break;
case 0: return 0;
}
}
return 0;
}
int menu(){ //Funzione per il menu
int scelta;
printf("***GESTIONE UTENTE***\n");
printf("[1] Inserisci Utente\n");
printf("[2] Inserisci Messaggio\n");
printf("[3] Visualizza Tutti i Messaggi Utente\n");
printf("[4] Elimina Messaggio \n");
printf("[0] Esci\n\n");
printf(" Scelta: ");
scanf("%d",&scelta);
while (scelta<0 || scelta>4){ // controllo scelta
printf("Scelta non valida\n");
printf(" Scelta: ");
scanf("%d",&scelta);
return scelta;//Rifa l'operazione della scelta
}
return scelta;
system ("PAUSE");
}
Lista Inserimento_Utente(){
Lista utent;
int i;
printf("Quanti Utenti vuoi inserire? ");
scanf("%d",& utent.num_utenti);
fflush(stdin);
for(i=0;i<utent.num_utenti;i++){
printf("Inserisci Nome ");
gets(utent.elementi[i].nome);
printf("Inserisci Cognome ");
gets(utent.elementi[i].cognome);
printf("Inserisci Sesso ");
gets(utent.elementi[i].sesso);
printf("Inserisci Giorno ");
scanf("%d",& utent.elementi[i].giorno);
fflush(stdin);
printf("Inserisci Mese ");
gets(utent.elementi[i].mese);
printf("Inserisci Anno ");
scanf("%d",& utent.elementi[i].anno);
fflush(stdin);
}
return utent;
}
void Stampa_Elenco (Lista utent){
int i;
for (i=0;i<utent.num_utenti;i++){
printf("Utente n.%d\n",i+1); //Altrimenti stampa Utente n.0 invece di n.1
printf("Nome %s\n",utent.elementi[i].nome);
printf("Cognome %s\n",utent.elementi[i].cognome);
printf("Sesso %s\n",utent.elementi[i].sesso);
printf("Giorno %d\n",utent.elementi[i].giorno);
printf("Mese %s\n",utent.elementi[i].mese);
printf("Anno %d\n\n",utent.elementi[i].anno); // Doppio \n\n per stampa ordinata di più utenti
}
}
Messaggio Inserimento_Messaggio (Lista utent){
int i;
int esito;
printf("Vuoi inserire un messaggio? Digitare 1 per affermazione/ 0 per negazione \n");
scanf("%d",&esito);
if(esito==1){
printf("inserisci messaggio\n");
}
}
Sono bloccato al case 2 dello switch , vorrei implementare la funzione: Messaggio Inserimento_Messaggio (Lista utent).
Ho messo all'interno Lista utent per poter interagire con la lista utenti che sono stati inseriti.
Detto questo vorrei sapere come devo procedere per poter dare l'opportunità a ogni utente di poter inserire un messaggio, quindi suppongo che dovrei interagire sia con la struct messaggio che con la struct utente, purtroppo non ho trovato esempi simili e quindi non saprei come procedere.
Ci tengo a dire che il programma non è allo stato ottimale, però richiedo l'assistenza per il case 2.
Grazie a chi mi aiuterà e spero di aver esposto il problema nel miglior modo possibile. Attendo risposta.