Jæja, engin grein hefur enn komið svo þið fáið bara annan skammt af Modulus bulli núna.

Annar notkunarmöguleiki, sem hefur kannski ögn meira notagildi en að finna út hvort tala er slétt eða oddatala. Það er að vinna með töflur.

En áður en lengra er haldið, þá er rétt að minna á að hægt er að reikna modulus “til baka” þó notagildið sé kannski ekki ýkja mikið, og þó!

13 Mod 3 er einn eins og við fengum út í fyrri grein, ef við deilum með heiltölum (13 div 3 fyrir Delphi notendur) 13 / 3 fáum við út 4, 4 * 3 er jafnt og 12 og 12 + 1 (sem er útkoman úr 13 Mod 3) hlýtur að vera jafnt og 13, þannig að við erum komin aftur með sömu tölu og í upphafi. Formúlan er því:

A = ((A / B) * B) + (A Mod B)

Einnig má ekki gleymast að við erum að tala um heiltölu reikninga.

Frábært, en hvað var ég að rugla um töflur?

Júbb, tökum sem dæmi að við séum að smíða forrit sem þarf að nota spilastokk. Spilastokkur er 52 spil í 4 sortum (Spaði, hjarta, tígull lauf). Hver sort hefur 13 spil, þannig er hægt að búa til litla töflu yfir öll spilin.

(Athugið að ef þessi tafla brenglast þá er það á ábyrgð huga, prófið þá bara að endurgera töfluna í notepad):

0 1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36 37 38
39 40 41 42 43 44 45 46 47 48 49 50 51

Þá sjáum við að auðvelt er að segja sem svo að fyrsta línan sé spaði, næsta hjarta og svo framvegis. Fyrsti dálkur sé ás, næsti tvistur, þriðji þristur og svo framvegis.

En hvernig vitum við þá að talan 31 sé tígul sexa? Ef við byrjum á að finna út sortina, þá vitum við að það eru 13 spil í hverri sort, það er eiginlega allt og sum sem við þurfum að vita, þannig getum við notað heiltölu deilingu og deilt 31 með 13 og við fáum út 2, nú gætu sumir bent á að lína 2 sýni hjartað, en ég minni á að við byrjum að telja frá og með núlli í c++ (og öðrum forritunarmálum sem ég þekki). Þannig að talan 2 vísar í þriðju línu.

Flott mál, nú vitum við af hvaða sort spilið er, nú viljum við vita hvaða spil það er, til þess notum við Modulus, 31 Mod 13 (aftur vegna þess að það eru 13 spil í sort) og við fáum út 5, við gleymum ekki að við byrjum að telja frá og með núlli og því verður 5 í raun að sex miðað við okkar kerfi. Nú vitum við að spilið er Tígulsexa.

Dæmi um kóða til að finna út spil eftir tölugildi:

// Segjum að spilið hafi gildið 23 í töflunni
int iCard = 23;

// Reynum að finna út sortina,
int iSuit = (iCard / 13) + 1;

// Finnum svo út gildi spilsins
int iValue = (iCard % 13) + 1;

// Gefum sortinni nafn
char szSuit[30];
switch (iSuit)
{
case 1:
strcpy(szSuit, “Spades”);
break;
case 2:
strcpy(szSuit, “Hearts”);
break;
case 3:
strcpy(szSuit, “Diamonds”);
break;
case 4:
strcpy(szSuit, “Clubs”);
break;
default:
strcpy(szSuit, “Hey, this must be joker!”);
break;
}

// Þá er komið að því að búa til texta breytu fyrir gildið á spilinu
char szValue[5];
switch (iValue)
{
case 1:
strcpy(szValue, “Ace”);
break;
case 11:
strcpy(szValue, “Jack”);
break;
case 12:
strcpy(szValue, “Queen”);
break;
case 13:
strcpy(szValue, “King”);
break;
default:
itoa(iValue, szValue, 10);
break;
}

// Birtum svo niðurstöðuna:
printf(“The card is %s of %s”, szValue, szSuit);

Í stuttu máli, heiltöludeiling með fjölda dálka gefur okkur til baka línunúmerið, Mod með fjölda dálka gefur okkur númer dálksins.

Jæja, þá ættu allir að byrja að skrifa litla spilaleiki og prófa sig áfram með þessa aðferð, tja eða leysa þetta verkefni sem ég fékk á einhverju námskeiðinu,

Þú fékkst beiðni frá fiskvinnslufyrirtæki um að búa til forrit sem reiknar út hversu margar pakkningar fyrirtækið þarf að panta til að geta pakkað og sent út þann fisk sem fyrirtækið er með á lagernum hjá sér. Til eru tvær stærðir af pakkningum, 50 kg kassar og eins kg kassar. Verkstjórinn á að geta slegið inn fjölda kg sem fyrirtækið hefur á lager, og forritið á að reikna út hversu margar pakkningar af hvorri stærð þarf að panta. Athugið að nákvæmlega 50 kg þurfa að fara í 50 kg kassa en það er mun hagkvæmari pakkning. Forritið þarf sem sagt að finna út hversu marga 50 kg kassa hægt er að fylla alveg, og prenta svo út afganginn til að hægt sé að panta hann einnig.
Forritið á svo að prenta út fjölda hvors kassa fyrir sig sem fyrirtækið þarf til að pakka fiskinum sínum.

(Megi hugameister fara vel með greinina og ekki skemma töflu vora)