Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C++]Procedura

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    87

    [C++]Procedura

    Ciao a tutti! ho fatto qualche ricerca sul forum ma ancora non riesco bene a capire come utilizzare una procedura,ho provato a farne una stupidissima:

    void swap(int x,int y)
    {
    int z;
    z=x;
    x=y;
    y=z;
    }

    So che una procedura,in quanto tale,non restituisce alcun valore in uscita,immagino quindi che si limiti ad apportare modifiche quando viene invocata.E' proprio questo il problema,non capisco come chiamarla.Cioè è possibile mostrare questo scambio?pensavo quindi,dopo inizializzazioni varie,di mettere un cout per mostrare i valori iniziali di a e b(parametri effettivi),a questo punto pensavo di mettere semplicemente swap(a,b);e subito dopo fare un altro cout che mostri semplicemente a e b(che a questo punto dovrebbero essersi scambiati). Tipo:

    cout<<"i valori sono:\n"<<a<<"e\n"<<b<<"\n";
    swap(a,b);
    cout<<"ora sono:\n"<<a<<"e\n"<<b<<"\n";

    è possibile? Grazie mille ciao!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' possibile ... ma la swap scritta in quel modo non scambierà le due variabili. Le devi passare per indirizzo.

    P.S. Occhio al titolo ... e al regolamento
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    87
    Perchè al regolamento?O_o comunque è vero ho provato facendo

    #include<iostream>
    using namespace std;
    void swap(int &x,int &y)
    {
    int z;
    z=x;
    x=y;
    y=z;
    }
    int main()
    {
    int a,b;
    cout<<"inserisci due valori\n";
    cin>>a>>b;
    cout<<"quindi a="<<a<<"e b="<<b<<"\n";
    swap(a,b);
    cout<<"ora a="<<a<<"e b="<<b<<"\n";
    system("pause");
    return 0;
    }

    e ora effettivamente mi mostra lo scambio,ma quindi senza il passaggio per indirizzo a che serve una procedura di questo tipo?(abbiate pazienza XD) quindi chiamando per riferimento viene modificato l'indirizzo del parametro effettivo,di conseguenza,ci verrà fuori il valore collegato a quell'indirizzo giusto?in questo caso facendo la chiamata per valore non mi viene fuori niente perchè parte dal presupposto che ci sia un valore che viene restituito,mentre la procedura di valori non può restituirne di per se.Grazie mille.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    87
    Avrei un'altra domanda,so che quando si ha a che fare con dati strutturati il valore dovrebbe passare automaticamente senza fare chiamate per indirizzo o che.Sapete dirmi come chiamare la procedura del tipo? :

    void piuuno(int v[],int dim)
    {
    int i;
    for(i=0;i<dim;i++)
    v[i]++;
    }

    io ho provato a chiamarla scrivendo

    #include<iostream>
    using namespace std;
    void piuuno(int v[],int dim)
    {
    int i;
    for(i=0;i<dim;i++)
    v[i]++;
    }
    int main()
    {
    int p[8]={0,1,2,3,4,5,6,7};
    cout<<p[8];
    piuuno(p[8],8);
    cout<<p[8];
    system("pause");
    return 0;
    }
    ma sono andato veramente a caso,difatti mi da errore e riporta " invalid conversion from `int' to `int*' questa parte purtroppo non l'abbiamo riportata,ci siamo limitati a guardare la procedura in aula.Grazie mille ciao!

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    codice:
    piuuno(p,8);
    Rivediti i puntatori.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.