Child pages
  • Terület és térfogat számoló program
Skip to end of metadata
Go to start of metadata
lenne egy kis gondom.
a probléma az alenne, hogy kaptam egy olyan feleadatot, hogy különbözű alakzatok PL: téglatest, kör, gömb, tégla lap
kerület terület és térfogat számitása.

 én  egyenlőre ezt leredukáltam a téglatest re ,ill (hasáb) számitására.
a következő volt a feladat, hogy vigezze el a müveletet és jelenitse meg az eredményt egy Test osztlyon keresztűl a konzolon.

 a müveletet meg is írtam csak a mások osztályon való kiíratást nem tudom megoldani illetve még nem jött össze.

     ha ebben segitenétek kicsit azt megköszönném.
      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

29 Comments

  1. Ha már megvan az eredmény akkor System.out.print(muveletEredmenye) :-)

    Ha meg mindenáron egy másik osztállyal akarod végeztetni, akkor létrehozod a másik osztályt, benne egy függvénnyel, ami paraméterként átveszi az eredményt, aztán az említett System.stb-vel kinyomtatja

    (((((((((((((((Mennyire próbáltad te megoldani ezt a feladatot ???)))))))))))))))
  2. köszi a reagálást és mérhetetlenül hálás vagyok a segitségért.

    1, létrehoztam a töbmb osztályát ,és benne a metódurokat,
    de elvileg kéne egy logikai változót  (boolean)is beleroknom amivel még birkózom.
    2, csináltam egy Test osztályt is egy másik fülön.
    éps kb ennyi!!
     
     itt a tömb osztálya.


                      package lessonTask;



    public class Calculations {

        /**
         * @param args
         * @param ValueOf
         */
        public static void main (String args[]) {
            // TODO Auto-generated method stub
               /* Brick body area or circumference A * B *C*/
            int a, b , c ;
            a = 6; b = 4; c = 2;
            a = a * b* c;
        System.out.println(a);
        System.out.println("Brick body volume");
        
          int area;
         // a * b;
            a = 6;
            b = 4;
            a = a * b;
            System.out.println(a);
            System.out.println("area");
  3. 0, lehet hogy ilyen piti számításoknál hülyeségnek tűnik, de a számolásokat ki kéne szervezni külön függvényekbe. így máshonnan is eléred őket, és nem áll fenn a veszélye annak, hogy összezavarodnak a változók 1, mi a francnak kell boolean változó? 2, a Calculations mitől lett "tömb osztálya"? 3, ha a Test osztályon keresztül akarod végezni a kiíratást, akkor hozz létre benne erre egy függvényt, majd egy Test példányon keresztül írogathatsz a konzolra, ezt már mondtam. 4, "kéne egy logikai változót (boolean)is beleroknom amivel még birkózom." gyanús vagy te nekem, ilyeneket, hogy függvény- és változódeklaráció, tanultál már ? :-)

  4. public class MyCounter {

        /**
         * Executes a standard java operation based on the left and right operand and
         * the operator given, and prints the result to the standard output.
         * @param leftOp left-side operand
         * @param rightOp right-side operand
         * @param op string representation of a standard java operator
         */
        public static void calculate(Object leftOp, Object rightOp, String op){
            boolean compatible = checkTypes(leftOp, rightOp, op);
            if (compatible) {
                //calculate result
                Object result = executeCalculation(leftOp, rightOp, op);

                //print result to console
                System.out.println("Sikeres számítás: " +
                        leftOp.toString() + " " +
                        op + " " +
                        rightOp.toString() + " = " +
                        result.toString());

            } else {
                //print error message
                System.out.println("Incompatible types: " +
                        leftOp.getClass().getName() + ", " +
                        op + ", " +
                        rightOp.getClass().getName());
            }
        }

        /**
         * Checks if the given Classes are compatible with the given operator.
         * @param leftType type (Class) of the left-side operand
         * @param rightType type (Class) of the right-side operand
         * @param operator string representation of a standard java operator
         * @return true if the types are compatible, otherwise false
         */
        public static boolean checkTypes (    Object leftOp,
                                            Object rightOp,
                                            String operator) {
            
            boolean result = false;
            
            // * / -
            if (operator.equals("*") ||
                operator.equals("/") ||
                operator.equals("-")) {
                
                //int or float
                if ( (isIntegerType(leftOp) || isFloatType(leftOp)) &&
                     (isIntegerType(rightOp) || isFloatType(rightOp))) {
                    result = true;    
                } else {
                    result = false;
                }
                
            } else if (operator.equals("+")) {

                //int or float or String
                if ( (    isIntegerType(leftOp) ||
                        isFloatType(leftOp) ||
                        (leftOp instanceof String))
                        &&
                     (    isIntegerType(rightOp) ||
                        isFloatType(rightOp) ||
                        (rightOp instanceof String))) {

                    result = true;    

                } else {
                        result = false;    
                }

            } else if (operator.equals("%") ||
                    operator.equals("<<") ||
                    operator.equals(">>")) {            
                //int
                if ( (isIntegerType(leftOp) ) &&
                         (isIntegerType(rightOp))) {
                    result = true;
                } else {
                    result = false;
                }

            } else if (operator.equals("&&") ||
                    operator.equals("||")) {
                
                //boolean, both
            } else if (operator.equals("!")) {
                
                //boolean, right only
            } else if (operator.equals("<") ||
                    operator.equals("<=") ||
                    operator.equals(">") ||
                    operator.equals(">=")) {
                
                //int, float, String

            } else if (operator.equals("==") ||
                    operator.equals("!=")) {
                
                //int, boolean

            } else if (operator.equals("instanceof")) {
                
                //any

            } else {
                //unknown operator
                
            }
            
            
            return result;
        }

        /**
         * Executes a standard java operation.
         * @param leftOp left-side operand
         * @param rightOp right-side operand
         * @param op string representation of a standard java operator
         * @return The calculated result as an Object
         */
        public static Object executeCalculation (Object leftOp,
                Object rightOp, String op) {
            
            Object result = null;
            
            //cast operands
            //left
            long left = 0;
            if (leftOp instanceof Integer){
                left = ((Integer) leftOp).longValue();
            } else if (leftOp instanceof Long) {
                left = ((Long) leftOp).longValue();
            }

            long right = 0;
            if (rightOp instanceof Integer){
                right = ((Integer) rightOp).longValue();
            } else if (leftOp instanceof Long) {
                right = ((Long) rightOp).longValue();
            }
            
            if (op.equals("*")) {
                result = left * right;
    //            result = (leftOp.getClass().cast(leftOp)) * (rightOp.getClass().cast(rightOp));
            } else if (op.equals("/")){
                
            } else if (op.equals("-")) {
                
            }
            
            return result;
        }

        /**
         * Decides if the given object is of any integer-like type.
         * These types are: Integer, Long, Short, Byte, Character
         * @param object
         * @return True if the object's type is integer-like.
         */
        public static boolean isIntegerType (Object object) {
            boolean result;
            result = (object instanceof Integer) ||
                     (object instanceof Long) ||
                     (object instanceof Short) ||
                     (object instanceof Byte) ||
                     (object instanceof Character);
            return result;
        }

        /**
         * Decides if the given object is of any float-like type.
         * These types are: Float, Double
         * @param object
         * @return True if the object's type is float-like.
         */
        public static boolean isFloatType (Object object) {
            
            boolean result;
            result = (object instanceof Float) ||
                     (object instanceof Double);
            return result;
            
        }

    }
  5. kell csinálnom egy számítást amiben
    össze kell hasonlítanom több idomot egymással és annak eredményeit
    if, else elágazásokkal és ezt kell kíratnom a (Test )oldalon.
    de bevallom még kicsit belevagyok zavarodva, mert csak egy hónapja tanulgatom és csak 4 órám volt.
    viszont nagyon megszeretném tanulni, mert nagyon érdekes számomra. szóval nagyon zölfülű vagyok
    viszont lelkes, mert érdekell.
    kurvára sokat olvasok és ezért néha bele is zavarodok. ezért külön elnézésed kérném)
    de kitaróan olvasok és gyakorlok.
  6. ja és a tömböt csak elírtam ,ert éppen ezt olvasgatom,
    miközben ide irogatok és biztos itt kicsit lefagyott az agyam. bocsi.
  7. Milyen szempontból kell az idomokat összehasonlítani?
  8. Lehet, hogy én vagyok hülye, de igazság szerint egyre kevésbé értem, hogy mi a feladat
  9. téglatest; térfogat, terület, kerület
    kocka; terület, kerület, térfogat

       és ennek az eredményeit kell kiíratnom a Teszt oldalon.
    de az a kérdés, hogy ha long tipusú a téglatestem illetve annak erdményei
    az lehet e doubel vagy nem.
    vagy ha esetleg double a végeredmény akkor lehet e int
    és kell egy meghatározást csinálnom ami lehet igaz és hami is (boolean)
    hogy pl a téglatest számai egész számok     I vagy h.
    vagy valami hasonló álítást amit ki lehet true-ban iratni a konzolon.

     kb így hámoztam ki a tanár lecke felardatát, de sajna az is nagyon nehéz mert a tanár olyan mint ha a java bolygón élne és lehet, hogy a közértbe is a párizsit hexadecimális számokkal kéri. mármint ,hány (deka) párizsit vesz.    0x10 :-)
    szóval kicsit nehéz a helyzet.

      körübelűl annak a mintájára amit a tanár irogatott.
    de azton én még nem nagyon igazodom ki.
  10. elnézést a megtévesztő címért. nem tudom, mit kéne kódolni :)
  11. te értetted amit a tanár írt??

    berakom a Test oldalt is.

     public class Test {

        public static void main (String args[]){
            
            Integer leftOp = 2;
            Integer rightOp = 5;
            String op = "*";
            MyCounter.calculate(leftOp, rightOp, op);
            MyCounter.calculate(new Long(2), new Long(3), op);
        }
    }
  12. lehetnél a mentorom esetleg!!

    segithetnél jobban megérteni az egész dolgot.

     ha esetleg felvennél messengerre akkor tudnál segiteni, hogy én is fejlödjek.

     köszti

        MSN: vaszil29@freemail.hu
  13. HEURÉKA!!!

    nem is kell semmit kódolnod.
    össze kell hasonlítani néhány számot. a Test lapon az op értékét "<" állítod, a leftOp és a rightOp helyére pedig a testek megfelelő paramétereit írod be, a többit a tanár kódja megcsinálja (elvileg)

    MSN-em nincs, de erre van a fórum, vagy a lipka.boldizsarKUKACgmail.com-ra írhatsz
  14. tudod , az oktatás amire járok az egy hónap eltolódással indult, és az a érzésem, hogy nem nagyon járjuk körbe rendesen az anyagokat amit órárol órára veszünk, pusztán azért, hogy a kurzus ütemezése helyre áljon, és behozza a szolgáltató az    1 hó
    eltolódást a következő kurzus miatt.
    viszont ezért minden anyagrész csak úgy felszinesen tanit meg. leír pár sort azstán old meg.
    2 hete még egy osztályt sem tudtam megcsinálni
    ma meg már osztok ,szorzok, kivonok stb.
    de ezt nem a tanárnak köszönhetem, hanem inkább a magam szorgalmának, pedig sokat fizetek érte.
    probálnék egy olyan embert találni aki rendesen elmagyarázza nekem emberi nyelven, nem ahogy a tanár magyaráz
    mert ő hozzá nem a java 2 könyv kell, hanem az idegen szavak nagylexikonja.
    szóval kb így áll a szénám.
    de meg szeretném tanulni.
  15. elvileg amit a tanár írt az csak egy példa.

     nekem az a házim amit írtam.
    jó hogy te ennyire átlátod az egészet.

     a házi a következő lenne:

       kell a téglatest paraméterei (3 int)-el
     visszadás integerrel.
    és a teszt osztályon kiíratás
    és kell 3 feltétel is.

     na ennyit diktált le.   és én ezt oldjam meg!       remélem te érted.

       a legjobban a 3 feltételt nem értem, hogy ezzel mit akar.
    vagy hogy hogyan oldjam meg.

     de mindjárt benézem a feladat lapom, hátha felrakott valami értelmesebb meghatározást.
  16. rendben, a megadott emailen elérhetsz
    a www.nagygusztav.hu-n van egy igen jó Java-jegyzet, a java.sun.com-on dögivel angol nyelvű tutorialok
    ez a vacak most működik?
  17. igazándibol nem azt várom, hogy megold helyttem a házim, inkább segits értelmezni.
    magam akarok rájönni az egészre.
    hogy tudjam.
    és ha esteleg irányt mutatnál, hogy merre induljak a helyes irányba.
  18. milyen vacakra gondoltál???
  19. ehhez azért nem kell annyi kód, amennyit a tanár gyártott :)

    public static void hasonlit(int ax, int ay, int az, int bx, int by, int bz) {
        if (ax<bx)
            System.out.println("Azelső kocka szélesebb");
        else
            System.out.println("A második kocka szélesebb");
    //még két ilyen

    Ennyi:)
  20. na látod ez nagyobb segitség volt, mint ha tutoriálokat nézegettem volna, most meg is probálom írni.
    majd ide írok ha elakadok.

     köszi

                           zseni vagy!
  21. megírom gyosan aztán megnézed, hogy jó e.  oxi?!

    bemásolom ide.

      egyépként jók a sun os tutorialok, csak az a gáz, hogy angolbol nagyon vézna vagyok :-) de igyekszem
  22. na megirtam a (Cube) osztályt is.

     most már van egy teszt és egy Calkulations és egy Cube osztályom is kész eredményekkel.

     összegzem.
    1, Test;
    2, Calculations;     //Brick body:    Téglatest
    3, Cube:                 //kocka


           a Calculations -ban van a, b ,c  int érték
           a Cube-ban van a  int a;
        hogyan csináljam a gettert??

       

  23. package lessonTask;

    public class Calculations {

        /**
         * @param args
         * @param ValueOf
         */
        public static void main (String args[]) {
            
               /* Brick body area or circumference A * B *C*/
            double a, b , c ,sharp , diagonal;
            a = 6;
            b = 4;
            c = 2;
            sharp = a + b + c;
            System.out.println("circumference sharp");
            System.out.println (sharp);
            
            diagonal = 2 * (a * b + a * c + b * c);
            System.out.println("circumference diagonal");
            System.out.println (diagonal);
            System.out.println("Brick body volume");
            System.out.println(a);
            
            
            // a * b;
            c = 6;
            b = 4;
            a = a * b;
            System.out.println("area");
            System.out.println(a);
            
            
                 
        }

    }                           //eddig jutottam
  24. Szerintem megint kezdünk eltávolodni a feladat lényegétől...
    Az én értelmezésemben a következőt kéne csinálni:
    1,csinálni két kockát
    2,írni egy függvényt, ami összehasonlítja a két kockát, és az eredményeket kiírja a konzolra
    3,meghívni ezt a függvényt a main()-ből

    class Brick {
      public int a, b, c;
    }

    class Calcs {
      static void compare(Brick b1, Brick b2) {
        if (b1.a*b1.b*b1.c > b1.a*b2.b*b2.c)
          System.out.println("Az első kocka nagyobb");
        else
          System.out.println("Nem, a második!!!");
      }
    }

    class Test {
      public static void main(String[] args) {
        Brick b1 = new Brick(), b2 = new Brick();
        b1.a = 10;
        b1.b = 20;
        b1.c = 15;
        b2.a = 30;
        b2.b = 78;
        b2.c = 2;

        Calcs.compare(b1, b2);
      }
    }
  25. köszönöm szépen.
    így jobban megértettem a lényegét.
    tehát a (Test) bő hívom meg a (b1- b2)-t.
    köszi szpen


    ez lenne a castoás??l
  26. a castolás típuskényszerítést jelent... (int) 2.33 == 2
  27. köszi szépen!

    képzeld tökre megtudtam oldani a feladatot.
    csak kicsit bekavarodtam  a (main) és a (void) hívásoknál.

    és ott is rontottam, hogy a meghatározás és a metódus közt kihagytam egy kapcsos zárójelet :-)

     most megint feladta a leckét rendesen a tanárbácsi !....      :-)
    vettem is egy pár sört, ahogy a NAGY MENTOR mondaná és nyirbálom az agyamat a feladatokon.

    érdekesség képpen berakom neked is. :-)




    1. Bemenet : 3 db szám, kimenet: a háromból a középső érték.

    2. Bemenet : 2 db szám, kimenet: igaz, ha az 1. szám osztható a másodikkal, hamis, ha nem

    3. Bemenet : 1 db String, kimenet: a szövegben szereplő "a" betűk száma

    4a. Bemenet : 1 db szám, kimenet: igaz, ha a szám négyzetszám, hamis, ha nem
    4b. Bemenet : 1 db szám, kimenet: igaz, ha a szám prímszám, hamis, ha nem
    4c. Bemenet : 1 db szám és egy String, kimenet: ha a String "n" ugyanaz mint 4a,
    ha astring "p" ugyanaz mint 4b, ha a string bármi más, hibaüzenet

    5. Bemenet : 1 db szám, kimenet: a számot összegként értve azon bankjegycímletek kiírása
    amelyekkel kifizethető az adott összeg. Címletekként a ma használatos forint címleteket
    kell venni.
  28. szerinted merre keresgéljek (flow Chart) után??
  29. ja és kaptam némi olvasmányt is a hétvégére
    a feladatok mellé.
                                       //csak hogy örüljek   :-))

       Algoritmusok    /* Dr Iványi Péter

        :-)


      már annyira vágyom rá, hogy végre zsirozottan menjen a golog
    és ne legyen fenakadásom.