codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20+1 /* Il nome del prodotto e' al massimo composto da 20 caratteri. */
#define M 10+1 /* E' possibile inserire nel listino a massimo 10 prodotti */
int insert_product(char list_products[][M],float list_prices[],int n,int m,char new_product[],
float price_new_product);
void print_all(char list_products[][M],float list_prices[],int n,float mean_of_prices,float max_price);
int main()
{
char list_products[N][M],new_product[M];
float list_prices[N];
float price_new_product,max_price=0,mean_of_prices=0;
int i,x,y;
char c;
/* Inizializzo il vettore relativo a prezzi a -2: listino prodotti vuoto. */
for(i=0;i<N;i++) {
list_prices[i]=-2; }
/* Elenco delle possibili azioni. */
printf("E' permesso all'utente svolgere tre diverse operazioni.\n");
printf("1.Inserimento di un nuovo prodotto e relativo prezzo;\n");
printf("2.stampa elenco dei prodotti e dei relativi prezzi;\n");
printf("3.uscita dal programma.\n");
printf("L'utente proceda con la scelta.\n");
scanf("%d",&x);
while(getchar() != '\n'); /* Svuoto il buffer da tastiera. */
switch(x) {
case 1:
printf("Si digiti il nome del prodotto.\n");
for(i=0;i<M;i++) {
c=getchar();
if(c=='\n') {
break; }
else {
new_product[i]=c; }
}
new_product[i]='\0';
printf("Il prodotto che si vuole inserire nel listino e'\n>>");
puts(new_product);
printf("Si immetta il prezzo da assegnagli.\n");
scanf("%f",&price_new_product);
printf("Il prezzo scelto da attribuire al prodotto e' %.2f.\n",price_new_product);
y = insert_product(list_products,list_prices,N,new_product,M,price_new_product);
if(y==0)
printf("Il prodotto e' gia' presente nel listino.\n");
if(y==1)
printf("Il prodotto e' stato inserito nel listino.\n");
if(y==2)
printf("Nel listino non vi sono più spazi disponibili.\n");
case 2:
printf("Si è scelto di spampare a video il listino dei prodotti e dei relativi prezzi.\n");
print_all(list_products,list_prices,N,mean_of_prices,max_price);
case 3:
printf("Si e' scelto di chiudere il programma.\n");
exit(0);
default:
printf("Operazione non prevista.\n");
}
return 0;
}
insert_product(char list_products[][M],float list_prices[],int n,int m,char new_product[],float price_new_product)
{
int i,j;
int x;
int empty_space;
for(j=0;j<n;j++) {
if(list_prices[j]==-2) {
empty_space=1; }
else {
empty_space=0; }
}
if(empty_space==1) {
printf("Nel listino vi sono spazi disponibili per l'inserimento.\n");
for(i=0;i<n;i++) {
if(strcmp(list_products[i],new_product)==0) {
return 0; }
if(strcmp(list_products[i],new_product)!=0) {
for(i=0;i<n;i++) {
if(list_prices[i]==-2) {
list_prices[i]=price_new_product;
strcpy(list_products[i],new_product); }
}
return 1;
}
}
}
else{
return 2; }
}
print_all(char list_products[][M],float list_prices[],int n,float *mean_of_prices,float *max_price)
{
int i;
for(i=0;i<n;i++) {
if(list_prices[i]!=0) {
printf("Prodotto: %s | Prezzo: %.2f",list_products[i],list_prices[i]);
}
}
}