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

[c++] stryktura w strukturze + funkcje [ROZWIĄZANY]

Ostatnio zmodyfikowano 2013-01-30 20:31
Autor Wiadomość
damian302
Temat założony przez niniejszego użytkownika
[c++] stryktura w strukturze + funkcje [ROZWIĄZANY]
» 2013-01-30 17:19:57
Witam.

Mam taki oto kod, który napisałem:

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

struct tData
{ int dzien;
    int miesiac;
    int rok;
};

struct tOsoba
{ char nazwisko[ 20 ];
    char imie[ 15 ];
    tData dataUrodzenia;
};

void dane( tOsoba & rekord ) {
    cout << "Podaj nazwisko: ";
    cin >> rekord.nazwisko;
    cout << "Podaj imie: ";
    cin >> rekord.imie;
};

void dd( tData & date ) {
    cout << "Podaj dzien: ";
    cin >> date.dzien;
    cout << "Podja miesiac: ";
    cin >> date.miesiac;
    cout << "Podaj rok: ";
    cin >> date.rok;
}
void wyswietl( tOsoba rekord ) {
    cout << "Imie: " << rekord.imie << endl;
    cout << "Nazwisko: " << rekord.nazwisko << endl;
    cout << "Data: " << rekord.dataUrodzenia.dzien << "/" << rekord.dataUrodzenia.miesiac << "/" << rekord.dataUrodzenia.rok << endl;
};
int main() {
    tOsoba nowy;
    dane( nowy );
    dd( nowy.dataUrodzenia ); //<<-----1
    wyswietl( nowy );
    getch();
    return( 0 );
}

Mój problem, że linijka która jest oznaczona 1 mam być wewnątrz funkcji "dane", tyle tylko, że jak ją wkleję tak jak jest teraz to nie działa. Walczę z tym już 2 dzień i nie mam już pomysłów. Proszę o pomoc
P-75392
unimator
» 2013-01-30 18:10:57
C/C++
void dane( tOsoba & rekord ) {
    cout << "Podaj nazwisko: ";
    cin >> rekord.nazwisko;
    cout << "Podaj imie: ";
    cin >> rekord.imie;
    dd( rekord.dataUrodzenia );
};
P-75395
crash
» 2013-01-30 18:14:16
C/C++
#include <conio.h>
#include <iostream>
using namespace std;

struct tData
{ int dzien;
    int miesiac;
    int rok;
};

struct tOsoba
{ char nazwisko[ 20 ];
    char imie[ 15 ];
    tData dataUrodzenia;
};

void dd( tData & date ); //deklaracja funkcji, tera będzie działało

void dane( tOsoba & rekord ) {
    cout << "Podaj nazwisko: ";
    cin >> rekord.nazwisko;
    cout << "Podaj imie: ";
    cin >> rekord.imie;
   
    dd( rekord.dataUrodzenia ); //<<-----1
};

void dd( tData & date ) {
    cout << "Podaj dzien: ";
    cin >> date.dzien;
    cout << "Podja miesiac: ";
    cin >> date.miesiac;
    cout << "Podaj rok: ";
    cin >> date.rok;
}
void wyswietl( tOsoba rekord ) {
    cout << "Imie: " << rekord.imie << endl;
    cout << "Nazwisko: " << rekord.nazwisko << endl;
    cout << "Data: " << rekord.dataUrodzenia.dzien << "/" << rekord.dataUrodzenia.miesiac << "/" << rekord.dataUrodzenia.rok << endl;
};
int main() {
    tOsoba nowy;
    dane( nowy );
    //1
    wyswietl( nowy );
    getch();
    return( 0 );
}

Poczytaj o deklaracji i definicji funkcji. Dwa, taka mała sugestia, skoro używasz iostream, a to jest C++, to zamiast char[]/char* lepiej bo wygodniej jest używać std::string.

W funkcji dane chcesz użyć funkcji, która jest zdefiniowana poniżej jej, dlatego trzeba kompilator uprzedzić, że taka funkcja (dd) wystąpi gdzieś później w kodzie
P-75397
damian302
Temat założony przez niniejszego użytkownika
» 2013-01-30 20:31:22
Dzięki @crash za pomoc. Zapomniałem o tej kolejności i to było przyczyną. O deklaracjach już się naczytałem ale nie zwróciłem uwagi na tą kolejność. Char użyłem tu w przykładzie. W programie, gdzie jest podobny fragment wykorzystany używam string'ów.
P-75410
« 1 »
  Strona 1 z 1