JAVA problem s napisanim podmienky
-
lacijawa
Star
- Príspevky: 680
- Registrovaný: 02 dec 2008, 19:31
- Bydlisko: Košice
- Kontaktovať používateľa:
JAVA problem s napisanim podmienky
Ahojte,
pouzivam Javu. Snazim sa spravit domacu s nasledujucim zadanim:
Naučte korytnačky triedy ZadanaKorytnacka metódu, ktorá pre zadané kladné celé číslo n vráti toto číslo zaokrúhlené na zadaný počet miest pred desatinnou čiarkou (parameter pocetMiest).
Príklady:
•zaokruhli(123, 0) = 123, zaokruhli(128, 0) = 128
•zaokruhli(123, 1) = 120, zaokruhli(128, 1) = 130
•zaokruhli(123, 2) = 100, zaokruhli(128, 2) = 100, zaokruhli(168, 2) = 200
•zaokruhli(51123, 3) = 51000, zaokruhli(54523, 3) = 55000
public long zaokruhli(long n, int pocetMiest)
Pri riešení tejto úlohy nie je dovolené využívať metódy z Math ani konverziu celého čísla na číslo s desatinnou čiarkou (strata presnosti).
Chcem napisat podmienku s IF-om ale neviem ako nato. Mam, ze ak je cifra vecsia ako 5 tak vtedy sa musi ta cifra pred tou zvecsit o 1. Ale neviem ako to tam zapisat.
Dakujem za odpovede
pouzivam Javu. Snazim sa spravit domacu s nasledujucim zadanim:
Naučte korytnačky triedy ZadanaKorytnacka metódu, ktorá pre zadané kladné celé číslo n vráti toto číslo zaokrúhlené na zadaný počet miest pred desatinnou čiarkou (parameter pocetMiest).
Príklady:
•zaokruhli(123, 0) = 123, zaokruhli(128, 0) = 128
•zaokruhli(123, 1) = 120, zaokruhli(128, 1) = 130
•zaokruhli(123, 2) = 100, zaokruhli(128, 2) = 100, zaokruhli(168, 2) = 200
•zaokruhli(51123, 3) = 51000, zaokruhli(54523, 3) = 55000
public long zaokruhli(long n, int pocetMiest)
Pri riešení tejto úlohy nie je dovolené využívať metódy z Math ani konverziu celého čísla na číslo s desatinnou čiarkou (strata presnosti).
Chcem napisat podmienku s IF-om ale neviem ako nato. Mam, ze ak je cifra vecsia ako 5 tak vtedy sa musi ta cifra pred tou zvecsit o 1. Ale neviem ako to tam zapisat.
Dakujem za odpovede
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: JAVA problem s napisanim podmienky
Naco podmienky, treba matematiku
Kód: Vybrať všetko
int zaokruhly( int x, int r)
{
int mant = 1;
for(int i=0;i<r;i++) mant*=10;
x/=mant;
x*=mant;
return x;
}
-
mirak2
Hardcore addict
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: JAVA problem s napisanim podmienky
dalsi upjskar... harrison vyuzil "feature"-u javy (alebo skor vlastnost), ale bez komentara mu to vela nepovie... a obavam sa, ze toto je riesenie, za ktore by chlapec nedostal plny pocet bodov (nie je dovolené využívať metódy z Math ani konverziu celého čísla na číslo s desatinnou čiarkou (strata presnosti))
odpocitaj od n cislo n modulo 10^pocetmiest a mas vysledok... ako to naprogramujes je uz tvoja vec
da sa to urobit na jeden riadok, aj na desat
odpocitaj od n cislo n modulo 10^pocetmiest a mas vysledok... ako to naprogramujes je uz tvoja vec
Re: JAVA problem s napisanim podmienky
Herrison nevyužil vlastnosť javy, ale vlastnosť počítača. A ak už pri programovaní počítača nemôžem využívať vlastnosti počítača, tak nič nie je viac také, ako sa zdalo. Dúha je v odtieňoch šedej a obloha je krvavo červená. A kto má takto žiť...
Re: JAVA problem s napisanim podmienky
Ak dobre počítam, tak harrisonove ani mirakove navrhované riešenie nezaokrúhľuje smerom hore, keďže obidve by napr pre volanie
vrátili 100 namiesto 200...
Kód: Vybrať všetko
zaokruhli(168, 2);Re: JAVA problem s napisanim podmienky
Pravdu máš, k harrisonovmu kódu by ešte bolo treba pridať zaokrúhlovanie v podobe jednoduchého pričítania polovice jednotky. Malá kozmetická úprava 
-
mirak2
Hardcore addict
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: JAVA problem s napisanim podmienky
wtf? ak ti povedia otvor pocitac, ale nesmies pouzit srubovak, tak predsa len pouzijes, lebo je to prirodzene tak robit? viem o com je ten predmet a niekedy je dobre rozmyslat stylom "co tym autor myslel"... a toto to nie je.
podobny priklad: na skuske (praktickej programovacej) z tohto predmetu jeden typek nakodil korektne bezivo program podla zadania s jedinym detailom... nevyuzil jediny objekt, proste to cele bolo proceduralne, tu static, tam static, a ked uz na predmete, kde sa mas naucit mysliet a programovat objektovo to robis takto, tak nemozes ocakavat, ze dostanes lepsie ako FX, hoci ti to bezi.
rozumies, co ja chapem?
podobny priklad: na skuske (praktickej programovacej) z tohto predmetu jeden typek nakodil korektne bezivo program podla zadania s jedinym detailom... nevyuzil jediny objekt, proste to cele bolo proceduralne, tu static, tam static, a ked uz na predmete, kde sa mas naucit mysliet a programovat objektovo to robis takto, tak nemozes ocakavat, ze dostanes lepsie ako FX, hoci ti to bezi.
rozumies, co ja chapem?
jaj pravda. no nic, idem radsej spat, lebo po 48 hodinach s len 6 hodinami spanku nie som schopny normalne rozmyslatkonyk87 napísal:Ak dobre počítam, tak harrisonove ani mirakove navrhované riešenie nezaokrúhľuje smerom hore, keďže obidve by napr pre volanievrátili 100 namiesto 200...Kód: Vybrať všetko
zaokruhli(168, 2);
Re: JAVA problem s napisanim podmienky
Tak OOP sa v prvom rade treba učiť na príkladoch, pre ktoré to má zmysel. Podmienky sa majú učiť na príkladoch, kde majú zmysel. Cykly deto. Ale dosť, nechce sa mi zhadzovať upjš. Aj keď by bolo treba kúsok.
Naivný postup ale spočíva v podstate v tom istom, len si všetko zaobstarávam sám. Takže je to blud, neviem, ako "hlúpejšie" by sa to ešte dalo spraviť.
Naivný postup ale spočíva v podstate v tom istom, len si všetko zaobstarávam sám. Takže je to blud, neviem, ako "hlúpejšie" by sa to ešte dalo spraviť.
Kód: Vybrať všetko
int zaokruhli( int x, int r)
{
int mul = 1;
while ( r-- > 0 )
{
int prenos;
int m = x % 10; // Vytiahnem poslednu cifru cisla
if ( m >= 5 ) prenos = 1; // System
else prenos = 0; // Zaokruhlovania
mul *= 10; // "citac nul" = pamatam si, kolko nul nakoniec pridam
x /= 10; // zahodim poslednu cifru
x += prenos; // pricitam prenos k o rad mensiemu cislu = zaokruhlenie
}
return x * mul;
}
-
lacijawa
Star
- Príspevky: 680
- Registrovaný: 02 dec 2008, 19:31
- Bydlisko: Košice
- Kontaktovať používateľa:
Re: JAVA problem s napisanim podmienky
Dakujem za odpovede. Urcite mi pomôžu 
Co je to MUL? Ako to chápať ?
Co je to MUL? Ako to chápať ?
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: JAVA problem s napisanim podmienky
moje riesenie, neporusuje nic co lacijawa mal v zdani, a vyuzit vlastnosti celocisloveho delenia nie je zakazane.
BX: bojim sa ze tvoje riesenie zaukruhli 146 na 200
Tak tu je oprava mojho kodu
lacijawa : ak kod nyvhovuje specifikuj co pri tom musite pouzit
BX: bojim sa ze tvoje riesenie zaukruhli 146 na 200
Tak tu je oprava mojho kodu
Kód: Vybrať všetko
int zaokruhli(int x, int r)
{
int m = 1;
for(int i=0;i<r;i++) m*=10; // 10^r
x+= m/2; // pripocitam polovicu nizsieho radu, rada od BX-a
x/=m;
x*=m;
return x;
}
-
mirak2
Hardcore addict
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: JAVA problem s napisanim podmienky
v prvom rade sa zacina vyucba od nuly, preto sa zacina s kresliacou korytnackou v jave, kde sa vsetko sprava proceduralne, na OOP sa prejde v priebehu semestra a priklady su podla mna maximalne ok ( http://web.ics.upjs.sk/paz1a/Zadania/Zadanie3 ). to, ze mozno mu tu harrisonovu fintu nezoberu je moj dojem, ktory moze byt chybny. (hlavne ked sa na to pozries z pohladu vyucujuceho, kde sa pozera na odovzdane riesenia prikladov a vsetky su riesene naivnymi algoritmami a zrazu medzi nimi je jeden taky "highlevel")BX napísal:Tak OOP sa v prvom rade treba učiť na príkladoch, pre ktoré to má zmysel. Podmienky sa majú učiť na príkladoch, kde majú zmysel. Cykly deto. Ale dosť, nechce sa mi zhadzovať upjš. Aj keď by bolo treba kúsok.
zhadzovanie nie je na mieste, lebo cely predmet ma na starosti clovek na spravnom mieste s vedomostami aj skusenostami a podla mna cela vyucba programovania na upjs je na vyssej urovni ako na trebars tuke (aj ked ty si v prahe a to je zas uplne iny level a porovnavat s tym nema cenu). ja som zazil este predchadzajucu vyucujucu a tam by som proti zhadzovaniu nenamietal.