Ciao a tutti, stò trovando difficoltà la parte del convertitore di valuta, potete aiutarmi??
#include <stdio.h>
#include <string.h>
// Strutture
struct Convertitore {
double dollari;
double euro;
int var; /* Variabili */
double x;
double risultato;
int c;
};
struct prodotti {
char nome_prodotto [30];
char nazione[20];
int anno;
char genere[30];
double scadenza; //In minuti
char prezzo[25];
char distribuzione[25];
};
typedef struct prodotti Prodotti;
typedef Prodotti *ProdottiPtr;
struct listaProdotti {
ProdottiPtr prodottiPtr;
struct listaProdotti *next;
};
typedef struct listaProdotti ListaProdotti;
typedef ListaProdotti *ListaProdottiPtr;
// Prototipi
void getstring(char *string, int n); // Per l'inserimento delle stringhe dallo standard input
void standardString(char *string); // Per standardizzare le stringhe
int menuPrincipale(void); // Stampa e gestisce il menu
ListaProdottiPtr caricaListaProdotti(void); // Carica la lista dal file
void salvaListaProdotti(ListaProdottiPtr listaProdottiPtr); // Salva la lista sul file
ListaProdottiPtr inserisciProdotti(ProdottiPtr prodottiPtr, ListaProdottiPtr listaProdottiPtr); // Inserisce un prodotti nella lista
ProdottiPtr insDatiProdotti(void); // Inserisce i dati del prodotti
void vediDatiProdotti(ProdottiPtr temp); // Visualizza i dati del prodotti
ListaProdottiPtr ricercaProdotti(ListaProdottiPtr listaProdotti); // Cerca un prodotti per nome_prodotto
ListaProdottiPtr cancellaProdotti(ListaProdottiPtr iniz); // Elimina un prodotti dalla lista
void modificaDatiProdotti(ProdottiPtr temp); //Modifica i dati del prodotti
int menuModificaProdotti(void); //Menù che gestisce la modifica del prodotti
void listaProdotti(ListaProdottiPtr listaProdottiPtr); // Stampa la lista dei prodotti
void stampaListaProdotti(ListaProdottiPtr listaProdottiPtr); // Stampa su file .txt la lista dei prodotti
int main() {
int x=-1;
ListaProdottiPtr listaProdottiPtr, tempProdotti; //Lista dei prodotti
listaProdottiPtr=caricaListaProdotti();
while(x!=0){
printf("\n\t\t\tARCHIVIO PRODOTTI\n");
x=menuPrincipale(); //Stampa il menu e gestisce la scelta
switch (x){
case 0:
break;
case 1:
listaProdottiPtr=inserisciProdotti(insDatiProdotti (), listaProdottiPtr);
break;
case 2:
tempProdotti=ricercaProdotti(listaProdottiPtr);
if(tempProdotti!=NULL){
modificaDatiProdotti(tempProdotti->prodottiPtr);
}
break;
case 3:
listaProdotti(listaProdottiPtr);
break;
case 4:
stampaListaProdotti(listaProdottiPtr);
break;
case 5:
listaProdottiPtr=cancellaProdotti(listaProdottiPtr );
break;
case 6:
Convertitore;
default:
printf("Scelta non presente!\n");
break;
}
}
salvaListaProdotti(listaProdottiPtr);
return 0;
}
// Funzione per l'inserimento delle stringhe dallo standard input
void getstring(char *string, int n)
{
int i;
fgets(string, n, stdin);
for(i=0; string[i]!='\n'; i++);
string[i]='\0';
}
// Funzione che standardizza le stringhe
void standardString(char *string)
{
int i;
for(i=0; string[i]!='\0'; i++){
if(i==0){
string[i]=toupper(string[i]);
}
else{
string[i]=tolower(string[i]);
}
}
}
// Funzione che stampa e gestisce il menu
int menuPrincipale()
{
int scelta=-1;
printf("\n\t\t\t1. Inserisci prodotti\n");
printf("\t\t\t2. Modifica dati prodotti\n");
printf("\t\t\t3. Lista prodotti\n");
printf("\t\t\t4. Stampa lista prodotti\n");
printf("\t\t\t5. Cancella prodotti\n");
printf("\t\t\t6. Convertitore valuta\n");
printf("\t\t\t7. Conto\n");
printf("\t\t\t0. Esci\n");
printf("\t\t\t Scegli: ");
scelta = (int) getchar();
getchar();
scelta-=48;
if(scelta>=0 && scelta<=6) return scelta;
printf("Scelta non presente!");
}
//Funzione che carica la lista dal file
ListaProdottiPtr caricaListaProdotti()
{
FILE *fileProdotti; //Puntatore al file che contiene i dati
ListaProdotti *ptr, *ptrAux;
Prodotti *temp; //Struttura temporanea per immagazzinare i dati del prodotti
int x=0;
if((fileProdotti=fopen("prodotti.dat", "ab+"))==NULL){
printf("Errore nell'apertura del file\n");
return NULL;
}
else{ //Controlla se il file è pieno
rewind(fileProdotti);
fgetc(fileProdotti);
if(feof(fileProdotti)){
return NULL; // Restituisce NULL se il file è vuoto
}
ptrAux=NULL;
ptr=NULL;
rewind(fileProdotti); // Torna all'inizio del file
do{
temp=(ProdottiPtr)malloc(sizeof(Prodotti));
x=fread(temp, sizeof(Prodotti), 1, fileProdotti);
if(x==0){
ptrAux->next=NULL;
fclose(fileProdotti);
return ptr;
}
if(ptr==NULL){
ptrAux=(ListaProdottiPtr)malloc(sizeof(ListaProdot ti));
ptr=ptrAux;
ptrAux->prodottiPtr=temp;
}
else{
ptrAux->next=(ListaProdottiPtr)malloc(sizeof(ListaProdott i));
ptrAux=ptrAux->next;
ptrAux->prodottiPtr=temp;
}
} while(1);
}
}
// Funzione che salva la lista sul file
void salvaListaProdotti(ListaProdottiPtr listaProdottiPtr) {
FILE *fileProdotti;
ListaProdotti *paux;
if((fileProdotti=fopen("prodotti.dat", "wb"))==NULL){
printf("Errore nell'apertura del file\n");
return;
}
else{
rewind(fileProdotti);
paux=listaProdottiPtr;
while(paux!=NULL) {
fwrite(paux->prodottiPtr, sizeof(Prodotti), 1, fileProdotti);
paux=paux->next;
}
fclose(fileProdotti);
}
}
// Funzione che inserisce un prodotti nella lista
ListaProdottiPtr inserisciProdotti(ProdottiPtr prodottiPtr, ListaProdottiPtr listaProdottiPtr)
{
ListaProdottiPtr pAux;
if(listaProdottiPtr==NULL){
listaProdottiPtr=(ListaProdottiPtr)malloc(sizeof(L istaProdotti));
listaProdottiPtr->prodottiPtr=prodottiPtr;
listaProdottiPtr->next=NULL;
}
else{
pAux=listaProdottiPtr;
while(pAux->next!=NULL){
pAux=pAux->next;
}
pAux->next=(ListaProdottiPtr)malloc(sizeof(ListaProdott i));
pAux=pAux->next;
pAux->prodottiPtr=prodottiPtr;
pAux->next=NULL;
}
return listaProdottiPtr;
}
//Funzione che inserisce i dati del prodotti
ProdottiPtr insDatiProdotti() {
char scelta;
ProdottiPtr temp;
temp=(ProdottiPtr)malloc(sizeof(Prodotti));
printf("Nome Prodotto: "); // Inserisci nome_prodotto (Obbligatorio)
getstring(temp->nome_prodotto, 30);
standardString(temp->nome_prodotto);
printf("Nazione? (s/n): "); // Inserimento nazione (Facoltativo)
scanf("%c", &scelta);
getchar();
if(scelta=='s'){
printf("Nazione: ");
getstring(temp->nazione, 20);
}
else{
temp->nazione[0]='\0';
}
printf("Anno? (s/n): "); // Inserimento anno (Facoltativo)
scanf("%c", &scelta);
getchar();
if(scelta=='s'){
printf("Anno: ");
scanf("%d", &temp->anno);
getchar();
}
printf("Genere? (s/n): "); // Inserimento genere (Facoltativo)
scanf("%c", &scelta);
getchar();
if(scelta=='s'){
printf("Genere: ");
getstring(temp->genere, 30);
}
else{
temp->genere[0]='\0';
}
printf("Scadenza? (s/n): "); // Inserimento scadenza (Facoltativo)
scanf("%c", &scelta);
getchar();
if(scelta=='s'){
printf("scadenza: ");
scanf("%d", &temp->scadenza);
getchar();
}
printf("Prezzo? (s/n): "); // Inserimento genere (Facoltativo)
scanf("%c", &scelta);
getchar();
if(scelta=='s'){
printf("Prezzo: ");
getstring(temp->prezzo, 25);
}
else{
temp->prezzo[0]='\0';
}
printf("Distribuzione? (s/n): "); // Inserimento distribuzione (Facoltativo)
scanf("%c", &scelta);
getchar();
if(scelta=='s'){
printf("Distribuzione: ");
getstring(temp->distribuzione, 25);
}
else{
temp->distribuzione[0]='\0';
}
return temp;
}
grazie in anticipo x il vostro aiuto!! (qst è la prima perte del programma)