Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОФК_2014_1-5.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
396.29 Кб
Скачать

Завдання

  1. Виконати приклади з теоретичної частини.

  2. Створіть додаток, який покаже, що для виразу an+ bn=cn (теорема Ферма) немає натуральних розв’язків від 1 до 100 і n>2. Переконайтеся, що є рішення для n=2, і виведіть їх на консоль.(Застосовувати вкладені цикли).

  3. Обчислити вираз .

Лабораторна робота № 4

Тема : Алгоритмізація й використання керуючих структур в Java.

Мета: Організації розгалуження в Java.

Теоретичні відомості

Програма 1. Переведення чисел з десяткової системи числення у двійкову й шістнадцятирічну.

  1. public class Trans {

  2. public static String fromdectobin(int x){

  3. String res="";

  4. short q = 0;

  5. while(x>0){

  6. q=(short)(x%2);

  7. x/=2;

  8. res=q+res;

  9. }

  10. return res;

  11. }

  12. public static String fromdectohex(float x){

  13. String res="";

  14. short q = 0;

  15. int c = 2;

  16. while(c>0){

  17. q=(short)(16*(x/16-Math.floor(x/16)));

  18. c=(int) Math.floor(x/16);

  19. x=c;

  20. if(q<10){

  21. res=q+res;

  22. }else{

  23. switch(q){

  24. case 10:

  25. res="A"+res;

  26. break;

  27. case 11:

  28. res="B"+res;

  29. break;

  30. case 12:

  31. res="C"+res;

  32. break;

  33. case 13:

  34. res="D"+res;

  35. break;

  36. case 14:

  37. res="E"+res;

  38. break;

  39. case 15:

  40. }

  41. res="F"+res;

  42. break;

  43. }}

  44. return res;

  45. }

  46. public static void main(String[] args) {

  47. System.out.println(fromdectobin(90367));

  48. System.out.println(fromdectohex(90367));

  49. }

  50. }

У даній програмі наведені два методи: один переводить десяткове число у двійкову систему числення, другий - у шістнадцятирічну.

Для перекладу десяткового числа у двійкове подання використовується стандартний метод - ділення вихідного числа на 2 зі збереженням остачі, у нашім прикладі остача додається до рядка res з лівої сторони (08). У даному методі використовується цикл із передумовою while(), який щоразу одержує остачу від ділення на 2, потім ділить вихідне число на 2 і заносить отриману у першій дії остачу ліворуч у рядок. Наприкінці, після циклу, метод повертає отриманий рядок.

Спосіб переведення з десяткового в шістнадцятирічне подання використовує аналогічний прийом, виконуючи послідовно ділення на 16, за одним виключенням - остача в нашій програмі обчислюється за допомогою функції floor(), що повертає цілу частину дробового числа. У результаті одержимо цілочисельну остачу від ділення. Процес запису залишків у рядок більш складний, чим у випадку двійкової системи числення, тому що в шістнадцятирічній системі для подання числа недостатньо базового набору цифр від 0 до 9 і необхідно використовувати букви A-F. Для того щоб у рядок результату додавати букви, у програмі використовується оператор множинного вибору switch(), у якому здійснюється перевірка остачі. Залежно від величини остачі, у рядок результату додається необхідна буква (рядка 23-42).

Методи fromdectobin, fromdectohex повертають значення типу String, які можна безпосередньо використовувати як аргумент методу print() для висновку на консоль (рядка 48, 49). Як аргументи цих методів беруться числа, які потрібно перевести в задану систему числення.