Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Errore di compilazione riferito alla mia libreria personale.

    Salve, ho implementato in un file.h una serie di funzioni con un relativo commento che poi ho spostato nella cartella include del compilatore DevC++:
    codice:
    /*LISTA FUNZIONI PRESENTI NELLA LIBRERIA "funzioni.h" */
    
    
    // Massimo comune divisore (MCD) fra due numeri (m,n) con m>n.
    int MCD (int m,int n)
    {
        int r;
        
        if (m>n)
        {
            do
            {
                r=m%n;
                
                if (r==0)
                {
                    return n;
                }
            
                m=n;
                n=r;
            }
            while (r!=0);
        }
    }
    
    
    //Ordinamento di un vettore precedentemente caricato, inserire nei parametri attuali (Nome e dimensione del vettore)
    int ordinamento(int v[],int d)
    {  
        int i,j,s=0;
         
        for(i = 0 ; i < d-1 ; i++)
        {
              for(j = i+1 ; j < d ; j++)
              {
                    if(v[i]>v[j])
                    {
                              s = v[i];
                              v[i] = v[j];
                              v[j] = s;
                    }
              }
        }
    
    
       return v[d];
    }
    
    
    //Caricamento di un vettore, specificare nei parametri attuali (nome e dimensione del vettore).
    int caricamento(int v[],int d)
    {
        int i;
        
        for(i=0;i<d;i++)
        {
        cout<<"Scrivi il numero "<<i+1<<":";
        cin>>v[i];
        }
        
        return v[d];
    }
    
    
    //Controllo se un numero è primo, specificare nei parametri attuali(il numero); restituisce: True (se il numero è primo), False (se non lo è).  
    bool np (int n)
    {
        int i,r=0;
        bool primo = true;
        
        
        for (i=2;i<=n/2;i++)
        {
            r=n%i;
            
            if(r==0)
            {
                primo=false;
                break;
            }
            
        }
        return primo;
    }
    
    
    //Funzione media, specificare nella lista dei parametri attuali(il numero degli elementi).
    double media(int n)
    {
          int i,b,c=0,r;
     
          for(i=0;i<n;i++)
          {
            cout<<"Inserisci il numero: ";
            cin>>b;
            c+=b;
          }
        
          r=c/n;
          
          return r;
    }
    
    
    //Ricerca di un valore all' interno di un vettore, specificare nei parametri attuali(il nome del vettore e la dimensione).
    void controllo_valore(int v[],int d)
    {
        int i,n;
        
        cout<<"Quale numero stai cercando all interno del vettore? ";
        cin>>n;
        
        for(i=0;i<d;i++)
        {            
             if(v[i]==n)
             {
             cout<<"Il numero "<<n<<" e' presente nel vettore."<<endl;
             break;
             }
             if(i==d-1)
             cout<<"Il numero "<<n<<" e' presente nel vettore."<<endl;
        }
    }
    
    
    //Funzione che indica la frequenza con cui si ripete un dato, specificare nei parametri(nome e dimensione del vettore).
    void frequenza_dato(int v[],int d)
    {
         int j,n,i=0;
         
         cout<<"Quale dato stai cercando? ";
         cin>>n;
         
         for(j=0;j<d;j++)
          { 
            if(v[j]==n)
            i++;
          }
          
          if(i==0)
          cout<<"Il dato non e' presente."<<endl;
          else
          cout<<"Il dato si ripete: "<<i<<" volta/e."<<endl;
    }
    Ma quando richiamo la mia libreria con questa istruzione: #include <funzioni.h>, all'interno di un mio programma con altre librerie mi da una serie di errori legati all' I/O dei dati:
    codice:
    //Esempio di codice:
    
    #include <iostream>
    #include <funzioni.h>
    using namespace std;
    
    
    int main()
    {
       
        system("PAUSE");
        return 0;
    }
    codice:
    //Errori durante la compilazione:
    
    2 C:\Users\Utente\Desktop\abaca.cpp In file included from C:\Users\Utente\Desktop\abaca.cpp 
     C:\Dev-Cpp\include\funzioni.h In function `int caricamento(int*, int)': 
    54 C:\Dev-Cpp\include\funzioni.h `cout' undeclared (first use this function) 
      (Each undeclared identifier is reported only once for each function it appears in.) 
    55 C:\Dev-Cpp\include\funzioni.h `cin' undeclared (first use this function) 
     C:\Dev-Cpp\include\funzioni.h In function `double media(int)': 
    89 C:\Dev-Cpp\include\funzioni.h `cout' undeclared (first use this function) 
    90 C:\Dev-Cpp\include\funzioni.h `cin' undeclared (first use this function) 
     C:\Dev-Cpp\include\funzioni.h In function `void controllo_valore(int*, int)':
    104 C:\Dev-Cpp\include\funzioni.h `cout' undeclared (first use this function) 
    ecc...
    Se volete altre informazioni scrivetemelo. Grazie per il vostro aiuto.
    Ultima modifica di MItaly; 09-03-2014 a 14:41

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Il codice va postato nei tag CODE.

    Probabilmente manca un using namespace std; oppure un std:: prima di ogni cin cout e/o l'incusione della libreria iostream in abaca.cpp

    Comunque bastava leggere l'errore...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Scusa è il primo post che scrivo, la prossima volta staro più attento. Comunque l' using namespace std; nel file abaca.cpp c'è. E nel file funzioni.h non sapevo dove inserirlo e se inserirlo...

  4. #4
    Grazie, ho risolto.

  5. #5
    Occhio che se definisci le funzioni direttamente nel file .h devi marcarle come inline, altrimenti avrai errori di linker se includi il tuo header in più file .cpp dello stesso progetto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La solita confusione che si fa tra concetto di "libreria" e "file include" ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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.