Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 41
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    31

    [C] Programma listino prezzi!

    ciao a tutti, scusate avrei un favore da chiedervi...

    mi sono incasinato in un programma che sembrava riuscissi a fare ma poi nell'utilizzo di funzioni mi sono perso e non riesco a venirne fuori! non so come impostare delle funzioni quando queste diventano un po complicate.. avrei bisogno di qualcuno che ha voglia di farmi vedere come devo farle e magari mi spieghi anche il perchè!

    qui di seguito copio il testo del programma:
    Si scriva un programma in grado di gestire un listino prezzi, ovvero deve
    gestire un elenco di prodotti e i loro relativi prezzi in €. Il programma
    utilizza su una matrice di caratteri chiamata prodotti di dimensione
    NxM e un vettore di numeri decimali chiamato price di dimensione N.

    Nel vettore price, il valore -2 indica linea libera, -1 indica che la linea
    contiene un prodotto valido a cui non è stato ancora attribuito un prezzo.

    All’avvio del programma, il vettore price è totalmente inizializzato a -2.
    Il programma deve permettere all'utente di invocare tramite menu le
    seguenti operazioni per manipolare il listino:

    a. insert_product: è una funzione che permette di includere un nuovo
    prodotto (il nome del prodotto deve essere di max M-1 caratteri) nel
    listino; restituisce il valore 1 se il prodotto non era ancora presente, 0
    se già inserito in precedenza; il prezzo associato al nuovo prodotto è -1
    int insert_product(char products[][M], float price[], int n, char new_product[]);

    b. print_all: è una funzione che permette di visualizzare a video il
    contenuto del listino. Inoltre, la funzione restituisce 2 valori: il prezzo
    medio ed il prezzo massimo
    void print_all(char products[][M], float price[], int n, float *avg, float *max);

    c. update_product: è una funzione che permette di aggiornare il prezzo
    di uno specifico prodotto; restituisce 1 se l’aggiornamento è avvenuto
    con successo, 0 se il prodotto non esiste.
    int update_product(char products[][M], float price[], int n, char product[], int new_price);

    d. remove_product: è una funzione che permette di rimuovere un
    prodotto dal listino; restituisce 1 se la rimozione è avvenuto con
    successo, 0 se il prodotto non esiste; la funzione deve impostare il
    valore -2 nel vettore prezzi in corrispondenza dell’elemento rimosso
    int remove_product(char products[][M], float price[], int n, char old_product[]);



    come vedete mette già il prototipo delle funzioni ma poi non ho proprio idea di come farle perchè funzionino sempre!


    se vi interessa qua ho già un inizio di programma che avevo impostato.. fin quando mi sono perso nella prima definizione della funzione!

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 100
    #define M 50

    int inserire_prodotto(char prodotti[][M], float prezzi[], int n, char nuovo_prodotto[]);
    void stampa_tutto(char products[][M], float prezzi[], int n, float *media, float *prezzo_max);

    int main()
    {
    char prodotti[N][M], uscita;
    float prezzi[N];
    int menu, i, ripetizione, nprodotti, condizione;
    ripetizione=0;
    nprodotti=-1;
    char nuovo_prodotto[M-1];
    for(i=0; i<N; i++) {
    prezzi[i]=-2;
    }


    printf("listino prezzi personale:\n\n");
    do {
    printf("\npremere:");
    printf("\n1--> inserire nuovo prodotto");
    printf("\n2--> stampare prodotti e relativi prezzi acquisiti");
    printf("\n3--> aggiornare prezzo prodotto");
    printf("\n4--> eliminare prodotto");
    printf("\n5--> uscire dal programma\n");

    scanf("%d%*c", &menu);

    switch(menu) {
    case 1: { nprodotti++;
    if(nprodotti>=N) {
    printf("\n Raggiunto Numero massimo di elementi consentiti");
    }
    printf("\n inserire nuovo prodotto:");
    scanf("%s", nuovo_prodotto);

    condizione=inserire_prodotto(prodotti[nprodotti][M], prezzi[nprodotti], nprodotti, nuovo_prodotto[M-1]);
    if(condizione==1) {
    printf("\n inserimento completato");
    }
    else
    printf("inserimento prodotto non possibile!\nNOME GIA' PRESENTE!");
    break;
    }

    case 2: {

    break;
    }
    case 3: {

    break;
    }
    case 4: {

    break;
    }
    case 5: {
    printf("\n\nSEI SICURO DI VOLER USCIRE?");
    printf("\nper uscire premi invio!");
    scanf("%c", &uscita);
    if(uscita=='\n')
    return 0;

    }
    default: {
    printf("\nERRORE digitazione nel menù\n");
    break;
    }

    }
    }
    while (ripetizione!=1);





    return 0;
    }

    int inserire_prodotto(char prodotti[][M], float prezzi[], int n, char nuovo_prodotto[]) {
    int i=0;
    printf("\ninserisci nuovo prodotto:");
    scanf("%s", nuovo_prodotto);

    for(i=0; i<N; i++) {
    if(strcmp(prodotti[i], nuovo_prodotto)==0) {
    strcpy(prodotti[i], nuovo_prodotto);
    prezzi[i]=-1;
    }
    else {

    }
    }

    }

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,285
    Originariamente inviato da ale392
    non so come impostare delle funzioni quando queste diventano un po complicate.. avrei bisogno di qualcuno che ha voglia di farmi vedere come devo farle e magari mi spieghi anche il perchè!
    Cosa vuol dire "non sai come impostare"?
    Qual è l'errore che ottieni o il problema specifico?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    31
    non ho idea di come impostare una funzione.. di come farla!

    so la teoria ma poi non riesco a metterla in pratica! vado in confusione e non capisco più una ceppa -.-

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,285
    Originariamente inviato da ale392
    so la teoria ma poi non riesco a metterla in pratica!
    E che tipo di aiuto vorresti mai ricevere con questa indicazione?

    Prova a spiegare i dubbi nello specifico, prova con un progetto più piccolo, riporta qui un funzione che hai scritto e che non funziona e prova a dire cosa non ti convince.

    Detto così, più che ripetere la teoria (che a tuo dire è chiara), non so cosa si possa fare.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    condizione=inserire_prodotto(prodotti[nprodotti][M], prezzi[nprodotti], nprodotti, nuovo_prodotto[M-1]);

    Questa chiamata è sicuramente sbagliata...
    Poi anche il corpo della funzione non ha molto senso, apparte che nel corpo della funzione fai cose che avevi già fatto nella main...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    31
    ma il fatto è che con i programmi dove c'erano funzioni facili riuscivo senza problemi... ma una funzione tipo quelle richieste in sto programma non riesco a farle.. non so cosa scriverci dentro anche se mi da già la definizione...

    la prima ad esempio sapresti dirmi cosa metterci nelle istruzioni?

    io l'ho fatta nel programma ma mi sono fermato subito perchè non sapevo più come fare..

    int insert_product(char products[][M], float price[], int n, char new_product[]);

    deve prendere un prodotto controllare se c'è gia nella matrice di prodotti e se non c'è metterlo e aggiornare il prezzo corrispondente = -1

    però come faccio a farla in modo che quando la richiamo funziona sempre? non so se riesco a farmi capire ma non so come muovermi.. ok ho la definizione della funzione ma come devo impostare le istruzioni in modo che vadano bene.. perchè se quelle cose fossero da fare senza l'utilizzo delle funzioni riuscirei però col fatto delle funzioni non so mai che parametri usare che incognite ecc..

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    31
    Originariamente inviato da Scara95
    condizione=inserire_prodotto(prodotti[nprodotti][M], prezzi[nprodotti], nprodotti, nuovo_prodotto[M-1]);

    Questa chiamata è sicuramente sbagliata...
    Poi anche il corpo della funzione non ha molto senso, apparte che nel corpo della funzione fai cose che avevi già fatto nella main...
    si infatti è sbagliata.. però non so perchè.. non so cosa devo scrivere nella funzione e cosa devo scrivere nel main per far si che tutto funzioni...

    e ora ho anche il momento di sclero perchè mi sto innervosendo perchè non mi viene -.-

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Per passare un parametro a una funzione basta scrivere il nome della variabile o l'eventuale valore...
    Questa è la chiamata:
    inserire_prodotto(prodotti, prezzi, nprodotti, nuovo_prodotto);
    Poi dentro le usi come variabili normali con in nomi che gli dai quando definisci la funzione...
    (Non ho controllato la logica del programma)
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    31
    eh ma se devo passargli matrici e vettori?

    quando uso la funzione come specifico quale "casella" del vettore o della matrice è?

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    L'hai specificato quando hai dichiarato le variabili, e lo stesso hai fatto nel prototipo della funzione...

    Se vuoi sono disposto a darti una mano tramite MSN o Skype (Intendiamoci: non scriverti il programma), casomai mandami un MP
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2024 vBulletin Solutions, Inc. All rights reserved.