Salve ragazzi,
sto impazzendo nel cercare di passare una matrice di caratteri ad una funzione, allo scopo di inserire in un listino prezzi ( la matrice) il nome di un prodotto e assegnare sempre tramite la funzione un certo prezzo ( se è libera). Posto il codice che ho scritto:
#include <stdio.h>
#include <stdlib.h>
#define N 5
#define M 100
#include <ctype.h>
#include<string.h>
int insert_product(char warehouse[][M], int, float price[],char , float );
void print_all(char , float , int , float , float);
int main()
{
char warehouse[N][M],s[M];;
int x,i;
float price[N], newprice, max=0, avg=0;
for(i=0;i<N;i++){
price[i]=-2;
}
do{
printf("Inserire 1 per inserire nuovi prodotti con relativo prezzo, 2 per stampare il listino, 3 per uscire dal programma:\n");
scanf("%d", &x);
if(x==1){
for(i=0;i<N;i++){
printf("Inserisci il nuovo prodotto:\n");
scanf("%s", s);
printf("Inserisci il suo prezzo:\n");
scanf("%f", &newprice);
printf("%d", insert_product(warehouse, i, price, s, newprice));
}
}
else if(x==2){
for(i=0; i<N; i++){
print_all(warehouse, price, i, &avg, &max);
printf("Massimo dei prezzi: %f, Media attuale %f", max, avg);
}}
}while (x!=3);
return 0;
}
void print_all(char warehouse[][M], float price[], int n, float *avg, float *max){
float media, mas=0, somma=0;
int n=0;
if (price[i]!=-2){
printf("Prodotto %d: %s Prezzo: %f\n", i+1, warehouse[i][M], price[i]);
if (price[i]>mas){
mas = price[i];
n++;
somma= somma+ price[i];
}
}
media= (float) somma/n;
*avg=media;
*max= mas;
return 0;
}
int insert_product(char warehouse[][M], int i, float price[],char s, float y){
int s=1, c=0;
if (price[i]==-2){
sprintf(warehouse[i][M], s);
price[i]=y;
}
else if (price[i]>0){
c++;
}
if (c==N){
s=0;
}
return s;
}
da notare che il programma deve permettere di inserire questi prodotti con i relativi prezzi se la casella del vettore dei prezzi è libera (indicata con il -2) in caso contrario sarà occupata (deve passare oltre) se sono tutte occupate deve restituire un certo valore ( 0 ) così se l'inserimento ha avuto successo (1) e poi, una volta risolto il mio problema, dovrò anche controllare che il prodotto non sia già presente ( dovrà dare un 2 in caso).
Avevo pensato di implementare così il mio ciclo, inserendo una stringa s[M] e poi passarla alla funzione per poi sprint nella mia warehouse[RIGA(i)][M] (listino prezzi). Ma mi dà un errore circa il passaggio della matrice nella funzione, probabilmente sbaglio sintassi ( non l'ho mai fatto ), qualcuno può darmi una mano? ( se c'è qualche errore poi di logica quello è ancora tutto da ricontrollare xD )
Inoltre c'è una print_all function che restituisce una media e un valore massimo attuale del listino attuale e che deve stampare i prodotti e i prezzi presenti nel listino in quel momento! ( anche li stesso errore , sono bloccato). E' del tipo warning: passing argument 4 of insert_product makes integer from pointer without a cast... credo che cerchi di dirmi che la stringa che passo non possa essere passata in quel modo.. come faccio? lo dice anche per l'altra funzione per la WAREHOUSE ( argument 1)... Help!!