Wywoływanie funkcji w funkcji

0

Witam!
Mam do Was małe pytanie z którym pewnie szybko sobie poradzicie. Ja niestety nie potrafię znaleźć na to odpowiedzi.
Otóż jak zrobić żeby funkcja wywoływała inną funkcję? Zobrazuję to:
Mam dajmy na to funkcję:

int hasla (char haslo, char haslo2)
{
      cout << "Podaj haslo: "; cin>> haslo;
      cout << "Podaj drugie haslo: "; cin>>haslo2;

    do
    {

        cout << "Podaj ponownie haslo: " << endl;
        break;
    }
    while (haslo == haslo2);


}

I tą funkcję teraz chciałbym wywołać w głównym programie tak żeby ta funkcja tam zadziałała, a nie tylko zwracała dane.
Coś na zasadzie wklejenia tej wcześniej zdefiniowanej funkcji do głównego programu żeby nie musieć bez przerwy podawać na nowo tego kodu. Jestem bardzo początkujący w kwestii programowania, ale staram się robić nieco bardziej skomplikowane (dla mnie) programy niż tylko wpisywanie i odczytywanie danych.

dodanie znacznika <code class="cpp"> - Furious Programming

0
 
#include <iostream>

using namespace std;

void funkcja()
{
  cout << "jestem funkcja";
}

void funkcja1()
{
  for(int i = 0; i < 5 ; i++)
  {
    cout << "wywoluje funkcje";
    funkcja();
  }
}

int main()
{
  funkcja1();
}

nie wiem czy chodzilo Ci o cos takiego.

0

Nie rozumiem pytania.

int main(){
  funkcja(); // voila
}

Poza tym char mieści 1 znak. Jesteś pewien że zmieścisz całe hasło na jednej literce? Bo i nie do końca rozumiem czemu przekazujesz do funkcji zmienne na te "hasła", bo nie ma to najmniejszego sensu...

0

Ogólnie miałoby to wyglądać mniej więcej tak:
http://4programmers.net/Pastebin/3045

Edit: Zmienna ma być string nie char. Niedopatrzenie
Później wykonywałbym różne zadania na wcześniej wczytanych danych, ale zatrzymałem się na tym momencie i nie wiem jak dalej ruszyć.

0

Zmień typ argumentów z char na string(tak przypominam bo w tym kodzie na pastebin masz dalej chary)
i po prostu wywołaj funkcje hasla(pierwszy.JakiesHaslo, pierwszy.JakiesHaslo2)
a najlepiej jabyś uczynił funkcje hasla składową, wtedy nic nie musisz przekazywać do funkcji.

1

Ale o co w ogóle chodzi? Czemu po ludzku nie zwrócisz z tej funkcji danych wczytanych do struktury? Albo nie zrobisz tak:

#include <iostream>
#include <string>

using namespace std;

    struct uzytkownik
{
    string login, e_mail, haslo;
    int kod_bezpieczenstwa;
};

  void wczytajHaslo(uzytkownik& user)
{
      string haslo, haslo2;
    do
    {
      cout << "Podaj haslo: "; cin>> haslo;
      cout << "Podaj haslo drugi raz: "; cin>>haslo2;
    }
    while (haslo != haslo2);
    user.haslo = haslo;
}

    int main()
{
    uzytkownicy pierwszy, drugi, trzeci;
    //
    wczytajHaslo(pierwszy);
    wczytajHaslo(drugi);
    wczytajHaslo(trzeci);
    return 0;
}

(poprawiłem logikę tej funkcji wczytującej hasło bo była bez sensu...)

0
#include <iostream>
#include <string>

using namespace std;

    struct uzytkownicy
{
    string login, e_mail, haslo, haslo2;
    int kod_bezpieczenstwa;

};


    int main()
{
    uzytkownicy pierwszy, drugi, trzeci;
    cout << "Podaj kolejno: " << endl;
    cout << "Login dla pierwszego uzytkownika: "; cin >> pierwszy.login;
    cout << "E-mail dla pierwszego uzytkownika: "; cin >> pierwszy.e_mail;
    cout << "Podaj dwa razy Twoje haslo" << endl;

    do
    {
        cout << "Podaj pierwsze haslo: "; cin >> pierwszy.haslo;
        cout << "Podaj drugie haslo: "; cin >> pierwszy.haslo2;
        cin.get ();
        if (pierwszy.haslo != pierwszy.haslo2)
        {
            cout << "Podaj ponownie hasla: " << endl;
        }
    }
        while (pierwszy.haslo != pierwszy.haslo2);

}

Ten kod działa tak jak chciałbym żeby działało z tym, że nie chciałbym na nowo za każdym użytkownikiem kopiować linijek do-while. chciałbym ją wywoływać dodając tylko dane dla kolejnych uzytkownikow. Wybacz jeżeli nie bardzo rozumiesz o co mi chodzi, staram się to jakoś wytłumaczyć. ;D

1

Więc dowiedz się czym są funkcje składowe, utwórz taką funkcje wczytującą dane.
Dzięki temu wywołania będą w postaci user.WczytajDane().

2
#include <iostream>
#include <string>
 
using namespace std;
 
    struct uzytkownik
{
    string login, e_mail, haslo, haslo2;
    int kod_bezpieczenstwa;
};
 
  uzytkownik wczytaj()
{
    uzytkownik user;
    cout << "Podaj kolejno: " << endl;
    cout << "Login uzytkownika: "; cin >> user.login;
    cout << "E-mail uzytkownika: "; cin >> user.e_mail;
    cout << "Podaj dwa razy Twoje haslo" << endl;
    do
    {
      cout << "Podaj haslo: "; cin>> user.haslo;
      cout << "Podaj haslo drugi raz: "; cin>>user.haslo2;
    }
    while (user.haslo != user.haslo2);
    return user;
}
 
    int main()
{
    uzytkownicy pierwszy, drugi, trzeci;
    pierwszy = wczytaj();
    drugi = wczytaj();
    trzeci = wczytaj();
    return 0;
}
0

Shalom dokładnie o to mi chodziło, dzięki wielkie. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1