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

Przekazywanie zmiennych miedzy funkcjami.

Ostatnio zmodyfikowano 2012-04-15 21:51
Autor Wiadomość
Trust
Temat założony przez niniejszego użytkownika
» 2012-04-14 18:33:18
Jak widać w piszrwszym poście, nie umieszczałem w każdej instrukcji return, bo to raczej nie potrzebne.
P-54512
jankowalski25
» 2012-04-14 18:55:13
» Kurs C++ » Poziom 2Funkcje, a słowo kluczowe return lekcja

Zwracanie wartości przez funkcję

Pamiętaj, że funkcja, która zwraca wartość musi zwracać ją zawsze.
P-54513
Trust
Temat założony przez niniejszego użytkownika
» 2012-04-14 22:11:33
Gdy np chcę aby funkcja imię przekazała wpisane imię do funkcji poczatek to wywala mi błąd w
cout << imie << " dzis grasz o milion !!!";
o treści  no match for call to '(std::string {aka std::basic_string<char>}) ()' .

Niby to rozumiem, ale jak mam napisać coś skomplikowanego (przynajmniej dla mnie) to nie wychodzi mi. 



C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;


string poczatek( string imie )
{
    cout << imie << " dzis grasz o milion !!!";
   
    return poczatek;
}



string imie()
{
    string imie;
    cout << "Podaj imie :";
    cin >> imie;
    return imie;
}
string przekazywanieimie()
{
   
}

int gwiazdki()
{
    int i = 0;
    for( i = 1; i <= 25; i++ )
    {
        cout << "*";
    }
}

int wstep()
{
   
    cout << gwiazdki() << endl;
    cout << "Wjtaj w Milionerach !!!" << endl;
    cout << gwiazdki() << endl << endl;
   
}


int main()
{
    srand( time( NULL ) );
   
    cout << wstep();
    cout << imie();
    cout << poczatek();
   
   
    getch();
    return 0;
   
}
P-54536
Stefek
» 2012-04-15 00:27:41
Masz problem ze zrozumieniem tego, co to jest wartość zwracana przez funkcję i jak odbywa się sterowanie programu. Twoja funkcja wstep() zwraca wartość całkowita(przynajmniej powinna z return) oraz wypisuje coś tam na ekran. Gdy napiszesz tak :
C/C++
cout << wstep(); // inaczej "wypisz to co zwroci funkcja wstep(), a żeby wiedzieć co zwróci, to najpierw musi się wykonać.

}
to najpierw wykona się funkcja, czyli zrobi to, co zawarte jest w jej ciele(tutaj wypisanie na ekran(cout w funkcji)), potem zwróci jakąś liczbę, a na końcu wypisze to , co zostało zwrócone(cout w main).

Inne błędy są analogiczne do tego, poczytaj jeszcze o zwracaniu void, tutaj się przyda. Mam nadzieję że pomogłem :), oraz że poprawnie wstawiłem kod itp, to mój pierwszy post na tym forum :)


P-54537
jankowalski25
» 2012-04-15 12:46:23
C/C++
string poczatek( string imie )
{
    cout << imie << " dzis grasz o milion !!!";
   
    return poczatek;
}
Co ty tutaj zwracasz?
C/C++
string imie()
{
    string imie;
    cout << "Podaj imie :";
    cin >> imie;
    return imie;
}
Lepiej nie tworzyć nazw funkcji i zmiennych o takich samych nazwach.
C/C++
string przekazywanieimie()
{
   
}
Do czego służy ta funkcja?
C/C++
int gwiazdki()
{
    int i = 0;
    for( i = 1; i <= 25; i++ )
    {
        cout << "*";
    }
}
Ta funkcja nie wypisuje 25 gwiazdek (jeśli o to ci chodziło).
C/C++
int wstep()
{
   
    cout << gwiazdki() << endl;
    cout << "Wjtaj w Milionerach !!!" << endl;
    cout << gwiazdki() << endl << endl;
   
}
Jakie dane zwraca ta funkcja? Nie ma tu instrukcji return.
P-54543
Schulze13
» 2012-04-15 14:44:06
Kod trochę zmodyfikowany, ale i tak nie działa. Miałem problem z typem, ale prototypy funkcji są tu jak najbardziej wymagane (nie wszystkich)

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
//prototypy wszystkich funkcji informuja kompilator o ich istnieniu !!!koncza sie srednikiem!!!
string poczatek( string imie );
string imie();
char przekazywanieimie();
int gwiazdki();
int wstep();

string poczatek( string imie )
{
    cout << imie << " dzis grasz o milion !!!"; //wyswitla imie
}



string imie()
{
    char imie;
    cout << "Podaj imie :";
    return imie;
}
// niepojmuje co te funkje robia: imie() przekazywanieimie( string imie )
string przekazywanieimie( string imie )
{
    cin << imie;
    return imie; //zwraca wpisane imie
}

int gwiazdki()
{
    int i = 0;
    for( i = 1; i <= 25; i++ )
    {
        cout << "*";
    }
    return 0;
}

int wstep()
{
    gwiazdki();
    cout << "\n";
    cout << "Wjtaj w Milionerach !!!" << endl;
    gwiazdki();
    cout << "\n";
    return 0;
}

int main()
{
    char imie
    wstep(); //usnalem cout przed funkcjami (maja byc wykonaane)
    cout << "\n";
    imie();
    cout << "\n";
    char imie = przekazywanieimie( imie ); // tworzy zmienna imie i pobiera ja za pomoca funkcji przekazywanieimie() ktora zwraca pobrane
    cout << "\n";
    poczatek( imie );
   
   
    getch();
    return 0;
   
}

Co do nazewnictwa zmiennych i funkcji. Większość programistów pisze funkcje z dużej litery np "PrzykladowaFunkcja", a zmienną z małej np "przykladowaZmienna"
P-54550
jankowalski25
» 2012-04-15 19:51:30
C/C++
string poczatek( string imie )
{
    cout << imie << " dzis grasz o milion !!!"; //wyswitla imie
}
Pamiętaj, że funkcja, która zwraca wartość musi zwracać ją zawsze.
C/C++
string imie()
{
    char imie;
    cout << "Podaj imie :";
    return imie;
}
Funkcja jest typu string a zwraca typ char?
C/C++
int wstep()
{
    gwiazdki();
    cout << "\n";
    cout << "Wjtaj w Milionerach !!!" << endl;
    gwiazdki();
    cout << "\n";
    return 0;
}
W jakim celu ta funkcja zwraca 0? Jeśli nie musisz niczego zwracać, to nie zwracaj czegokolwiek na siłę.
C/C++
string imie()
//...
char imie = przekazywanieimie( imie );
Lepiej nie tworzyć funkcji i zmiennych o takich samych nazwach.
P-54572
SeaMonster131
» 2012-04-15 20:52:15
C/C++
string przekazywanieimie( string imie )
{
    cin << imie;
    return imie; //zwraca wpisane imie
}
cin << imie; ?

I nie wiem po co to:
C/C++
//prototypy wszystkich funkcji informuja kompilator o ich istnieniu !!!koncza sie srednikiem!!!
string poczatek( string imie );
string imie();
char przekazywanieimie();
int gwiazdki();
int wstep();
?
P-54577
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona