Forum » Pomoč in nasveti » c# Nujna pomoč
c# Nujna pomoč
enrikio ::
V šoli smo dobili nalogo, ki jo moramo rešiti v C# (Visual Studio). Koda naj bi bila zelo kratka, vendar se mi ne sanja kako program napisati. Spodaj sem podal nalogo. Vsem hvala za pomoč!
1.1 Navodilo za izdelavo davčne številke
Davčna številka je sestavljena iz osmih številk; sedem je naključno izbranih, osma pa je izračunana
po modulu 11:
prvih sedem mest je osnovna številka, ki je naključno izbrana iz nabora številk od 1.000.000
do 9.999.999,
na osmem mestu je kontrolna številka, izračunana po modulu 11.
Postopek izračuna kontrolne številke:
posamezno številko osnovne številke pomnožimo s konstantnimi ponderji 8, 7, 6, 5, 4, 3 in
2,
zmnožke seštejemo,
seštevek delimo z 11,
ostanek deljenja odštejemo od 11 in razlika je kontrolna številka.
Če je ostanek deljenja 1 in je razlika zato 10, je kontrolna številka 0. Če je ostanek deljenja 0 in je
razlika zato 11, se ta osnovna številka izključi iz nabora možnih davčnih številk.
Primer:
osnovna številka: 1 5 0 1 2 5 5
konstantni ponderji: 8,7,6,5,4,3,2
seštevek zmnožkov: 8 + 35 + 0 + 5 + 8 + 15 + 10 = 81
seštevek delimo z 11: 7
ostanek je: 4
razlika do 11: 7 (kontrolna št.)
davčna številka: 15012557
1.1 Navodilo za izdelavo davčne številke
Davčna številka je sestavljena iz osmih številk; sedem je naključno izbranih, osma pa je izračunana
po modulu 11:
prvih sedem mest je osnovna številka, ki je naključno izbrana iz nabora številk od 1.000.000
do 9.999.999,
na osmem mestu je kontrolna številka, izračunana po modulu 11.
Postopek izračuna kontrolne številke:
posamezno številko osnovne številke pomnožimo s konstantnimi ponderji 8, 7, 6, 5, 4, 3 in
2,
zmnožke seštejemo,
seštevek delimo z 11,
ostanek deljenja odštejemo od 11 in razlika je kontrolna številka.
Če je ostanek deljenja 1 in je razlika zato 10, je kontrolna številka 0. Če je ostanek deljenja 0 in je
razlika zato 11, se ta osnovna številka izključi iz nabora možnih davčnih številk.
Primer:
osnovna številka: 1 5 0 1 2 5 5
konstantni ponderji: 8,7,6,5,4,3,2
seštevek zmnožkov: 8 + 35 + 0 + 5 + 8 + 15 + 10 = 81
seštevek delimo z 11: 7
ostanek je: 4
razlika do 11: 7 (kontrolna št.)
davčna številka: 15012557
Yacked2 ::
Primer v javi, najlažje boš napisal funkcijo ki ti z generira vse 8 mestne številke in jih sproti spušča skozi funkciji, ki jih preveri, če je pravilka naj so izpiše.
Spodnja funkcija vrne True/False na vnešeno davčno številko:
Spodnja funkcija vrne True/False na vnešeno davčno številko:
public static boolean check(int stevilka) { boolean pravilnost = false; char[] cifre = ("" + stevilka).toCharArray(); int vsota = 0; int n = 8; for(int i =0; i < cifre.length-1;i++) { int a = Character.digit(cifre[i],10); vsota = vsota + (n*a); n--; } int mod = vsota % 11; int ostanek = 11-mod; if(ostanek == 10) { ostanek=1; } int last = Character.digit(cifre[7], 10); if(last==ostanek) { pravilnost=true; } return pravilnost; }
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Zgodovina sprememb…
- spremenil: Yacked2 ()
Sukaaloo ::
Zelo zanimiva naloga...osebno imam rad C# toda tole je že kar zahtevno, me pa zanima če bi lahko kdo napisal CELO nalogo saj jo rad kasneje preučim, prosim če bi si kdo vzel čas...Hvala že za vnaprej :)
darkolord ::
Še ena kratka C# varjanta zgornje kode:
public static bool check(int stevilka) { var razlika = 11 - stevilka.ToString().Take(7).Select ((x, i) => (int)Char.GetNumericValue(x) * (8 - i)).Sum() % 11; if (razlika == 10) razlika = 0; return (stevilka > 10000000 && stevilka <= 99999999 && Char.GetNumericValue(stevilka.ToString()[7]) == razlika); }
garamond ::
In še krajši Python zgornje kode. Zelo klobasast in nepregleden :D
def ctrl(num): diff = 11 - sum([int(x) * (8 - i) for (i, x) in enumerate(str(num)[:-1])]) % 11 return 10000000 < num < 99999999 and str(diff)[-1] is str(num)[-1]
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne (strani: 1 2 3 4 … 24 25 26 27 )Oddelek: Programiranje | 332564 (72567) | Macketina |
» | Izvršba na bančnem računu (strani: 1 2 )Oddelek: Loža | 30889 (28170) | OZZY |
» | Slučajnost?Oddelek: Loža | 2790 (2003) | MrStein |
» | Kontrolna vrednost -Oddelek: Programiranje | 1004 (729) | harvey |
» | Davčna številka v bazi - vprašanje redundatnosiOddelek: Pomoč in nasveti | 14112 (13350) | gokky |