Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*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 una matrice di caratteri chiamata 'warehouse' 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 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[]);
- */
- /*Librerie*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /*Define*/
- #define N 100
- #define M 20
- /*Funzioni*/
- int insert_product();
- void print_all();
- int update_product();
- int remove_product();
- /*Vettori*/
- char warehouse[N][M+1], products[M+1];
- float price[N];
- /*Variabili Globali*/
- int n=0;
- float avg, max=-2;
- /*Main*/
- int main()
- {
- int menu, insert, update, i;
- char risp;
- /*Inizializziamo price*/
- for(i=0; i<N; i++) price[i]=-2;
- /*Menu'*/
- while(menu!=0){
- printf("\n------------- MENU'------------\n");
- printf("\n1. Inserisci prodotto\n\n2. Aggiorna prezzo\n\n3. Rimuovi prodotto\n\n4. Stampa listino\n\n5. Exit\n\n ");
- scanf("%d", &menu);
- getchar();
- switch(menu){
- case 1: {
- risp='s';
- while(risp=='s'){
- system("cls");
- printf("Prego inserire nome prodotto\t");
- scanf("%s", products);
- insert=insert_product();
- if(insert==1) printf("\nProdotto aggiunto correttamente\n");
- else printf("\nProdotto gia' presente\n");
- printf("\nVuoi inserire un altro prodotto? s o n\t");
- scanf("%1s", &risp);
- getchar();}
- break;}
- case 2: {
- risp='s';
- while(risp=='s'){
- system("cls");
- update=update_product();
- if(update==1) printf("\nPrezzo aggiornato correttamente\n");
- else printf("\nProdotto non presente\n");
- printf("\nVuoi aggiornare un altro prodotto? s o n\t");
- scanf("%1s", &risp);
- getchar();}
- break;}
- case 3: {
- risp='s';
- while(risp=='s'){
- system("cls");
- update=remove_product();
- if(update==1) printf("\nProdotto rimosso correttamente\n");
- else printf("\nProdotto non presente\n");
- printf("\nVuoi rimuovere un altro prodotto? s o n\t");
- scanf("%1s", &risp);
- getchar();}
- break;}
- case 4: {
- system("cls");
- print_all();
- printf("\nIl prezzo medio dei prodotti in listino e': %.2f, quello massimo e': %.2f", avg, max);
- printf("\n\n\nIn attesa...\t");
- getchar();
- break;}
- case 5: menu=0; break;
- default:{ printf("opzione non ammessa");
- printf("\n\n\nIn attesa...\t");
- getchar();}
- }
- system("cls");
- }
- return 0;
- }
- /*Inserisci elementi*/
- int insert_product()
- {
- int i, j=0, str;
- /*ricerca se già presente e ferma j sul primo elemento libero*/
- for(i=1; i<=n; i++){
- str=strcmp(warehouse[i], products);
- if(str==0){ return 0;}
- if(price[i]==-2){ if(j==0) j=i;}
- }
- n++;
- strcpy(warehouse[j], products);
- price[j]=-1;
- return 1;
- }
- /*Funzione stampa*/
- void print_all()
- {
- int i=0, j=0;
- printf(" Prodotto Prezzo\n\n");
- for(i=0, j=0; i<n && price[i]>-2; i++){
- printf(" %-20s", warehouse[i]);
- printf("\t%.2f\n", price[i]);
- j=j+price[i];
- avg=j/n;
- if(price[i]>-1)if(max<price[i]) max=price[i];}
- }
- /*Inserisci prezzo*/
- int update_product()
- {
- int i, j;
- char prodagg[M];
- float aggprice;
- print_all();
- printf("\nNome prodotto da aggiornare?\t");
- scanf("%s", prodagg);
- getchar();
- for(i=0, j=0; i<n && j==0; i++)
- if(strcmp(warehouse[i], prodagg)==0) j=1;
- if(j==0) return 0;
- else{
- printf("\nNuovo prezzo?\t");
- scanf("%f", &aggprice);
- price[i-1]=aggprice;
- return 1;
- getchar();}
- }
- /*Rimuovi elemento*/
- int remove_product()
- {
- int i, j;
- char prodagg[M];
- float aggprice;
- print_all();
- printf("\nNome prodotto da rimuovere?\t");
- scanf("%s", prodagg);
- getchar();
- for(i=0, j=0; i<n && j==0; i++)
- if(strcmp(warehouse[i], prodagg)==0) j=1;
- if(j==0) return 0;
- else{
- warehouse[i-1][0]='\0';
- price[i-1]=-2;
- return 1;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement