Problem z funkcją , walidacja numeru PESEL
Ostatnio zmodyfikowano 2016-02-15 22:49
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 #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(); } |
|
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? :) |
|
carlosmay |
» 2016-02-15 00:32:27 nie ma wartości początkowej. Jak wprowadzany jest PESEL? |
|
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 |
|
michal11 |
» 2016-02-15 15:13:36 Wczytuj jako string. |
|
carlosmay |
» 2016-02-15 15:39:59 Albo oddzielaj spacjami liczby choć michal11'a sposób jest lepszy. |
|
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 ?
|
|
michal11 |
» 2016-02-15 20:57:05 Nie, chodzi o wczytywanie. Zamień for( int i = 0; i < 11; i++ ) { cin >> pesel[ i ]; }
na i później zamieniaj każdy znak stringa na cyfrę nr. PESEL if( tmp.size() != 11 ) { }
for( int i = 0; i < tmp.size(); ++i ) { pesel[ i ] = tmp[ i ] - '0'; }
|
|
« 1 » 2 |