Ciao a tutti, sto svlogendo un esercizio la cui consegna è:
Si scriva un programma che acquisisca 3 stringhe, ciascuna contenente il
nome di un prodotto e il relativo prezzo separati da spazio. Una volta
memorizzate queste informazioni in opportune variabili, il programma
riceve un’ulteriore stringa contente un nome di prodotto e un valore intero
corrispondente a una quantità.
Il programma deve:
a. Stabilire se il prodotto inserito per ultimo corrisponde ad uno dei
prodotti memorizzati in precedenza
b. In caso negativo, richiedere un altro inserimento di nome prodotto e
quantità
c. In caso positivo, calcolare e visualizzare il costo totale moltiplicando
quantità e prezzo del prodotto in questione
e ho scritto questo codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 512
#define Q 3
int main()
{
int i,find=0,qtt;
float price[Q],value;
char prodname[Q][N],prod[N];
for(i=0;i<Q;i++)
{
printf("Inserire il nome del %d%c prodotto e il relativo prezzo: ",i+1,248);
scanf("%s %f",prodname[i],&price[i]);
}
printf("\n");
while(find==0)
{
printf("Inserire il nome del prodotto e la sua quantit%c: ",133);
scanf("%s %d",prod,&qtt);
for(i=0;i<Q && find==0;i++)
{
if(!strcmp(prodname[i],prod))
{
find=1;
}
}
}
value=price[i]*(float)qtt;
printf("\nIl costo totale di %d %s %c %g euro.\n\n",qtt,prod,138,value);
return 0;
}
Dopo aver inserito i primi tre elementi, il programma funziona correttamente se inserisco il nome di uno dei primi due, mentre se inserisco il nome del terzo prodotto non mi calcola il costo totale. Più precisamente il valore di value diventa 0, e non capisco perchè . Sapete aiutarmi? Grazie mille in anticipo!