Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

void funkcja(???) - jak to zrobić?

Ostatnio zmodyfikowano 2010-04-03 19:42
Autor Wiadomość
marek
Temat założony przez niniejszego użytkownika
void funkcja(???) - jak to zrobić?
» 2010-04-01 19:07:30
Męczę się nad tym od pewnego czasu i już gotów jestem wywiesić białą flagę!.
Jest np. program
C/C++
#include <iostream>
int main()
{
    using std::cout;
    int a = 4, b = 5, c, d;
    c = a + b;
    d = a - b;
    cout << "c=" << c << "\n";
    cout << "d=" << d << "\n";
    return 0;
}
Chciałbym go zastąpić programem z funkcją typu void. Wiem, że mają być użyte wskaźniki. Zarys tego programu wyglądałby tak.
C/C++
#include <iostream>
void funkcja( ???? );
int main()
{
    using std::cout;
    int a = 4, b = 5, c, d;
    funkcja( ???? );
    cout << "c=" << c << "\n";
    cout << "d=" << d << "\n";
    return 0;
}
void funkcja( ???? );
{
    ....
    ....
}

HELP!!!
P-15684
kamillo121
» 2010-04-01 19:23:16
użyj referencji
Po co piszesz , jak strona jest "zamrożona " ?
P-15685
marek
Temat założony przez niniejszego użytkownika
» 2010-04-01 20:12:42
kamillo121
Wiem, że to ma coś wspólnego z referencjami i tak próbowałem. Bez efektów. Jestem ciut namolny. Ale czy mógłbyś mi zamienić mój zarys programu na prawdziwy? Wiem, że dla osoby która wie jak to zrobić, to "no problem". Specjalnie wybrałem prosty przykład.
Co to  znaczy że strona jest "zamrożona"? Przecież mogę na niej pisać.
P-15686
kamillo121
» 2010-04-01 20:54:35
Chodziło mi o to ,że strona jak to napisał Pan Piotr upada , zerknij na stronę główną portalu .
najprościej to zrobić tak:

C/C++
void matma( int & a, int & b, int & c, char * z )
{
    if( z == "+" )
         a = b + c;
    else if( z == "-" )
         a = b - c;
   
}

wywołujesz np.


C/C++
int a, a2, b, c;

b = 20;
c = 30;

matma( a, b, c, "+" );
matma( a2, b, c, "-" );
Nie wiem czy to jest dobry sposób ale na próby chyba dobry ;]
P-15687
marek
Temat założony przez niniejszego użytkownika
» 2010-04-01 21:15:23
Dzięki. Zaraz będę trawił.
P-15688
Elaine
» 2010-04-01 21:50:39
Od kiedy c-stringi porównuje się przez ==, co?
P-15690
kamillo121
» 2010-04-01 22:22:35
fakt,mała pomyłka.
P-15691
marek
Temat założony przez niniejszego użytkownika
Jeszcze raz wielkie dzięki dla Kamilo121!
» 2010-04-02 10:21:38
Działa! Moje wiekopomne dzieło powinno więc wyglądać tak:
C/C++
#include <iostream>
void funkcja( int & a, int & b, int & c, int & d );
int main()
{
    using std::cout;
    int x = 5, y = 3, z1, z2;
    funkcja( x, y, z1, z2 );
    cout << "z1=" << z1 << "\n";
    cout << "z2=" << z2 << "\n";
    return 0;
}
void funkcja( int & a, int & b, int & c, int & d )
{
    c = a + b;
    d = a - b;
}

Mam jeszcze 2 pytania

1. Przy "zwykłych" funkcjach w deklaracji (pierwsza linijka za #include) dopuszczalne jest podawanie tylko typów argumentów np (int,int,int,int). Czy tu  też jest coś takiego?

2. Pytanie natury bardziej ogólnej. Ja w tej metodzie widzę same zalety. Np. to że na wyjściu funkcji może być wiele parametrów, a nie tylko jeden. Jedyna wada to bardziej skomplikowana forma zapisu, ale tu też twórcy C++ mogliby łatwo tę wadę usunąć.
To po co w ogóle stworzono funkcję ze zwrotem jednego parametru poprzez return parametr?

P-15695
« 1 » 2 3
  Strona 1 z 3 Następna strona