Ciao ho provato a sistemare un po' le cose tuttavia il risultato non cambia
/* Si supponga di voler gestire i conti correnti di n utenti. Ogni utente è identificato dal
Cognome, Nome, numero del conto, lista movimenti in diversi giorni dell’anno.
Gestire i conti corrente e gestire le seguenti operazioni
• Inserire un nuovo correntista a cui viene assegnato un codice univoco.
• Visualizzare la lista movimenti di un dato correntista (dato il numero del
conto o Cognome/Nome) in una fissata data. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20
struct u {
char nome [MAX];
char cognome [MAX];
int saldo;
int id;
unsigned int num_mov;
} utenti [MAX];
struct m {
int giorno;
int mese;
int anno;
int importo;
} movimento[MAX];
int num_utenti = 0;
int num_movimenti = 0;
int menu();
int ricerca_conto(int id);
int ricerca_movimento();
void inserisci_utente(void);
int cerca_utente();
void deposito(void);
void prelievo(void);
int movim();
void stampa_movimenti(int num_movimenti);
int ricerca_utente();
//void stampa(void);
int main (){
int scelta, id;
while(scelta = menu()) {
switch ( scelta ){
case 1: system("CLS");
inserisci_utente();
break;
case 2: system("CLS");
cerca_utente();
break;
case 3: system("CLS");
deposito();
break;
case 4: system("CLS");
prelievo();
break;
case 5: system("CLS");
movim();
break;
case 6: system("CLS");
stampa_movimenti(num_movimenti);
break;
case 7: system("CLS");
ricerca_movimento();
break;
case 0:
return 0;
}
}
}
int ricerca_conto(int id) //Function che cerca la presenza di un dato correntista.
{
int i;
for( i = 0; i < num_utenti; i++)
if ( utenti[i].id == id)
return i;
return -1;
}
void inserisci_utente(void) //Function che permette l'inserimento di un nuovo correntista.
{
int num_conto;
if ( num_utenti == MAX )
{
printf("Numero utenti massimo raggiunto.\n");
return;
}
printf("\nInserire numero di conto: ");
scanf("%d", &num_conto);
if ( ricerca_conto(num_conto) >= 0){
printf("Utente già esistente.\n");
return;
}
utenti[num_utenti].id = num_conto;
fflush(stdin);
printf("\nInserire nome: ");
gets(utenti[num_utenti].nome);
fflush(stdin);
printf("\nInserire cognome: ");
gets(utenti[num_utenti].cognome);
printf("\nInserire saldo: ");
scanf("%d", &utenti[num_utenti].saldo);
num_utenti++;
}
int cerca_utente() //Function per la ricerca di un dato correntista.
{
int i, n;
printf("\nInserire numero di conto: ");
scanf("%d", &n);
i = ricerca_conto(n);
if ( i >= 0) {
printf("\nNome utente: %s\t Cognome utente: %s\t Saldo: %d\n", utenti[i].nome, utenti[i].cognome, utenti[i].saldo);
//printf("Saldo: %d", utenti[i].saldo);
}
else
printf("Utente non trovato.\n");
}
void deposito(void) //Function che permetta di effettuare un deposito.
{
int i, n;
printf("\nInserire numero di conto: ");
scanf("%d", &n);
i = ricerca_conto(n);
if ( i >= 0 ){
printf("Quanto vuoi depositare?: ");
scanf("%d", &movimento[i].importo);
utenti[i].saldo += movimento[i].importo;
}
else
printf("Conto non trovato.\n");
}
void prelievo(void) //Function che permette di effettuare un prelievo
{
int i, n, importo;
printf("\nInserire numero di conto: ");
scanf("%d", &n);
i = ricerca_conto(n);
if ( i >= 0 ){
printf("Quanto vuoi prelevare?: ");
scanf("%d", &importo);
utenti[i].saldo -= importo;
}
else
printf("Conto non trovato.\n");
}
int menu() { //Function che stampa a video il menu di scelta.
int scelta;
printf("\n\t\t\t\t\t*** Conto Corrente 1.0 ***\n\n");
printf("[1] Inserisci utente.\n\n");
printf("[2] Ricerca utente.\n\n");
printf("[3] Effettua Deposito.\n\n");
printf("[4] Effettua Prelievo.\n\n");
printf("[5] Effettua movimento.\n\n");
printf("[6] Stampa movimenti.\n\n");
printf("[7] Ricerca movimenti.\n\n");
printf("[0] Esci.\n\n");
scanf("%d", &scelta);
while ( scelta < 0 || scelta > 7 ){
printf("Comando non riconosciuto!\n");
printf("scelta: ");
scanf("%d", &scelta);
return scelta;
}
return scelta;
}
int movim() //Function che permette di effettuare un movimento di denaro.
{
int i, n, mittente, destinatario;
printf("\nInserire numero di conto del mittente: ");
scanf("%d", &mittente);
i = ricerca_conto(mittente);
if ( i >= 0 ){
printf("\nQuanto vuoi inviare?: ");
scanf("%d", &movimento[i].importo);
utenti[i].saldo -= movimento[i].importo;
utenti[i].num_mov++;
}
else{
printf("Utente inesistente.\n");
return -1;
}
printf("\nInserire numero di conto del destinatario: ");
scanf("%d", &destinatario);
n = ricerca_conto(destinatario);
printf("\nInserire giorno: ");
scanf("%d", &movimento[i].giorno);
printf("\nInserire mese: ");
scanf("%d", &movimento[i].mese);
printf("\nInserire anno: ");
scanf("%d", &movimento[i].anno);
if ( n >= 0 ){
utenti[n].saldo += movimento[i].importo;
printf("Movimento effettuato con successo!\n");
num_movimenti++;
return -1;
}
else{
printf("Utente inesistente.\n");
getchar();
}
}
int ricerca_movimento() //Function che verifica la presenza di un movimento.
{
int g, m, a, i, trovato = 0;
printf("\nInserire giorno: ");
scanf("%d", &g);
printf("\nInserire mese: ");
scanf("%d", &m);
printf("\nInserire anno: ");
scanf("%d", &a);
for( i = 1, trovato = 0; i < utenti[i].num_mov && i < movimento[i].giorno && i < movimento[i].mese && i < movimento[i].anno; i++)
{
if ( g == movimento[i].giorno && m == movimento[i].mese && a == movimento[i].anno)
trovato += 1;
}
if ( trovato == 0 )
printf("Non ci sono movimenti nella data selezionata.\n");
else
printf("Sono stati trovati %d movimenti\n", trovato);
}
void stampa_movimenti(int num_movimenti) //Function che stampa a video la lista movimenti di un dato correntista.
{
int i, x, utente;
printf("\nInserire il numero del conto di cui stampare i movimenti: ");
scanf("%d", &i);
utente =ricerca_conto(i);
if ( utente > 0 ){
printf("Lista movimenti\n Numero conto:%d\t Nome: %s\t Cognome: %s\n", utente, utenti[utente].nome, utenti[utente].cognome);
for (x = 0; x < utenti[utente].num_mov; x++){
printf("Importo: %d\t Giorno: %d\t Mese: %d\t Anno: %d\t", movimento[x].importo, movimento[x].giorno, movimento[x].mese, movimento[x].anno);
}
}
}
int ricerca_utente() //Function per la ricerca di un dato correntista.
{
int i, n;
printf("\nInserire numero di conto di cui stampare i movimenti: ");
scanf("%d", &n);
i = ricerca_conto(n);
if ( i >= 0) {
return i;
}
else
{
printf("Utente non trovato.\n");
return -1
;
}
return 0;
}