sprawdzanie płci z numeru PESEL

sprawdzanie płci z numeru PESEL
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam wszystkich!
Mam problem, gdyż mam napisać program, który sprawdza i podaje płeć na podstawie danego numeru PESEL. Napisałem poniższy program, ale muszę konieczne zastosować w nim pętlę i sprawić, by w przypadku wciśnięcia po prostu klawisza ENTER zamiast podania kodu PESEL program automatycznie kończył działanie. Proszę o możliwie szybką pomoc!
Kod:

#include <stdio.h>
int main()
{
char tab[12];
printf("Podaj swoj numer PESEL: \n");
scanf("%s",tab);
if (tab[9] & 1) printf("Posiadacz powyzszego numeru PESEL jest mezczyzna.\n");
else printf("Posiadacz powyzszego numeru PESEL jest kobieta.\n");
return 0;
}

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Czytaj znak po znaku.

  • Rejestracja: dni
  • Ostatnio: dni
0

#include <stdio.h>
int main()
{
char tab[12];
printf("Podaj swoj numer PESEL: \n");
for(int i=0;i<=10;i++)
{
scanf("%d",&tab[i]);
}
if (tab[9] & 1) printf("Posiadacz powyzszego numeru PESEL jest mezczyzna.\n");
else printf("Posiadacz powyzszego numeru PESEL jest kobieta.\n");
return 0;
}

Teraz jest z pętlą, kompiluje się ale później na końcu jest błąd. Czy da się zrobic to w pętli, ale tak żeby nie trzeba było zatwierdzać wpisanej liczby enterem? I jak zrobić, by w przypadku wcisniecia ENTER zamiast najpierw jakiejś liczby program kończył działanie? Z góry dziękuję za pomoc, niby prosty program a takie mam problemy...

  • Rejestracja: dni
  • Ostatnio: dni
0

Ta instrukcja służy do sprawdzania czy liczba jest parzysta, czy nie. Czy się mylę?

Asmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Olsztyn
0

Według mnie powinno być tab[9]%2==0. Tak bym to napisał w c++, chociaż w c może być inaczej :P

  • Rejestracja: dni
  • Ostatnio: dni
0

Niestety nie w tym rzecz, bo ze zwykłym dzieleniem modulo jest to samo :/ Bardzo proszę o kolejne komentarze

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
char tab[12]={0};
printf("Podaj swoj numer PESEL: ");
for(int i=0;i<11;++i) scanf("%c",&tab[i]);
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuję bardzo, pozostał jednak problem: jak zakończyć działanie programu w przypadku wciśnięcia klawisza ENTER przed uprzednim wpisaniem kodu PESEL? Trzeba użyć pętli while?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
int i;
for(i=0;i<11;++i) if((scanf("%c",&tab[i])!=1)||(tab[i]=='\n')) break;
if(i!=11) return 1;
  • Rejestracja: dni
  • Ostatnio: dni
0

Hmm.. Teraz znowu gdy naciskam ENTER, to dodatkowo pojawia mi się któraś z instrukcji z tego ostatniego ifa poza pętlą. Oto kod:
#include <stdio.h>
int main()
{
char tab[12]={0};
printf("Podaj swoj numer PESEL: \n");
for(int i=0;i<11;i++)
{
if((scanf("%c",&tab[i])!=1)||(tab[i]=='\n')) break;
}
if (tab[9]&1) printf("Posiadacz powyzszego numeru PESEL jest mezczyzna.\n");
else printf("Posiadacz powyzszego numeru PESEL jest kobieta.\n");
return 0;
}

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Bo jest trzy istotne różnicy.

  • Rejestracja: dni
  • Ostatnio: dni
0

Dobra, już sobie poradziłem, dziękuję bardzo wszystkim za pomoc! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.