Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742

    Semplice errore in c++

    Salve a tutti,
    non riesco a risolvere l'errore che mi viene dato in fase di compilazione in questo codice:

    #include <iostream>
    #include <cstdlib>
    using namespace std;
    int f(int, int);
    int main() {
    int x=1, y=2;
    y=f(y,x);
    cout<<"x= "<<x<<"y="<<y<<endl;
    }
    int f(int x, int &z){

    z=x+y; // y undlecared (first use this fuction)
    return z+1;
    }
    Questo perchè nella function non ho definito la y? Ho provato a mettere int y; ma mi stampa un altro errore.

    Grazie

  2. #2

    Re: Semplice errore in c++

    Originariamente inviato da kiapparo
    Questo perchè nella function non ho definito la y?
    Sì, ma per poterti dare una soluzione ci dovresti spiegare cosa dovrebbe fare quella funzione...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    E' una seplice funzione che fa un calcolo.
    E' un ersercizio dove devo rispondere alla fine che valori stampa la x e la y.
    X dovrebbe valere 1 e y dovrebbe valere 5.
    Ma compilandolo su dev-c++ mi viene dato quell'errore.

    Grazie

  4. #4

    Re: Semplice errore in c++

    Originariamente inviato da kiapparo
    [CODE]
    #include <iostream>
    #include <cstdlib>

    using namespace std;

    int f(int, int);

    int main()
    {
    int x=1, y=2;
    y=f(y,x);
    cout<<"x= "<<x<<"y="<<y<<endl;
    }

    int f(int x, int &z)
    {
    z=x+y; // y undlecared (first use this fuction)
    return z+1;
    }[CODE]
    Nella funzione
    int f(int x, int &z);
    non è stata dichiarata la variabile y, ecco il motivo di quell'errore, il compilatore
    non sa da dove salta fuori...
    Dovresti aggiugerla al prototipo della funzione.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742

    Re: Re: Semplice errore in c++

    Originariamente inviato da Samuele_70
    Nella funzione
    int f(int x, int &z);
    non è stata dichiarata la variabile y, ecco il motivo di quell'errore, il compilatore
    non sa da dove salta fuori...
    Dovresti aggiugerla al prototipo della funzione.
    Quindi stando a quello che dici dovrei aggiungere al prototipo un ulteriore int in questo modo:
    int f(int, int, int); ma così facendo mi da un errore: too few arguments to function `int f(int, int, int)'


  6. #6
    Hai ragione non avevo letto attentamente
    codice:
    #include <iostream>
    using namespace std;
    
    int f(int, int);
    
    int main()
    {
    	int x=1, y=2, somma;
    	somma = f(y, x);
    	cout<<"x = "<<x<<" y = "<<y;
    	cout<<"  somma = "<<somma<<endl;
    	cin.get();
    	return 0;
    }
    
    int f(int x, int y)
    {
    	return x + y;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    24
    codice:
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    int f(int, int);
    int main() {
    int x=1, y=2;
    y=f(y,x);
    cout<<"x= "<<x<<"y="<<y<<endl;
    }
    int f(int x, int &z){
    
    z=x+y; // y undlecared (first use this fuction) 
    return z+1;
    }
    magari sbaglio , ma il problema è che la funzione f(int, int) non vede la variabile y definita nel main(). Il programma compila e stampa x=1 y=5 se metti la y=2; come variabile globale.
    inoltre il prototipo di f non è uguale poi alla sua definizione:
    int f(int, int);
    ...
    int f(int x, int& z){
    ...
    }

    devono essere uguali.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    Originariamente inviato da Samuele_70
    Hai ragione non avevo letto attentamente
    codice:
    #include <iostream>
    using namespace std;
    
    int f(int, int);
    
    int main()
    {
    	int x=1, y=2, somma;
    	somma = f(y, x);
    	cout<<"x = "<<x<<" y = "<<y;
    	cout<<"  somma = "<<somma<<endl;
    	cin.get();
    	return 0;
    }
    
    int f(int x, int y)
    {
    	return x + y;
    }
    Grazie, ma così facendo non viene stampato x=1 e y=5

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    Originariamente inviato da eardin
    codice:
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    int f(int, int);
    int main() {
    int x=1, y=2;
    y=f(y,x);
    cout<<"x= "<<x<<"y="<<y<<endl;
    }
    int f(int x, int &z){
    
    z=x+y; // y undlecared (first use this fuction) 
    return z+1;
    }
    magari sbaglio , ma il problema è che la funzione f(int, int) non vede la variabile y definita nel main(). Il programma compila e stampa x=1 y=5 se metti la y=2; come variabile globale.
    inoltre il prototipo di f non è uguale poi alla sua definizione:
    int f(int, int);
    ...
    int f(int x, int& z){
    ...
    }

    devono essere uguali.
    infatti è questo il problema.
    Forse il prof avrà sbagliato a scrivere il codice...

  10. #10
    Allora o continuo io a non capire, oppure non hai spiegato bene cosa vuoi fare :master:
    S dichiari
    int x=1, y=2;
    Y non sarà mai = 5

    codice:
    int f(int x, int &z){
    
    z=x+y; // y undlecared (first use this fuction)
    return z+1;
    }
    Il risultato sarà (o meglio potrebbe, se fosse compilabile) = 4...

    E poi perchè modifichi il parametro z, se tanto restituisci il risultato alla fine della funzione ?
    In questo modo nel main
    codice:
     y=f(y,x);
    Verrà modificata sia la varibile x che la variabile y... :master:

    Forse è meglio se lo spieghi meglio cosa dovrebbe fare il codice
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.