Czesc wszystkim,
mam problem - jak w temacie - ze zmiana tablicy char na tab. int. Szukalem w google ale podane rozwiazania jakos nie dzialaja u mnie w programie - 1 z nich jest zawarte w kodzie.
Wiem ze tutaj jest caly skrypt do sprawdzenia poprawnosci numeru, ale jaki ma sens bezmyslne kopiowanie kodu (poza tym kompilator zglasza mi blad...)?
Moglibyscie zerknac na moj program? Po wpisaniu numeru PESEL program wisi, wnioskuje ze to przez bledna zmiane typu...
#include <iostream>
using namespace std;
class PESEL {
public:
int NrPESEL [11]; // nr PESEL po zmianie z typu char
int KontrolaPESEL [10]; // 10 liczb kontrolnych do sprawdzenia poprawnosci wyliczen
char PodanyPESEL [11]; // PESEL podany przez uzytkownika
int W; // zmienna do wylczen poprawnosci
PESEL();
int ObliczSume();
void PobierzPESEL ();
void SprawdzPESEL ();
};
PESEL ::PESEL () // narzedzia potrzebne do kontroli
{
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() // 1 wyliczenia do kontroli numeru
{
int Suma = 0;
int i=0;
while (i <=10)
Suma = Suma + NrPESEL[i] * KontrolaPESEL[i];
i++;
return Suma;
};
void PESEL :: PobierzPESEL() // zmiana [] char na [] int
{
char PodanyPESEL[11];
cout << "Podaj pesel" << endl;
cin >> PodanyPESEL;
int a=0;
while (a <=11)
NrPESEL[a] = static_cast<int>(PodanyPESEL[a]); // Moim zdaniem tutaj sie program sypeie...
a++;
};
void PESEL :: SprawdzPESEL() // wyliczenie i komunikat
{
W = ObliczSume() % 10;
if (W ==11)
W = 0;
if(NrPESEL[11] == W) {
cout << "Pesel jest prawidlowy" << endl;
} else {
cout << "Pesel jest nieprawidlowy" << endl;
}
};
int main() {
PESEL oPesel;
oPesel.PobierzPESEL();
oPesel.SprawdzPESEL();
system ("PAUSE");
};