Salve ho fatto un semplice programma in c per la gestione di un magazzino ma non mi vanno due funzioni. Questo è quello che dovrebbero fare:
ModificaPrezzo
Funzione che prende in ingresso il nome dell’articolo ed un prezzo e ne modifica il
valore nell’archivio del magazzino.
ModificaQt
Funzione che prende in ingresso il nome dell’articolo ed una quantit`a e ne modifica
il valore nell’archivio del magazzino.
E qui c'è il codice. Dove ho sbagliato?
codice:
#include <stdio.h>
#include <string.h>
void InsArticolo(char[], int, float);
void ModificaPrezzo(char[], float);
void ModificaQt(char[], int);
void StampaPrezzo(float, float);
typedef struct{
char tipo[20];
int quantit;
float prezzo;
}articolo;
articolo magazzino[100];
int count=0;
main()
{
char c, n[20];
int q;
float p, prezzo1, prezzo2;
do{
printf("1-Inserisci Articolo\n");
printf("2-Modifica Prezzo\n");
printf("3-Modifica Quantita'\n");
printf("4-Stampa Prezzo\n");
printf("0-Fine\n");
c=getchar();
getchar();
switch (c)
{
case '1':
printf("Articolo: ");
scanf("%s", n);
printf("\nQuantita': ");
scanf("%d", &q);
printf("\nPrezzo: ");
scanf("%f", &p);
InsArticolo(n, q, p);
break;
case '2':
printf("\nArticolo: ");
scanf("%s", n);
printf("\nPrezzo: ");
scanf("%f", &p);
ModificaPrezzo(n, p);
break;
case '3':
printf("\nArticolo: ");
scanf("%s", n);
printf("\nQuantita': ");
scanf("%d", &q);
ModificaQt(n, q);
break;
case '4':
printf("\nPrezzo1: ");
scanf("%f", &prezzo1);
printf("\nPrezzo2: ");
scanf("%f", &prezzo2);
StampaPrezzo(prezzo1, prezzo2);
break;
case '0':
return 0;
}
while(!getchar());
}while(c);
}
void InsArticolo(char n[], int q, float p)
{
strcpy(magazzino[count].tipo, n);
magazzino[count].quantit=q;
magazzino[count].prezzo=p;
++count;
}
void ModificaPrezzo(char n[], float p)
{
int i;
for(i=0; i<count; i++)
{
if(magazzino[i].tipo == n)
magazzino[i].prezzo=p;
}
}
void ModificaQt(char n[], int q)
{
int i;
for(i=0; i<count; i++)
{
if(magazzino[i].tipo == n)
magazzino[i].quantit=q;
}
}
void StampaPrezzo(float p1, float p2)
{
int i, elem=0;
for (i=0; i<count; i++)
{
if(magazzino[i].prezzo > p1 && magazzino[i].prezzo < p2)
{
printf("%s---%d---%f\n", magazzino[i].tipo, magazzino[i].quantit, magazzino[i].prezzo);
elem++;
}
}
printf("\nSono stati trovati %d articoli pari al %d per cento del totale\n" , elem, elem*100/count);
}