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

Problem z funkcją , walidacja numeru PESEL

Ostatnio zmodyfikowano 2016-02-15 22:49
Autor Wiadomość
Pablitto
Temat założony przez niniejszego użytkownika
Problem z funkcją , walidacja numeru PESEL
» 2016-02-14 21:13:32
Hej,

Mam problem z programem, który wyrzuca błędne obliczenia, co ciekawe nie było żadnych problemów dopóki nie wprowadziłem funkcji

Kod na tą chwilę wygląda tak, gdy usunę funkcję plec , a tablice pesel[11] przeniose wnetrza funkcji poprawny_pesel, wszystko dziala okej.Gdzie popelniam blad?
Pozdrawiam
C/C++
#include <iostream>

using namespace std;

int pesel[ 11 ];


void plec()


{
   
   
    if( pesel[ 9 ] % 2 == 0 )
   
         cout << "Jestes kobieta" << endl;
   
    else
   
         cout << "Jestes facetem" << endl;
   
}







void poprawny_pesel()

{
   
   
    int suma_kontrolna;
    int wagi[] = { 1, 3, 7, 9, 1, 3, 7, 9, 1, 3 };
   
   
    for( int i = 0; i < 11; i++ )
    {
        cin >> pesel[ i ];
    }
   
   
    for( int j = 0; j < 10; j++ )
    {
       
        suma_kontrolna += pesel[ j ] * wagi[ j ];
       
    }
   
    suma_kontrolna %= 10;
    suma_kontrolna = 10 - suma_kontrolna;
    suma_kontrolna %= 10;
   
    cout << "Suma kontrolna wynosi " << suma_kontrolna << endl;
   
   
    if( suma_kontrolna == pesel[ 10 ] )
    {
        cout << "Numer pesel jest poprawny!\n";
    }
   
    else
   
    {
        cout << "Numer pesel jest niepoprawny!\n";
    }
   
}


int main()
{
   
   
    cout << "Program sprawdza poprawnosc numeru PESEL" << endl;
   
    cout << "Podaj Pesel" << endl;
   
   
    poprawny_pesel();
    plec();
   
   
}
P-144863
Mancini
» 2016-02-15 00:08:17
   suma_kontrolna %= 10;
   suma_kontrolna = 10 - suma_kontrolna;
   suma_kontrolna %= 10;

Po co robisz po raz drugi modulo 10? :)
P-144874
carlosmay
» 2016-02-15 00:32:27
int suma_kontrolna;
nie ma wartości początkowej.

Jak wprowadzany jest PESEL?
P-144877
Pablitto
Temat założony przez niniejszego użytkownika
» 2016-02-15 15:03:38
carlosmay dzieki, dziala.

Zastanawiam się w jaki sposób zrobić aby PESEL był mógl wczytywany w formie ciągłej tzn żeby nie trzeba było po każdej cyfrze wciskać ENTER?

Pozdrawiam
P-144894
michal11
» 2016-02-15 15:13:36
Wczytuj jako string.
P-144896
carlosmay
» 2016-02-15 15:39:59
Albo oddzielaj spacjami liczby choć michal11'a sposób jest lepszy.
P-144900
Pablitto
Temat założony przez niniejszego użytkownika
» 2016-02-15 19:43:41
Czy chodzi o to zeby tablica była typu string ?

P-144911
michal11
» 2016-02-15 20:57:05
Nie, chodzi o wczytywanie. Zamień
C/C++
for( int i = 0; i < 11; i++ )
{
    cin >> pesel[ i ];
}
na
C/C++
string tmp;
cin >> tmp;

i później zamieniaj każdy znak stringa na cyfrę nr. PESEL
C/C++
if( tmp.size() != 11 )
{
    //za długi/za krótki nr. pesel
}

for( int i = 0; i < tmp.size(); ++i )
{
    pesel[ i ] = tmp[ i ] - '0';
}
P-144913
« 1 » 2
  Strona 1 z 2 Następna strona