henkilötunnuksen kyselykoodi?

Olisi tuossa tarkoituksena saada tehtyä ohjelma joka kysyy henkilötunnuksen (11 merkkiä muodossa 090675-678X) . Tunnuksen viimeinen merkki määräytyy seuraavalla säännöllä. Ohjelma tutkii syötetyn tunnuksen oikeellisuuden ja ilmoittaa, onko tunnus oikea vai ei.

Tarkistusmerkki on numero tai kirjain. Se saadaan jakamalla syntymäajan ja yksilönumeron muodostama yhdeksännumeroinen luku 31:llä, jolloin tarkistusmerkki määräytyy jakojäännöksen mukaan seuraavasti:

Jakojäännös Tarkistusmerkki

0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F
16 H
17 J
18 K
19 L
20 M
21 N
22 P
23 R
24 S
25 T
26 U
27 V
28 W
29 X
30 Y


OLISIKO neuvoja tämän ohjeman toteutukseen?

-kitos kaikille hyvän vastauksen antajille-
245448
Äänestä

Muut lukivat myös

Vastaukset 24

Vanhimmat

Miten ois että teet 31 merkkisen char-taulukon ja jaat tuon 9 numeroisen luvun 31:llä, otat taulukosta merkin jakojäännöksen osoittaman indeksin kohdalta?

Äänestä
  • Se, että se tarkastaa onko annettu tunnus OK? Olisiko koodia, jolla toteutta tuo, kun tämän tytön taidot eivät siihen riitä??

    Äänestä

  • Jaana kirjoitti:

    Se, että se tarkastaa onko annettu tunnus OK? Olisiko koodia, jolla toteutta tuo, kun tämän tytön taidot eivät siihen riitä??

    jollei taitosi riitä siihen ? Sulla nousee tie kuitenkin pystyyn seuraavassa tehtävässä...

    Äänestä

#include

int main(void)
{
const char * p ="0123456789ABCDEFHJKLMNPRSTUVXY";
char s[20];
scanf("%s",&s);
char tark= toupper(s[10]);
memmove(&s[6],&s[7],4);
s[9]='\0';
int stun=atoi(&s);
if (p[stun % 31]==tark) printf("Tarkiste oikein"); else printf("Tarkiste väärin");
return 0;
}
skratta inte!

Äänestä
  • Hyi sinua teet karhunpalveluksen vaan tekemällä liian valmista ;)

    Äänestä

  • minä kirjoitti:

    Hyi sinua teet karhunpalveluksen vaan tekemällä liian valmista ;)

    sehän on vielä pahasti kesken:)

    Äänestä

  • cee kirjoitti:

    sehän on vielä pahasti kesken:)

    Kaivataan lisätietoa kyseisestä ohjelmasta, kun tämän tytön taidot ovat aika rajalliset! Tuo edellinen koodinpätkä tuotti kolme erroria! ;)

    Äänestä

  • Jaana kirjoitti:

    Kaivataan lisätietoa kyseisestä ohjelmasta, kun tämän tytön taidot ovat aika rajalliset! Tuo edellinen koodinpätkä tuotti kolme erroria! ;)

    mitä virheitä?

    Äänestä

  • cee kirjoitti:

    mitä virheitä?

    täällä. Et opi mitään, jos et itse viitti.
    Sorry vaan.

    Äänestä

  • Jaana kirjoitti:

    Kaivataan lisätietoa kyseisestä ohjelmasta, kun tämän tytön taidot ovat aika rajalliset! Tuo edellinen koodinpätkä tuotti kolme erroria! ;)

    Jos tulee tämän tapaisia virheitä(mulla borland): "Warning W8065 test.c 12: Call to function 'toupper' with no prototype in function main", niin kyse on siitä ettei kääntäjä tiedä mistä kyseinen funktio löytyy.

    Olkoonkin yksi kotitehtävä etsiä noiden vaatimat header-tiedostot ;) Vinkki: Google

    Sitten toinen juttu mistä kääntäjäni itki oli että eräiden muuttujien esittely oli väärässä paikassa. elikkä: "Declaration is not allowed here in function main" ja rivinnumero.

    Ratkaisu: siirrä kyseisten muuttujien esittely mainin alkuun missä muutkin esittelyt on. Jätä kuitenkin muuttujien asettaminen entiselle paikalleen.

    Äänestä

  • Jaana kirjoitti:

    Kaivataan lisätietoa kyseisestä ohjelmasta, kun tämän tytön taidot ovat aika rajalliset! Tuo edellinen koodinpätkä tuotti kolme erroria! ;)

    Tiedoksi että tuo koodi ei ole kovinkaan kaunista, antaisin sille arvosanaksi ehkä 2...se esimerkiksi kaatuu kun käyttäjä antaa vääränlaisia syötteitä.

    Äänestä

  • Jaana kirjoitti:

    Kaivataan lisätietoa kyseisestä ohjelmasta, kun tämän tytön taidot ovat aika rajalliset! Tuo edellinen koodinpätkä tuotti kolme erroria! ;)

    Unohda koko esimerkkikoodi. "Jätkät kusettaa sua" tekstillä voi kuvata ko koodia.
    En kirjoita ratkaisua, sillä pelkästään kopioimalla et opi ohjelmointia. Mieti mahdollista ratkaisuun johtavaa toteutusta, kokeile, lue teoriaa ja ohjeita. Ja ennen kaikkea, hanki sellainen kääntäjä joka sisältää online helpin ja opettele käyttämään sitä. on tärkein näppäin aloittelevalle ohjelmoijalle - ja myös kokeneelle.

    Sen verran kuitenkin hellyn, että kirjoitan muutaman vihjeen erääksi ratkaisuksi.
    - Tee taulukko johon sijoitat tutkittavan sotun
    - Tee valmiiksi alustettu taulukko sos.turvanumeron tarkistusmerkeistä (onko esimerkissäsi 31. merkki oikein?)
    - Määrittele osoitin merkkijonomuuttujaan. Myöhemmin luet tutkittavan sotun merkit, - ilman 7. -merkkiä -, tämän muuttujn arvoksi.
    - Valitse sotu-taulukosta 11. merkki [10] erillisen char-muuttujan arvoksi
    - Lue kahdella for-silmukalla sotun merkit 1..6 ja 8..10 merkkijonomuuttujaan
    - Muuta merkkijonomuuttuja pitkäksi luvuksi atol() funktiolla
    - Laske edellä muodostetusta luvusta 31:n jakojäännös
    - Vertaa jakojäännöstä sotun 11. merkkiin
    - Vertailun perusteella näet onko tunnus muodostettu oikein

    Äänestä

  • Jaana kirjoitti:

    Kaivataan lisätietoa kyseisestä ohjelmasta, kun tämän tytön taidot ovat aika rajalliset! Tuo edellinen koodinpätkä tuotti kolme erroria! ;)

    kääntyi c:llä c :lla 3 virhettä.
    lisäksi W puuttuu
    mihinkäs laskun voisi lähettää vai meneenkö se koulun piikkiin ;)

    Äänestä

  • cee kirjoitti:

    kääntyi c:llä c :lla 3 virhettä.
    lisäksi W puuttuu
    mihinkäs laskun voisi lähettää vai meneenkö se koulun piikkiin ;)

    C :lla tosiaan!!

    Äänestä

  • Jaana kirjoitti:

    C :lla tosiaan!!

    Ei se ole ongelma jos ekalla käännöksellä tulee muutama virhe, siinä koneessa on näppäimistö, jolla virheet voi korjata. Se on ohjelmoijan jokapäiväistä työtä korjata kääntäjän _kohteliaasti_ selväkielisesti ilmoittamia virheitä. Kai sitä nyt tytöilätäkin voi odottaa edes jonkin sortin yrittämistä.

    Äänestä

  • Koodari kirjoitti:

    Ei se ole ongelma jos ekalla käännöksellä tulee muutama virhe, siinä koneessa on näppäimistö, jolla virheet voi korjata. Se on ohjelmoijan jokapäiväistä työtä korjata kääntäjän _kohteliaasti_ selväkielisesti ilmoittamia virheitä. Kai sitä nyt tytöilätäkin voi odottaa edes jonkin sortin yrittämistä.

    ...turhanpäiväiset kommentit ja mielipiteet voi esittää jossain muualla kuin tässä ketjussa!!

    Jos kysyttän apua, vastataan siihen ja jätetään turhat nälvimiset pois!

    Äänestä

  • VILLE L kirjoitti:

    ...turhanpäiväiset kommentit ja mielipiteet voi esittää jossain muualla kuin tässä ketjussa!!

    Jos kysyttän apua, vastataan siihen ja jätetään turhat nälvimiset pois!

    mutta tässä tapauksessa joku teettää vanhaa
    ohjelmoinnin opiskelun perusteisiin liittyvää
    tehtävää täällä eli lunttaa.

    Tai sitten kyseinen "Jaana" on pelkkä provo,
    missä hän hyvin onnistui.

    Muuten vastataan, kun kysytään ja ei kait sitä
    nyt aina tartte olla niin pipo tiukalla.

    Äänestä

  • #00 kirjoitti:

    mutta tässä tapauksessa joku teettää vanhaa
    ohjelmoinnin opiskelun perusteisiin liittyvää
    tehtävää täällä eli lunttaa.

    Tai sitten kyseinen "Jaana" on pelkkä provo,
    missä hän hyvin onnistui.

    Muuten vastataan, kun kysytään ja ei kait sitä
    nyt aina tartte olla niin pipo tiukalla.

    Kumpi oli suurempi provo 'Jaana'n kysymys, vai 'cee'n siihen ehdottama ratkaisukoodi?

    Äänestä

  • #00 kirjoitti:

    mutta tässä tapauksessa joku teettää vanhaa
    ohjelmoinnin opiskelun perusteisiin liittyvää
    tehtävää täällä eli lunttaa.

    Tai sitten kyseinen "Jaana" on pelkkä provo,
    missä hän hyvin onnistui.

    Muuten vastataan, kun kysytään ja ei kait sitä
    nyt aina tartte olla niin pipo tiukalla.

    Jos Jaana teettää täällä jotain töitänsä?!
    Se ei varmaan oikeuta muita nälvimään siitä!

    Mielestäni kysymykseen voi vastata, mutta ei ruveta arvostelemaan kyselijän motiiveja yms.!

    Äänestä

  • seurannut kirjoitti:

    Kumpi oli suurempi provo 'Jaana'n kysymys, vai 'cee'n siihen ehdottama ratkaisukoodi?

    cee:n koodi dokumentoimatonta spagettia.
    Eli ei sillä kylläkään mitään pisteitä
    olis mistään tullut.

    Onhan se hienoa, että ohjelmoimaan opetteleva
    kopioi vastaukset täältä.

    Perin juurin Cool.

    Äänestä

  • VILLE L kirjoitti:

    Jos Jaana teettää täällä jotain töitänsä?!
    Se ei varmaan oikeuta muita nälvimään siitä!

    Mielestäni kysymykseen voi vastata, mutta ei ruveta arvostelemaan kyselijän motiiveja yms.!

    On tyhjänpäivästä pelleilyä alkaa vaatimaan
    sukuselvitystä, motiivia tai murehtia vastaajien "karhunpalveluksia" jos joku vaivautuu kirjoittamaan asiallisen kysymyksen palstalle. FLUG-maailma on asia erikseen, siellä on rikollista kysyä palstoilla asiaa, johon joku on jossain päin maailmaa vastannut joskus historiassa tai kysyä ratkaisua ongelmaan, jota et ole itse miettinyt vähintään viittä vuotta...:)

    Äänestä

  • Koodari kirjoitti:

    Tiedoksi että tuo koodi ei ole kovinkaan kaunista, antaisin sille arvosanaksi ehkä 2...se esimerkiksi kaatuu kun käyttäjä antaa vääränlaisia syötteitä.

    Jopa kakkosen ? Aika paljon, ellei mitta-asteikko ole 1-10 ..

    Äänestä

  • Koodari kirjoitti:

    Tiedoksi että tuo koodi ei ole kovinkaan kaunista, antaisin sille arvosanaksi ehkä 2...se esimerkiksi kaatuu kun käyttäjä antaa vääränlaisia syötteitä.

    esimerkiksi sotu 999999-999e menee läpi!
    Elikkäs 2 on hieman liikaa, vai onko 99 mätäkuu?

    Äänestä

  • Kärpät kirjoitti:

    esimerkiksi sotu 999999-999e menee läpi!
    Elikkäs 2 on hieman liikaa, vai onko 99 mätäkuu?

    Ei mene läpi ellei viimeinen merkki ole f(=15)!
    9999999991==15;

    Äänestä

Kommentoi aloitusta


Jaana kirjoitti:

Olisi tuossa tarkoituksena saada tehtyä ohjelma joka kysyy henkilötunnuksen (11 merkkiä muodossa 090675-678X) . Tunnuksen viimeinen merkki määräytyy seuraavalla säännöllä. Ohjelma tutkii syötetyn tunnuksen oikeellisuuden ja ilmoittaa, onko tunnus oikea vai ei.

Tarkistusmerkki on numero tai kirjain. Se saadaan jakamalla syntymäajan ja yksilönumeron muodostama yhdeksännumeroinen luku 31:llä, jolloin tarkistusmerkki määräytyy jakojäännöksen mukaan seuraavasti:

Jakojäännös Tarkistusmerkki

0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F
16 H
17 J
18 K
19 L
20 M
21 N
22 P
23 R
24 S
25 T
26 U
27 V
28 W
29 X
30 Y


OLISIKO neuvoja tämän ohjeman toteutukseen?

-kitos kaikille hyvän vastauksen antajille-

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu