JAVA problem s napisanim podmienky

Programovacie jazyky, rady, poradňa...
lacijawa
Star
Star
Používateľov profilový obrázok
Príspevky: 680
Registrovaný: 02 dec 2008, 19:31
Bydlisko: Košice
Kontaktovať používateľa:

JAVA problem s napisanim podmienky

Príspevok od používateľa lacijawa »

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
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa harrison314 »

Naco podmienky, treba matematiku :D

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
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa mirak2 »

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 :P da sa to urobit na jeden riadok, aj na desat
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa BX »

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ť...
konyk87
King
King
Používateľov profilový obrázok
Príspevky: 1709
Registrovaný: 24 okt 2007, 15:56

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa konyk87 »

Ak dobre počítam, tak harrisonove ani mirakove navrhované riešenie nezaokrúhľuje smerom hore, keďže obidve by napr pre volanie

Kód: Vybrať všetko

zaokruhli(168, 2);
vrátili 100 namiesto 200...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa BX »

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
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa mirak2 »

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?
konyk87 napísal:Ak dobre počítam, tak harrisonove ani mirakove navrhované riešenie nezaokrúhľuje smerom hore, keďže obidve by napr pre volanie

Kód: Vybrať všetko

zaokruhli(168, 2);
vrátili 100 namiesto 200...
jaj pravda. no nic, idem radsej spat, lebo po 48 hodinach s len 6 hodinami spanku nie som schopny normalne rozmyslat
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa BX »

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ť.

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
Star
Používateľov profilový obrázok
Príspevky: 680
Registrovaný: 02 dec 2008, 19:31
Bydlisko: Košice
Kontaktovať používateľa:

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa lacijawa »

Dakujem za odpovede. Urcite mi pomôžu :)

Co je to MUL? Ako to chápať ?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa harrison314 »

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

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;
}
lacijawa : ak kod nyvhovuje specifikuj co pri tom musite pouzit
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: JAVA problem s napisanim podmienky

Príspevok od používateľa mirak2 »

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.
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")
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.
Napísať odpoveď