Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Errore DEV

  1. #1

    Errore DEV

    ciao a tutti!
    sto tendando di scrivere un programma che mi permetta di gestire una rubrica.. qnd tento di compilare però il dev mi da questo errore:conversion from `rubrica*' to non-scalar type `rubrica' requested nel main quando scrivo le funzioni. qualcuno mi può dare una mano??

    MAIN
    codice:
    #include <cstdlib> 
    #include <iostream> 
    #include "header.h" 
    using namespace std; 
    int main(int argc, char *argv[]) {     
    int scelta, r;     
    rubrica c[50];         
    
     while(scelta!=0){                      
                            cout<<endl<<"\tRubrica"<<endl;                      
    cout<<"1)Inserisci Nuovo Contatto."<<endl;                    
    cout<<"2)Modifica Contatto."<<endl;                      
    cout<<"3)Elimina Contatto."<<endl;                      
    cout<<"4)Visualizza Contatto."<<endl;                      
    cout<<"0)Esci."<<endl;                                            cin>>scelta;                                           
     switch(scelta){
    case 1:NuovoContatto(c, r);                                    
    break;                                     
    case 2:Modifica(c, r);                                     
    break;                                     
    case 3:Elimina(c, r);                                     
    break;                                     
    case 4:Visualizza(c, r);                                     
    break;                                     }                      
    }       
    system("PAUSE");     
    return EXIT_SUCCESS; }

    HEADER.H
    codice:
    #ifndef header_h 
    #define header_h 
    #include<iostream> 
    #include "string.h" 
    #define N 256  
    
    using namespace std;  
    typedef char str [N]; 
    typedef struct{ str nome;                 
                          int numero, codice;} rubrica;  
    void NuovoContatto(rubrica, int &);  
    void Modifica(rubrica, int &) ;  
    void Elimina(rubrica, int &) ;  
    void Visualizza(rubrica, int &) ;  
    #endif
    HEADER.CPP
    codice:
    #include "header.h"  
    void NuovoContatto(rubrica c[], int &r) {      
    cout<<"Inserisci il numero di contatti da inserire :\n ";      
    cin>> r;      
    for (int i=0;i<r;i++){         
                                cout<<"Inserisci il codice del contatto:";          
                                cin>>c[i].codice;          
                                cout<<"Inserisci il nome:";         
                                cin>>c[i].nome;          
                                cout<<"Inserisci il numero:";          
                                cin>>c[i].numero;} 
    }  
    void Modifica(rubrica c[], int &r) {     
    int k;    
    cout<<"Inserisci il codice del contatto:"<<endl;     
    cin>>k;      
    for(int i=0;i<r;i++){             
                     if(k==c[i].codice){
                                             cout<<"Inserisci il nome:";
                                             cin>>c[i].nome;          
                                             cout<<"Inserisci il numero:";          
                                             cin>>c[i].numero;}   
                                                }                          
                               } 
    }  
    void Elimina(rubrica c[], int &r) 
    {     
    int k;     
    cout<<"Inserisci il codice del contatto:"<<endl;     
    cin>>k;      
    for(int i=0;i<r;i++){             
    if(k==c[i].codice)  c[i]=c[i+1];  }    
     r--; 
    }  
    void Visualizza(rubrica c[], int &r) 
    {
    cout<<"Codice"<<"      "<<"Nome"<<"     "<<"Numero"<<endl;     
    for(int i=0;i<r;i++){
    cout<<c[i].codice<<" "<<c[i].nome<<" "<<c[i].numero<<endl;
    }
     }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Nell'header hai dichiarato le funzioni con un dato di tipo "rubrica" in input, ma nel main le richiami con un array di tipo rubrica, quindi i tipi sono incompatibili. Anche le definizioni delle funzioni hanno come parametro un array di rubrica, probabilmente devi solo aggiustare i prototipi nell'header file.
    every day above ground is a good one

  3. #3
    ciao YuYevon intanto grazie x la risposta xò non ho capito ancora tnt bene..

    nel main io dichiaro sl una variabile di tipo rubrica(che è un record definito nell'header) e poi la utilizzo nelle varie funzioni.. in ogni caso cm dovrei risolvere??

  4. #4
    Si ha proprio ragone lui;guarda qui:
    codice:
    void NuovoContatto(rubrica [], int & );
    void Modifica(rubrica [], int & ) ;
    void Elimina(rubrica [], int & ) ;
    void Visualizza(rubrica [], int & ) ;
    Confrontalo con il tuo header e prova adesso

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    In main() non dichiari una variabile di tipo rubrica, ma un array di tipo rubrica. Tutte le funzioni che hai definito (in HEADER.CPP) hanno infatti questa forma

    codice:
    void NomeFunzione(rubrica c[], int &r)
    ma in HEADER.H hai invece

    codice:
    void NomeFunzione(rubrica, int &)
    Dovresti riscrivere i prototipi nell'header file come

    codice:
    void NomeFunzione(rubrica [], int &)
    every day above ground is a good one

  6. #6
    sono proprio un co*****ne....
    hai perfettamente ragione.. mi sono incasinato io tra dichiarazioni e altro.. ho capito sl ora l'errore k ho fatto nonostante sia banale.. cmq compila alla perfezione.. grazie mille a te e a ignazio x l'aiuto e la disponibilità!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.