Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17

    C++ dichiarazione di una funzione

    Ragazzi al corso di elementi di informatica ci hanno spiegato come usare le funzioni,ho provato ad applicarlo ma non ho capito perchè mi da errore su input(r,V,k); mi potreste dire come mai? e soprattutto come posso sistemare la cosa?
    (per piacere non siate troppo brevi,non date per scontato che io sia un esperto xD)

    #include <iostream>
    #include <stdlib.h>

    using namespace std;

    int main(int argc, char *argv[])
    {
    const int num_element=150;
    int V[num_element],A[num_element];
    int r,r2;
    int k;
    input(r,V,k);


    system("PAUSE");
    return 0;
    }
    void input(int& r,int U[],int &k){
    int i;
    cout<<"inserisci riempimento"<<endl;
    cin>>r;
    cout<<"inserisci valore k"<<endl;
    cin>>k;
    for(i=0;i<r;i++){
    cout<<"inserisci valore numero"<<i+1<<endl;
    cin>>U[i++];
    }
    }

  2. #2
    Se una funzione è definita dopo quella corrente devi scriverne prima il prototipo (ovvero la definizione della funzione privata del corpo) per consentire al compilatore di sapere da subito che parametri richiede, che tipo restituisce, eccetera.
    codice:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    // prototipo della funzione
    void input(int& r,int U[],int &k);
    
    int main(int argc, char *argv[])
    {
        const int num_element=150;
        int V[num_element],A[num_element];
        int r,r2;
        int k;
        input(r,V,k);
    
    
        system("PAUSE");
        return 0;
    }
    
    void input(int& r,int U[],int &k)
    {
        int i;
        cout<<"inserisci riempimento"<<endl;
        cin>>r;
        cout<<"inserisci valore k"<<endl;
        cin>>k;
        for(i=0; i<r; i++)
        {
            cout<<"inserisci valore numero"<<i+1<<endl;
            cin>>U[i++];
        }
    }
    in generale è buona norma scrivere tutti i prototipi delle funzioni definite del .cpp corrente in cima al file, dopo le inclusioni degli header, o, anche meglio, in un header separato che viene poi incluso (questo è utile se si ha un progetto con più file).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17

    un altra domandina?

    okok,ho risolto però mi da errore
    invalid conversion from `int*' to `int' per quanto riguarda la funzione copia_array...cosa alquanto strana perchè è void.....

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: un altra domandina?

    Originariamente inviato da Sophos90
    okok,ho risolto però mi da errore
    invalid conversion from `int*' to `int' per quanto riguarda la funzione copia_array...cosa alquanto strana perchè è void.....
    E dove sarebbe questa funzione copia_array ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17
    scusa credevo di aver postato tutto il programma,cmq sta qui:
    #include <iostream>
    #include <stdlib.h>

    using namespace std;
    void input(int &r,int U[],int &k);
    void copia_array(int r,const int V[],int k,int &r2,int A[]);
    int min(int r,const int v[]);
    void output_array( int r,const int V[]);




    int main(int argc, char *argv[])
    {
    const int num_element=150;
    int V[num_element],A[num_element];
    int r,r2;
    int k;


    input(r,V,k);
    copia_array (r,V,A,r2);
    m1=min (r,V);
    m2=min (r2,A);
    output_array (r2,V);
    output (m1,m2);


    system("PAUSE");
    return 0;
    }
    void input(int &r,int U[],int &k){
    int i;
    cout<<"inserisci riempimento"<<endl;
    cin>>r;
    cout<<"inserisci valore k"<<endl;
    cin>>k;
    for(i=0;i<r;i++){
    cout<<"inserisci valore numero"<<i+1<<endl;
    cin>>U[i++];
    }
    }
    void copia_array(int r,const int V[],int k,int &r2,int A[]){
    int i,j;
    j=0;
    for(i=0;i<r;i++){
    if(V[i]>k){
    A[j++]=V[i];
    }
    r2=j;
    }

    int min( int r,const int, v[]){
    int i;
    m=V[0];
    for (i=0;i<r;i++){
    if(V[i]<m){
    m=V[i];
    }
    }
    void output_array( int r,const int V[]){
    for (i=0,i<r,i++){
    cout<<V[i];
    }
    }

    void output (int m1,int m2){
    cout<<"il minimo del pirmo array e' "<<m1<<"il minimo del secondo array e'"<<m2<<endl;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Basta fare un po' di attenzione ...

    La funzione è

    void copia_array(int r,const int V[],int k,int &r2,int A[])

    e tu la chiami

    copia_array (r,V,A,r2);

    in cui gli ultimi due parametri sono scambiati ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17
    ah quindi è una questione di ordineXD scusa e ke sono mancato alla spiegazione delle funzioni e non mi hanno detto questa cosaXD
    Grazie!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Sophos90
    ah quindi è una questione di ordineXD
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17
    cmq continua a darmi lo stesso errore

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    I parametri della funzione sono 5

    int r, const int V[], int k, int &r2, int A[]

    nella chiamata non hai usato il terzo e hai invertito gli ultimi
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.