[c++] Problema con funzione di ricerca

di il
1 risposte

[c++] Problema con funzione di ricerca

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

1 Risposte

  • Re: [c++] Problema con funzione di ricerca

    
    definizione funzione
    bool Cerca_Prodotto(Magazzino &,int,char,int);
    
    svolgimento funzione
    bool Cerca_Prodotto(Magazzino &m,int dim,char c[DIM],int p)
    {
    ....
    }
    
    secondo te cosa c'è di diverso.
Devi accedere o registrarti per scrivere nel forum
1 risposte