Problem z klasą leapYear – błąd kompilacji

0

Wiatm
Napisałam program, ale wychodzi mi problem w miejscu gdzie, deklaruje klase leapYear.

int PESEL::leapYear is not a stacic member of 'class PESEL'
#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

class PESEL {

public:

    int NrPESEL [11];
    int KontrolaPESEL [10];
    char PodanyPESEL [11];
    int W;

    PESEL();

    int ObliczSume();

    void PobierzPESEL ();

    void SprawdzPESEL ();
    int RokUrodzenia();
    int DzienUrodzenia();
    int MiecUrodzenia();
    int checkDzien();
    int checkMiec();
    int leapYear(int rok);

};

PESEL ::PESEL ()
{
            KontrolaPESEL[0] = 1;
            KontrolaPESEL[1] = 3;
            KontrolaPESEL[2] = 7;
            KontrolaPESEL[3] = 9;
            KontrolaPESEL[4] = 1;
            KontrolaPESEL[5] = 3;
            KontrolaPESEL[6] = 7;
            KontrolaPESEL[7] = 9;
            KontrolaPESEL[8] = 1;
            KontrolaPESEL[9] = 3;
        };

int PESEL :: ObliczSume()
    {
        int Suma = 0;
        int i=0;
        int Wynik;
        while (i<10)
        {

            Suma = Suma + NrPESEL[i] * KontrolaPESEL[i];
            cout << Suma << endl;
            i ++;

        }



        cout << "To bylo obliczenie" << endl;
        cout << "Suma: " << Suma <<endl;

        cout<<Suma%10 <<endl;

        return Suma % 10;

    };

void PESEL :: PobierzPESEL()
    {

            cout << "Podaj pesel" << endl;
            cin >> PodanyPESEL;


};

void PESEL :: SprawdzPESEL()

{

    int a=0;
    while (a <11)
    {
    NrPESEL[a] = static_cast<int>(PodanyPESEL[a] - '0');
    cout << NrPESEL[a] << endl;
    a++;
    }
    cout << "To byl numer PESEL" << endl;
    cout << "a"<<a <<endl;






    W = 10 - ObliczSume() ;
        if (W ==10)
    W = 0;

    cout << W << endl;

        if(NrPESEL[11] == W)
            {
                if(checkDzien()&&checkDzien())
                {
                    cout << "Rok Urodznia: " << RokUrodzenia() << endl;
                    cout << "Miesiac urodzenia: " << MiecUrodzenia()<<endl;
                    cout << "Dzien urodzienia: " << DzienUrodzenia() << endl;
                }
                else
                {
                    cout << "Podane dane sa nieprawidlowe";
                }

                cout << "Pesel jest prawidlowy" << endl;
            }
             else
             {
                cout << "Pesel jest nieprawidlowy" << endl;
             }



};


int PESEL:: RokUrodzenia()
{
    int rok;
    int miec;

    rok = 10*NrPESEL[0];
    rok += NrPESEL[1];

    miec = 10*NrPESEL[2];
    miec+= NrPESEL[3];

    if (miec > 80 && miec < 93) {
rok += 1800;
}
else if (miec > 0 && miec < 13) {
rok += 1900;
}
else if (miec > 20 && miec < 33) {
rok += 2000;
}
else if (miec > 40 && miec < 53) {
rok += 2100;
}
else if (miec > 60 && miec< 73) {
rok += 2200;
}
return rok;
};

int PESEL::MiecUrodzenia()
{
int miec;
miec = 10 * NrPESEL[2];
miec += NrPESEL[3];
if (miec > 80 && miec < 93) {
miec -= 80;
}
else if (miec > 20 && miec < 33) {
miec -= 20;
}
else if (miec > 40 && miec < 53) {
miec -= 40;
}
else if (miec > 60 && miec < 73) {
miec -= 60;
}
return miec;
};

int PESEL::DzienUrodzenia()
{
int dzien;
dzien = 10 * NrPESEL[4];
dzien += NrPESEL[5];
return dzien;
};



int PESEL:: checkMiec()
{
int miec = MiecUrodzenia();
if (miec > 0 && miec < 13) {
return 1;
}
else {
        cout << "W peselu podano zle liczby miesiaca" <<endl;
return 0 ;
}
}

int PESEL :: checkDzien()
{
int rok = RokUrodzenia();
int miec = MiecUrodzenia();
int dzien = DzienUrodzenia();
if ((dzien >0 && dzien < 32) &&
(miec == 1 || miec == 3 || miec == 5 ||
miec == 7 || miec == 8 || miec == 10 ||
miec == 12)) {
return 1;
}
else if ((dzien >0 && dzien < 31) &&
(miec == 4 || miec == 6 || miec== 9 ||
miec == 11)) {
return 1;
}
else if ((dzien >0 && dzien < 30 && leapYear(rok)) ||
(dzien >0 && dzien < 29 && !leapYear(rok))) {
return 1;
}
else {
    cout << "Dane sa zle" << endl;
return 0;
}
};
int PESEL::leapYear(rok;)
{
    int rok
if (rok % 4 == 0 && rok % 100 != 0 || rok % 400 == 0)
return 1;
else
return 0;
};


int main() {
    PESEL oPesel;
    oPesel.PobierzPESEL();

    oPesel.SprawdzPESEL();

    _getch();

};
0
int PESEL::leapYear(rok;)
{
    int rok
if (rok % 4 == 0 && rok % 100 != 0 || rok % 400 == 0)
return 1;
else
return 0;
};

Na pewno wkleiłaś to co było podane do kompilatora? Bo ta definicja funkcji nie ma prawa działać

0

Dłuższego kodu nie było? :) Popracuj nad umieszczaniem kodu w znacznikach. Jak piszesz post to możesz przejść do zakładki podgląd i zobaczyć jak to będzie wyglądało po opublikowaniu. Co do niedziałającej implementacji tu masz poprawny kod:

int PESEL::leapYear(int rok)

kompilator musi wiedzieć jakiego typu jest rok no i ten średnik tam w tym nawiasie nie pasuje

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