Ciao a tutti!
Nella creazione di una funzione che dato il Codice di un Prodotto determina se esso è presente e in caso affermativo fornisce la sua posizione all'interno del vettore Magazzino ho riscontrato il seguente errore a cui non riesco a trovare una soluzione:
43 invalid conversion from `char*' to `char'
43 initializing argument 3 of `bool Cerca_Prodotto(Prodotto (&)[10], int, char, int)'
ecco il sorgente
#include <cstdlib>
#include <iostream>
using namespace std;
const int DIM=10;
bool trovato = false;
struct Prodotto{
char Codice[DIM];
char Descrizione[151];
int Qta;
};
typedef Prodotto Magazzino[DIM];
void Inserisci_DatiProdotto(Prodotto &);
void Visualizza_DatiProdotto(Prodotto &);
void Crea_Magazzino(Magazzino &,int);
void Visualizza_Magazzino(Magazzino &,int);
bool Cerca_Prodotto(Magazzino &,int,char,int);
int main(int argc, char *argv[]){
//Codice prova funzioni Prodotto
/*Prodotto p1;
Inserisci_DatiProdotto(p1);
Visualizza_DatiProdotto(p1);*/
Magazzino M;
int n;
Crea_Magazzino(M,n);
Visualizza_Magazzino(M,n);
system("PAUSE");
char C[DIM];
int pos=-1;
cout << "\nRicerca Prodotto.";
cout << "\n Inserire il Codice: ";
cin.ignore();
cin.getline(C,DIM);
if(Cerca_Prodotto(M,n,C,pos)) cout <<"\nProdotto presente in Magazzino. Posizione: "<< pos;
else cout <<"\nProdotto NON presente in Magazzino.";
system("PAUSE");
return 0;
}
void Inserisci_DatiProdotto(Prodotto &p){
cin.ignore();
cout << "\nInserire Codice Prodotto(max 50 caratteri): ";
cin.getline(p.Codice,51);
cout << "\nInserire una descrizione(max 150 caratteri): ";
cin.getline(p.Descrizione,151);
cout << "\nInserire Quantita': ";
cin >> p.Qta;
}
void Visualizza_DatiProdotto(Prodotto &p){
cout << "\nDati Prodotto:\n" << p.Codice << "\n" << p.Descrizione << "\n" << p.Qta << "\n";
}
void Crea_Magazzino(Magazzino &m,int dim){
cout << "\nDimensione nuovo Magazzino (MAX 10): ";
cin >> dim;
for (int i=0; i<dim; i++)
Inserisci_DatiProdotto(m[i]);
}
void Visualizza_Magazzino(Magazzino &m,int dim){ //in questa funzione evitare di chiedere all'utente la dimensione del magazzino
cout << "\nLettura Magazzino (MAX 10): ";
cin >> dim;
cout << "\nContenuto Magazzino:\n";
for (int i=0; i<dim; i++)
Visualizza_DatiProdotto(m[i]);
}
bool Cerca_Prodotto(Magazzino &m,int dim,char c[DIM],int p){
trovato = false;
for (int i=0; i<dim; i++){
if (m[i].Codice==c){
p=i;
trovato= true;
}
}
return trovato;
}
Potete aiutarmi?
Inoltre, come da nota alla funzione Visualizza_Magazzino, sto cercando un metodo per impedire all'utente di dichiarare la dimensione del Magazzino in lettura;
infine ho notato che nella funzione Cerca_Prodotto eliminando la dicitura [DIM] al 3° parametro mi dà il seguente errore:
81 ISO C++ forbids comparison between pointer and integer
Potete spiegarmi il perché?
Thank you in advance