• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie "Pesel" SPOJ

Object Storage Arubacloud
0 głosów
404 wizyt
pytanie zadane 3 października 2019 w SPOJ przez Bartek K. Nowicjusz (230 p.)
edycja 4 października 2019 przez Bartek K.

Pytanie dotyczy fragmentu kodu napisanego na potrzeby zadania "Pesel" ze spoja. Dla przykładu "44051401458" kod przekształca prawidłowo wszystkie cyfry oprócz piątej i dziewiątej, które powinny zostać niezmienione, lecz program zamienia 1 na 7, a 4 na 28. Pozostałe niezmieniane cyfry czyli pierwsza i ostatnia zgadzają się. Nie mam pojęcia dlaczego tak się dzieje.

Program ma pobrać 11-cyfrowy pesel, następnie na każdej cyfrze ma wykonać następujące operacje:

Pierwszą cyfrę mnożymy przez 1,
drugą cyfrę mnożymy przez 3,
trzecią cyfrę mnożymy przez 7,
czwarta cyfrę mnożymy przez 9,
piątą cyfrę mnożymy przez 1,
szóstą cyfrę mnożymy przez 3,
siódmą cyfrę mnożymy przez 7,
ósmą cyfrę mnożymy przez 9,
dziewiątą cyfrę mnożymy przez 1,
dziesiątą cyfrę mnożymy przez 3,
jedenastą cyfrę mnożymy przez 1.

Następnie ma to zsumować i sprawdzić czy ostatnia cyfra to 0.

#include <iostream>

using namespace std;

int main()
{
    unsigned long long pesel, n=1;
    cin>>pesel;
    int pesel2[11];

    for(int i=0; i<11; i++)
    {
        pesel2[i]=(pesel/n)%10;
        n=n*10;
    }

    int suma=0;

    for(int i=0; i<11; i++)
    {
        switch(i)
        {
        case 1:
        case 5:
        case 9:
            pesel2[i]=pesel2[i]*3;
            break;
        case 2:
        case 6:
            pesel2[i]=pesel2[i]*7;
            break;
        case 3:
        case 7:
            pesel2[i]=pesel2[i]*9;
            break;
        }
        cout<<pesel2[i]<<" ";
    }
    return 0;
}

 

komentarz 3 października 2019 przez Szahid Pasjonat (20,930 p.)
Podaj treść
1
komentarz 3 października 2019 przez tkz Nałogowiec (42,000 p.)
błąd w switchu, zobacz jak go zapisałeś.
komentarz 4 października 2019 przez Bartek K. Nowicjusz (230 p.)
Nie wiem co jest nie tak w tym switchu.
komentarz 4 października 2019 przez Bartek K. Nowicjusz (230 p.)
edycja 4 października 2019 przez Bartek K.
Problemem okazało się to, że pętla rozdzielająca pesel i wpisująca pojedyncze cyfry do tabeli wpisywała te cyfry w odwrotnej kolejności przez co mnożenie w switchu wykonywało się  w kolejności:

8*1, 5*3, 4*7, 1*9, 0*1, 4*3, 1*7, 5*9, 0*1, 4*3, 4*1

zamiast

4*1, 4*3, 0*7, 5*9, 1*1, 4*3, 0*7, 1*9, 4*1, 5*3, 8*1

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 5,339 wizyt
pytanie zadane 28 kwietnia 2016 w C i C++ przez drive879 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 673 wizyt
pytanie zadane 25 lipca 2018 w SPOJ przez Deriquest Użytkownik (550 p.)
0 głosów
1 odpowiedź 349 wizyt
pytanie zadane 1 listopada 2019 w C i C++ przez creend Gaduła (4,700 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...