java, obliczanie trzeciej potęgi

Karol12
Użytkownik
Użytkownik
Posty: 16
Rejestracja: 5 lis 2008, o 13:16
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 6 razy

java, obliczanie trzeciej potęgi

Post autor: Karol12 »

witam, mam taki program do napisania w javie, a nie wiem jak się do niego zabrać.

Napisz funkcję trzecia Potega, która przyjmuje parametr typu int i zwraca wynik typu long.
Program ma czytać z klawiatury liczby podawane przez użytkownika i wyświetlać wartość odczytanej liczby oraz wynik wywołania funkcji.
W programie głównym powyższy kod umieść wewnątrz nieskończonej pętli while.
Ostatnio zmieniony 20 mar 2009, o 23:34 przez luka52, łącznie zmieniany 1 raz.
Powód: Jeden wyraz na nazwę tematu to zdecydowanie za mało. Staraj się lepiej dobierać nazwy tematów, tak by lepiej wskazywały o czym może być treść zadania.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

java, obliczanie trzeciej potęgi

Post autor: kadiii »

A czy posiadasz jakieś elementarne wiadomości na temat javy, potrafisz może napisać program typu "hello world"?
Funkcja trzecia potęga będzie mieć postać:

Kod: Zaznacz cały

long trzecia_potega(int x)
{
 return x*x*x;
}
Reszta to już umiejętność budowy szkieletu programu, czyli podstawa podstawy. Polecam lekturę jakiegoś kursu java, choćby w internecie,
luka52
Użytkownik
Użytkownik
Posty: 8601
Rejestracja: 1 maja 2006, o 20:54
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 47 razy
Pomógł: 1816 razy

java, obliczanie trzeciej potęgi

Post autor: luka52 »

Funkcja może i zwróci typ long, ale z zakresu int.
Dlatego należy dokonać jawnego rzutowania by ominąć ten problem tj.

Kod: Zaznacz cały

return (long)x*x*x;
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

java, obliczanie trzeciej potęgi

Post autor: spajder »

raczej

Kod: Zaznacz cały

return ((long)x*x*x);
wynik jest takiego typu jak największy z operandów
luka52
Użytkownik
Użytkownik
Posty: 8601
Rejestracja: 1 maja 2006, o 20:54
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 47 razy
Pomógł: 1816 razy

java, obliczanie trzeciej potęgi

Post autor: luka52 »

Rezultat użycia return ((long)x*x*x); i return (long)x*x*x; jest taki sam.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

java, obliczanie trzeciej potęgi

Post autor: kadiii »

Jasne o ile w C++ int i long są tożsame o tyle w javie, o której pytanie, potrzeba uzycia 64 bitowego zapisu wymaga juz rzutowania. Swoją drogą zasada rozszerzania typów, którą podał spajder jest ciekawym elementem języka java.
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

java, obliczanie trzeciej potęgi

Post autor: spajder »

je też błąd zrobilem (aż nie wiem czemu), powinno być:

Kod: Zaznacz cały

return (long)(x)*x*x;
po prostu x*x*x bez rzutowania da nam int. Inaczej nie można byłoby nawet zapisać:

Kod: Zaznacz cały

int a = 2;
int b = 2*a;
Awatar użytkownika
lukasz89x
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 3 wrz 2009, o 16:23
Płeć: Mężczyzna
Lokalizacja: Poznań

java, obliczanie trzeciej potęgi

Post autor: lukasz89x »

ja to zrobiłem za pomocą klasy math:

Kod: Zaznacz cały

Scanner in = new Scanner(System.in);
int x = in.nextInt();
long y = (long) pow(x, 3);
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

java, obliczanie trzeciej potęgi

Post autor: Dedemonn »

Co do pętli nieskończonej -> wypadałoby, aby ta pętla się kiedyś kończyła - np. gdy użytkownik poda jakikolwiek ciąg liter:

Kod: Zaznacz cały

while(true)
{
      String str = in.next();

      try
      {
            liczba = Integer.parseInt( str );
      }
      catch(Exception e)
      {
            break;
      }

      System.out.println( (long)liczba*liczba*liczba );
}
Chociaż sądząc po poziomie zadania domniemam, że wyjątków jeszcze nie widziałeś... także mogę powiedzieć tyle, że jeśli rzutowanie wczytanego ciągu znaków się nie powiedzie, nieskończona pętla while jest przerywana.


Pozdrawiam.
ODPOWIEDZ