Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Archivio Prodotti

    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)

  2. #2
    e qst è la seconda...


    // Funzione che visualizza i dati del prodotti
    void vediDatiProdotti(ProdottiPtr temp)
    {
    printf("Nome Prodotto: %s\n", temp->nome_prodotto);
    if(temp->nazione[0]!='\0'){
    printf("Nazion: %s\n", temp->nazione);
    }
    if(temp->anno!=0){
    printf("Anno: %d\n", temp->anno);
    }
    if(temp->genere[0]!='\0'){
    printf("Genere: %s\n", temp->genere);
    }
    if(temp->scadenza!=0){
    printf("Scadenza: %d'\n", temp->scadenza);
    }
    if(temp->prezzo[0]!='\0'){
    printf("Prezzo: %s\n", temp->prezzo);
    }
    if(temp->distribuzione[0]!='\0'){
    printf("Distribuzione: %s\n", temp->distribuzione);
    }
    }

    //Funzione che cerca un prodotti per nome_prodotto
    ListaProdottiPtr ricercaProdotti(ListaProdottiPtr listaProdotti){
    char nome_prodotto[30];
    if(listaProdotti==NULL){
    printf("Non sono presenti prodotti\n");
    return NULL;
    }
    printf("Nome Prodotto: ");
    getstring(nome_prodotto, 30);
    standardString(nome_prodotto);

    while(listaProdotti!=NULL){
    if(strcmp(listaProdotti->prodottiPtr->nome_prodotto, nome_prodotto)==0){
    return listaProdotti;
    }
    else{
    printf("Il prodotto non è stato trovato!\n");
    return NULL;
    }
    listaProdotti=listaProdotti->next;
    }
    return NULL;
    }



    // Funzione che elimina uno o più prodotti dalla lista
    ListaProdottiPtr cancellaProdotti(ListaProdottiPtr iniz){
    ListaProdottiPtr copy, find, temp;

    if(iniz==NULL){ //Controlla se la lista è vuota
    printf("Non sono presenti prodotti\n");
    return NULL;
    }
    else{
    copy=iniz;
    find=ricercaProdotti(iniz); //Cerca il prodotti nella lista
    if(find==NULL){ //Se non trova il prodotti esce
    return iniz;
    }
    else{
    while(copy!=NULL){
    if(copy==find){
    temp=copy;
    iniz=copy->next;
    free(temp);
    printf("Prodotto eliminato correttamente\n");
    return iniz;
    }
    if(copy->next==find){
    temp=copy->next;
    copy->next=temp->next;
    free(temp);
    printf("Prodotto Eliminato correttamente\n");
    return iniz;
    }
    copy=copy->next;
    }
    }
    }
    }

    // Funzione che modifica i dati di un o più prodotti
    void modificaDatiProdotti(ProdottiPtr temp){
    int mod=-1;

    while(mod!=0){
    printf("\n-------------------------\n");
    vediDatiProdotti(temp);
    printf("\n");
    mod=menuModificaProdotti();
    switch (mod){
    case 0:
    break;
    case 1:
    printf("Nome Prodotto: %s\nNuovo Nome Prodotto: ", temp->nome_prodotto);
    getstring(temp->nome_prodotto, 30);
    standardString(temp->nome_prodotto);
    break;
    case 2:
    if(temp->nazione[0]!='\0'){
    printf("Nazione: %s\nNuova nazione: ", temp->nazione);
    }
    else{
    printf("Nazione: ");
    }
    getstring(temp->nazione, 20);
    break;
    case 3:
    if(temp->anno!=0){
    printf("Anno: %d\nNuovo anno: ", temp->anno);
    }
    else{
    printf("Anno: ");
    }
    scanf("%d", &temp->anno);
    break;
    case 4:
    if(temp->genere[0]!='\0'){
    printf("Genere: %s\n Genere: ", temp->genere);
    }
    else{
    printf("Genere: ");
    }
    getstring(temp->genere, 30);
    break;
    case 5:
    if(temp->scadenza!=0){
    printf("Scadenza: %d'\nNuova scadenza: ", temp->scadenza);
    }
    else{
    printf("Scadenza: ");
    }
    scanf("%d", &temp->scadenza);
    break;
    case 6:
    if(temp->prezzo[0]!=0){
    printf("Prezzo: %s\nNuovo prezzo: ");
    }
    else{
    printf("Prezzo: ");
    }
    getstring(temp->prezzo, 25);
    break;
    case 7:
    if(temp->distribuzione[0]!=0){
    printf("Distribuzione: %s\nNuova distribuzione: ");
    }
    else{
    printf("Distribuzione: ");
    }
    getstring(temp->distribuzione, 25);
    break;
    default:
    printf("Scelta non presente!");
    mod=menuModificaProdotti();
    break;
    }
    }
    }

    //Funzione che gestisce il menu della modifica dei prodotti
    int menuModificaProdotti()
    {
    int scegli=-1;

    printf("Cosa vuoi modificare?\n");
    printf("1 - Nome Prodotto\n");
    printf("2 - Nazione\n");
    printf("3 - Anno\n");
    printf("4 - Genere\n");
    printf("5 - Scadenza\n");
    printf("6 - Prezzo\n");
    printf("7 - Distibuzione\n");
    printf("0 - Esci\n");
    printf("Scegli: ");
    scanf("%d", &scegli);
    getchar();
    return scegli;
    }

    //Funzione convertitore

    void Convertitore (convertitore)
    {
    printf("\t\tConvertitore Valuta\n");

    printf("|-------------------MENU----------------\n");
    printf("|Premere 1 per convertire da Euro a Lire\n");
    printf("|Premere 2 per convertire da Lire a Euro\n");
    printf("|Premere 3 per convertire da Euro a Dollaro\n");
    printf("|Premere 4 per convertire da Dollaro a Euro\n");
    printf("|Premere 5 per le INFO \n");
    printf("|Per uscire dare come input 000 \n");
    printf("|---------------------------------------\n");



    while (1) {
    scanf("%d", &var);

    if (var==5) {
    printf("email <manuel86taranto@hotmail.com> \n");

    }

    if (var==1) {

    while (c != EOF) {
    printf("Inserire la somma in Euro\n");
    scanf("%lg€",&x);
    if(x==000) {
    printf("MENU PRINCIPALE : ");
    break;}
    euro=1936.270000;
    risultato=x*euro;
    printf("Il risultato in Lire e` %f\n",risultato);
    }
    }

    if(var==000) {
    printf("USCITA\n");
    exit(1); }

    if (var==2) {
    while(c != EOF) {
    printf("Inserire la somma in Lire\n");
    printf("\nL ");
    scanf("%lg",&x);
    if(x==000) {
    printf("MENU PRINCIPALE : ");
    break;}
    euro=1936.270000;
    risultato=x/euro;
    printf("Il risultato in Euro e` %f\n",risultato); }
    }


    if (var==3) {
    while(c != EOF) {
    printf("Inserire la somma in Euro\n");
    printf("\n€ ");
    scanf("%lg",&x);
    if(x==000) {
    printf("MENU PRINCIPALE : ");
    break;}
    dollari=1.30;
    risultato=x*dollari;
    printf("Il risultato in Dollari e` %f\n",risultato); }
    }

    if (var==4) {
    while(c != EOF) {
    printf("Inserire la somma in Dollari\n");
    printf("\n$ ");
    scanf("%lg",&x);
    if(x==000) {
    printf("MENU PRINCIPALE : ");
    break;}
    dollari=1.30;
    risultato=x/dollari;
    printf("Il risultato in Euro e` %f\n",risultato); }
    }
    // Funzione che stampa la lista dei prodotti
    void listaProdotti(ListaProdottiPtr listaProdottiPtr){
    int conta=1;

    if(listaProdottiPtr==NULL){
    printf("Non sono presenti prodotti\n");
    return;
    }
    printf("\n");
    while(listaProdottiPtr!=NULL){
    printf("%d - %s\n", conta, listaProdottiPtr->prodottiPtr->nome_prodotto);
    if(conta%10==0){
    getchar();
    }
    conta++;
    listaProdottiPtr=listaProdottiPtr->next;
    }
    getchar();
    }

    // Funzione che stampa su file .txt la lista dei prodotti
    void stampaListaProdotti(ListaProdottiPtr listaProdottiPtr){
    FILE *fileProdotti;
    int conta=1;

    if((fileProdotti=fopen("listaprodotti.txt", "w"))==NULL){
    printf("Errore nell'apertura del file\n");
    return;
    }
    else{
    fprintf(fileProdotti, "\t\t\tARCHIVIO PRODOTTI\n\n");
    while(listaProdottiPtr!=NULL){
    fprintf(fileProdotti, "%d\n", conta);
    fprintf(fileProdotti, "\tNome Prodotto: %s\n", listaProdottiPtr->prodottiPtr->nome_prodotto);
    if(listaProdottiPtr->prodottiPtr->nazione[0]!='\0'){
    fprintf(fileProdotti, "\tNazione: %s\n", listaProdottiPtr->prodottiPtr->nazione);
    }
    if(listaProdottiPtr->prodottiPtr->anno!=0){
    fprintf(fileProdotti, "\tAnno: %d\n", listaProdottiPtr->prodottiPtr->anno);
    }
    if(listaProdottiPtr->prodottiPtr->genere[0]!='\0'){
    fprintf(fileProdotti, "\tGenere: %s\n", listaProdottiPtr->prodottiPtr->genere);
    }
    if(listaProdottiPtr->prodottiPtr->scadenza!=0){
    fprintf(fileProdotti, "\tScadenza: %d'\n", listaProdottiPtr->prodottiPtr->scadenza);
    }
    if(listaProdottiPtr->prodottiPtr->prezzo[0]!='\0'){
    fprintf(fileProdotti, "\tPrezzo: %s\n", listaProdottiPtr->prodottiPtr->prezzo);
    }
    if(listaProdottiPtr->prodottiPtr->distribuzione[0]!='\0'){
    fprintf(fileProdotti, "\tDistribuzione: %s\n", listaProdottiPtr->prodottiPtr->distribuzione);
    }
    listaProdottiPtr=listaProdottiPtr->next;
    conta++;
    }
    }
    fclose(fileProdotti);
    }

  3. #3
    qst sono gli errori :



    [Warning] In function `main':
    `Convertitore' undeclared (first use in this function)
    [Build Error] (Each undeclared identifier is reported only once
    [Build Error] for each function it appears in.)
    [Build Error] At top level:
    `Convertitore' used prior to declaration
    [Warning] In function `Convertitore':
    `var' undeclared (first use in this function)
    `c' undeclared (first use in this function)
    `x' undeclared (first use in this function)
    `euro'undeclared (first use in this function)
    `dollari' undeclared (first use in this function)
    `risultato' undeclared (first use in this function)
    parse error at end of input

  4. #4
    Help me sn mesi k sn cotto x qst programma!!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai chiamato nel main la funzione Convertitore in questo modo

    Convertitore;

    ovviamente sbagliato ...

    E poi hai utilizzato lo stesso nome per la funzione e per la struttura ...

    Inoltre, nella funzione Convertitore non hai dichiarato le variabili che hai utilizzato (var, x ....) ... del resto il messaggio d'errore e' chiaro ...

  6. #6
    grazie mille... stò davvero fuso in qst periodo k sbaglio di tutto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.