Skip to content

Лабораторная работа №3 #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions src/main/java/ru/tn/courses/kkulichkin/v1/task3/Subtask1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ru.tn.courses.kkulichkin.v1.task3;

import java.util.ArrayList;
import ru.tn.courses.kkulichkin.v1.task3.SubtaskUtils.MyInteger;

/**
*
* @author kkulichkin
* Вариант 1
* Разработать класс Integer
* - класс должен содержать конструкторы Integer(), Integer(int x), Integer(String s)
* - Реализовать метод сравнения двух объектов класса Integer
* - Реализовать методы добавления значения add(Integer i), вычитания, умножения и деления
* - Реализовать метод возведения в степень pow(int exponent)
* - реализовать методы преставления числа в восьмеричной и шестнадцатеричной СС
*/
public class Subtask1
{
public static void main(String[] arg)
{
char[] char_int = {'-','2','8','3','0','0','1'};

MyInteger integer = new MyInteger(char_int);
MyInteger integer2 = new MyInteger(-283001);
MyInteger integer3 = new MyInteger();

System.out.println(integer.intValue());
System.out.println(integer2.intValue());
System.out.println(integer3.intValue());




System.out.println(integer.equals(integer2));
System.out.println(integer.equals(integer3));



MyInteger integer30 = new MyInteger(10);
MyInteger integer23 = new MyInteger(13);

integer30.addInt(integer23);
System.out.println(integer30.intValue());

integer30.setValue(10);
integer30.subInt(integer23);
System.out.println(integer30.intValue());

integer30.setValue(10);
integer30.mulInt(integer23);
System.out.println(integer30.intValue());

integer30.setValue(169 * 5);
integer30.divInt(integer23);
System.out.println(integer30.intValue());




MyInteger integer70 = new MyInteger(2);
integer70.pow(10);
System.out.println(integer70.intValue());






MyInteger integer450 = new MyInteger(255);

System.out.println(integer450.toHexString());
System.out.println(integer450.toOctalString());

}
}
81 changes: 81 additions & 0 deletions src/main/java/ru/tn/courses/kkulichkin/v1/task3/Subtask2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ru.tn.courses.kkulichkin.v1.task3;

import java.util.ArrayList;
import java.util.Arrays;
import ru.tn.courses.kkulichkin.v1.task3.SubtaskUtils.MyList;

/**
*
* @author kkulichkin
* Разработать класс ListContainer<T> для хранения дженерик списков
* -класс должен содержать конструктор по умолчанию и конструктор с new ListContainer<T>(T ... elements)
* - метод получения значения списка
* - метод сравнения двух контейнеров
* - методы добавления и удаления элемента в контейнер
* - методы поиска элементов по индексу или значению
* - добавление коллекции элементов
* - получение контейнера с подсписком по индексам
*/
public class Subtask2
{
public static void main(String[] arg)
{
MyList<Integer> list = new MyList<Integer>();
MyList<Integer> list2 = new MyList<Integer>(1,2,3,4,5);

System.out.println(list.toString());
System.out.println(list2.toString());

System.out.println(list2.equals(list));
System.out.println(list2.equals(list2));

list.add(3);
list.add(9);

System.out.println(list.toString());

list.addAt(6, 1);

System.out.println(list.toString());


System.out.println(list.find(6));
System.out.println(list.findById(1));

list.removeAt(1);

System.out.println(list.toString());

ArrayList<Integer> collection = new ArrayList<>(Arrays.asList(10,20,30));
list.addCollection(collection);

System.out.println(list.toString());


MyList<Integer> sub_list = list.getSubMyList(2, 4);

System.out.println(sub_list.toString());




Integer[] list_values = list2.getArray();

System.out.println(Arrays.toString(list_values));
}










}
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ru.tn.courses.kkulichkin.v1.task3.SubtaskUtils;

/**
*
* @author kkulichkin
*/
public class MyInteger
{

int value;

public MyInteger()
{
value = 0;
}


public MyInteger(int value_new)
{
value = value_new;
}

public MyInteger(char[] value_new)
{
int value_temp = 0;

int sign_char = 0;
int sign = 1;
boolean is_signed = false;


char first_char = value_new[0];
if(first_char == '-' || first_char == '+') is_signed = true;
if(first_char == '-') sign = -1;
if(first_char == '+') sign = 1;

if(is_signed) sign_char = 1;
else sign_char = 0;


int digit_power = 0;
for(int i = value_new.length - 1; i >= sign_char; i--)
{
int char_cur = value_new[i];
int digit_cur = 0;

switch(char_cur)
{
case '0': digit_cur = 0; break;
case '1': digit_cur = 1; break;
case '2': digit_cur = 2; break;
case '3': digit_cur = 3; break;
case '4': digit_cur = 4; break;
case '5': digit_cur = 5; break;
case '6': digit_cur = 6; break;
case '7': digit_cur = 7; break;
case '8': digit_cur = 8; break;
case '9': digit_cur = 9; break;
}

int digit_modifier;
if(digit_power == 0)
{
digit_modifier = 1;
}
else
{
digit_modifier = 1;
for(int j = 0; j < digit_power; j++) digit_modifier *= 10;
}


int digit_positioned = digit_cur * digit_modifier;

value_temp += digit_positioned;


digit_power += 1;
}

value = value_temp * sign;
}

public void setValue(int value_new)
{
value = value_new;
}



public int intValue()
{
return value;
}

public void addInt(MyInteger integer)
{
value += integer.intValue();
}

public void subInt(MyInteger integer)
{
value -= integer.intValue();
}

public void divInt(MyInteger integer)
{
value /= integer.intValue();
}

public void mulInt(MyInteger integer)
{
value *= integer.intValue();
}

public void pow(int power)
{
int value_base = value;
int value_new = value_base;
while(power-- > 0) value_new *= value_base;
value = value_new;
}


public boolean equals(MyInteger obj)
{
if(obj instanceof MyInteger) return value == ((MyInteger)obj).intValue();
return false;
}


public char[] toHexString()
{
int value_base = value;
int value_remainder = 0;
int value_quotient = 0;


char[] value_hex = {'0', '0', '0', '0', '0', '0', '0', '0'};


int iteration_cur = 0;
do
{
char char_cur = '0';


value_remainder = value_base % 16;
value_base /= 16;

switch(value_remainder)
{
case 0: char_cur = '0'; break;
case 1: char_cur = '1'; break;
case 2: char_cur = '2'; break;
case 3: char_cur = '3'; break;
case 4: char_cur = '4'; break;
case 5: char_cur = '5'; break;
case 6: char_cur = '6'; break;
case 7: char_cur = '7'; break;
case 8: char_cur = '8'; break;
case 9: char_cur = '9'; break;
case 10: char_cur = 'A'; break;
case 11: char_cur = 'B'; break;
case 12: char_cur = 'C'; break;
case 13: char_cur = 'D'; break;
case 14: char_cur = 'E'; break;
case 15: char_cur = 'F'; break;
}

value_hex[value_hex.length - 1 - iteration_cur] = char_cur;

iteration_cur += 1;

}while(value_base > 0);

return value_hex;
}

public char[] toOctalString()
{
int value_base = value;
int value_remainder = 0;
int value_quotient = 0;


char[] value_oct = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'};


int iteration_cur = 0;
do
{
char char_cur = '0';


value_remainder = value_base % 8;
value_base /= 8;

switch(value_remainder)
{
case 0: char_cur = '0'; break;
case 1: char_cur = '1'; break;
case 2: char_cur = '2'; break;
case 3: char_cur = '3'; break;
case 4: char_cur = '4'; break;
case 5: char_cur = '5'; break;
case 6: char_cur = '6'; break;
case 7: char_cur = '7'; break;
}

value_oct[value_oct.length - 1 - iteration_cur] = char_cur;

iteration_cur += 1;

}while(value_base > 0);

return value_oct;
}



}
Loading