Altro problema nella funzione visualizzazionefidelitycards.....non viene stampato il saldopunti...perchè?
#include <stdio.h>
#include <stdlib.h>
#define MAXCHAR 10
void mainmenu();
void creazionefidelitycard(int *numerofidelitycards);
void nuovoacquisto(int numerofidelitycards);
int contapunti (int importo_nuovoacquisto,int numerofidelitycards);
int saldopunti(int importo_nuovoacquisto,int numerofidelitycards);
void utilizzopunti(int importo_nuovoacquisto,int numerofidelitycards);
void visualizzazionefidelitycards(int importo_nuovoacquisto,int numerofidelitycards);
//void visualizzazioneestrattopunti(int numerofidelitycards);
struct fidelity_card{
int id;
char nome[MAXCHAR];
char cognome[MAXCHAR];
int data_nascita;
}fidelitycards[10];
int main()
{
mainmenu();
return 0;
}
void mainmenu(){
int numerofidelitycards=1;
int importo_nuovoacquisto;
int azione;
do {
printf("Gestione fidelity card \n\n");
printf("1 - Creazione di una nuova fidelity card\n");
printf("2 - Nuovo acquisto\n");
printf("3 - Utilizzo punti\n");
printf("4 - Visualizza Fidelity card\n");
printf("5 - Visualizzazione estratto punti\n");
printf("0 - Esci\n");
printf("Inserisci la scelta -> ");
scanf("%d", &azione);
//Controllo scelta
switch(azione) {
case 0:
printf("Arrivederci!");
break;
case 1:
system("cls");
creazionefidelitycard(&numerofidelitycards);
break;
case 2:
system("cls");
nuovoacquisto(numerofidelitycards);
break;
case 3:
system("cls");
utilizzopunti(importo_nuovoacquisto,numerofidelitycards);
break;
case 4:
system("cls");
visualizzazionefidelitycards(importo_nuovoacquisto,numerofidelitycards);
break;
/*case 5:
system("cls");
visualizzazioneestrattopunti(numerofidelitycards);
break;*/
default:
printf("Azione non valida");
}
} while (azione != 0);
}
void creazionefidelitycard(int *numerofidelitycards){
//int *numerofidelitycards=1;
fflush(stdin);
printf("crea nuova fidelity card\n");
fidelitycards[*numerofidelitycards].id=*numerofidelitycards;
printf("inserisci cognome max %d caratteri \n",MAXCHAR);
gets(fidelitycards[*numerofidelitycards].cognome);
printf("inserisci nome max %d caratteri \n",MAXCHAR);
gets(fidelitycards[*numerofidelitycards].nome);
printf("inserisci data di nascita");
scanf("%d",&fidelitycards[*numerofidelitycards].data_nascita);
printf("\nFidelity card creata correttamente!!\n\n");
printf("CODICE FIDELITY CARD NUMERO %d \n", fidelitycards[*numerofidelitycards].id);
*numerofidelitycards += 1;
system("PAUSE");
system("cls");
}
void nuovoacquisto(int numerofidelitycards){
int id;
int i;
char azione;
char data_nuovo_acquisto[MAXCHAR];
int importo_nuovoacquisto;
// fflush(stdin);
printf("inserire codice fidelity card ");
scanf("%d",&id);
for(i = 1; i < numerofidelitycards; i++) {
if(fidelitycards[i].id==id) {
printf("%s\t%s\t%d", fidelitycards[i].cognome, fidelitycards[i].nome, fidelitycards[i].data_nascita);
}
}
fflush(stdin);
printf("Confermare i dati?. Procedere? Y/N -> ");
scanf("%c", &azione);
if(azione=='y' || azione=='Y'){
fflush(stdin);
printf("inserisci data nuovo acquisto\n");
gets(data_nuovo_acquisto);
fflush(stdin);
printf("inserisci importo nuovo acquisto\n");
scanf("%d",&importo_nuovoacquisto);
printf("i nuovi punti fedelta' sono %d mentre il saldo punti e' %d ",contapunti(importo_nuovoacquisto,numerofidelitycards),saldopunti(importo_nuovoacquisto,numerofidelitycards));
system("PAUSE");
system("cls");
}else if(azione=='n' || azione=='N'){
printf("\nNon hai confermato i dati\n\n");
system("PAUSE");
system("cls");
}else{
printf("carattere non ammesso");
system("PAUSE");
system("cls");
}
}
void utilizzopunti(int importo_nuovoacquisto,int numerofidelitycards){
int id;
int i;
char azione;
int punti;
punti=contapunti(importo_nuovoacquisto,numerofidelitycards);
int saldo;
// saldo=saldopunti(importo_nuovoacquisto,numerofidelitycards);
printf("inserisci codice della fidelitycard");
scanf("%d",&id);
for(i=1;i<numerofidelitycards;i++){
if(fidelitycards[i].id==id){
printf("nome:%s,cognome:%s,data di nascita:%d",fidelitycards[i].nome,fidelitycards[i].cognome,fidelitycards[i].data_nascita);
fflush(stdin);
printf("Confermare i dati?. Procedere? Y/N -> ");
scanf("%c", &azione);
if(azione=='y' || azione=='Y'){
// fflush(stdin);
// printf("inserisci i punti che intendi utilizzare\n");
// scanf("%d",&punti);
// saldo=saldo-punti;
printf("il nuovo saldo punti e' %d ",saldo);
system("PAUSE");
system("cls");
}else if(azione=='n' || azione=='N'){
printf("\nNon hai confermato i dati\n\n");
system("PAUSE");
system("cls");
}else{
printf("carattere non ammesso");
system("PAUSE");
system("cls");
}
}
}
}
int contapunti (int importo_nuovoacquisto,int numerofidelitycards) {
//Variabili
int i;
int punti;
for(i = 1; i< numerofidelitycards; i++) {
punti= importo_nuovoacquisto*5/100;
}
return punti;
}
int saldopunti (int importo_nuovoacquisto,int numerofidelitycards) {
//Variabili
int punti;
punti=contapunti(importo_nuovoacquisto,numerofidelitycards);
int i;
int saldo=0;
saldo= saldo+punti;
return saldo;
}
void visualizzazionefidelitycards(int importo_nuovoacquisto,int numerofidelitycards){
int i;
for(i=1;i<numerofidelitycards;i++){
printf("codice : %d,cognome cliente:%s,saldo punti:%d",fidelitycards[i].id,fidelitycards[i].cognome,saldopunti(importo_nuovoacquisto,numerofidelitycards));
}
system("PAUSE");
system("cls");
}
/*void visualizzazioneestrattopunti(int numerofidelitycards){
int id;
int i;
char data_nuovo_acquisto[MAXCHAR];
int importo_nuovoacquisto;
printf("inserisci id fidelitycards");
scanf("%d",&id);
for(i=1;i<numerofidelitycards;i++){
if(fidelitycards[i].id==id){
printf("%s,%d,%d",data_nuovo_acquisto,importo_nuovoacquisto,contapunti(importo_nuovoacquisto,numerofidelitycards));
}
}
}*/