Перетворення масиву

Супер клас, який створює і ініціалізує масив з n цілих чисел. В задачах наслідування може ідти від нього.
Відповідь:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Mas {
    int[] a;
    Random random = new Random();
    Scanner sc = new Scanner(System.in);

    //Ініціалізує масив з n елементів числами з проміжку [-n; n]
    public Mas() {
        System.out.print("Скільки елементів в масиві? ->");
        a = new int[sc.nextInt()];
        for (int i = 0; i < a.length; i++) {
            a[i] = random.nextInt(2 * a.length + 1) - a.length;
        }
        System.out.println(Arrays.toString(a));
    }

    //Ініціалізує масив з n елементів числами з проміжку [0; n]
    public Mas(int n) {
        System.out.print("Скільки елементів в масиві? ->");
        a = new int[sc.nextInt()];
        for (int i = 0; i < a.length; i++) {
            a[i] = random.nextInt(n + 1);
        }
        System.out.println(Arrays.toString(a));
    }
}


Супер клас, який створює і ініціалізує динамічний масив з n цілих чисел. В задачах наслідування може ідти від нього.
Відповідь:
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class DinMas {
    ArrayList a;
    Random random = new Random();
    Scanner sc = new Scanner(System.in);

    public DinMas() {
        System.out.print("Скільки елементів в масиві? ->");
        int size = sc.nextInt();
        a = new ArrayList();
        for (int i = 0; i < size; i++) {
            a.add(i, random.nextInt(2 * size + 1) - size);
        }
    }

    public void test() {
        if (a.size() == 1) {
            System.out.println("Тільки один елемент");
            System.exit(0);
        }
    }
}

1. У масиві замінити всі числа, великі даного числа, на середнє арифметичне всіх чисел масиву.
Відповідь:
import java.util.Arrays;

public class TMasCh1 extends Mas {

    public static void main(String[] args) {
        TMasCh1 tm = new TMasCh1();
        tm.change();
    }

    public void change() {
        System.out.print("Яке число бажаєте замінити? ->");
        int x = sc.nextInt();
        int count = 0;
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        sum /= a.length;
        for (int i = 0; i < a.length; i++) {
            if (a[i] == x) {
                a[i] = sum;
                count++;
            }
        }
        System.out.println(Arrays.toString(a));
        System.out.println("Було виконано " + count + " замін(и)");
    }

}

2. Дан масив. Замінити всі числа, менші останнього елемента масиву, на перший елемент.
Відповідь:
import java.util.Arrays;

public class TMasCh2 extends Mas {
    public static void main(String[] args) {
        TMasCh2 tm = new TMasCh2();
        tm.change();
    }

    void change() {
        int count = 0;
        int x = a[0];
        for (int i = 1; i < a.length - 1; i++) {
            if (a[i] < a[a.length - 1]) {
                a[i] = x;
                count++;
            }
        }
        System.out.println(Arrays.toString(a));
        System.out.println("Було виконано " + count + " замін");
    }
}


3. Поміняти місцями найбільший та найменший елементи масиву.
Відповідь:
import java.util.Arrays;

public class TMasCh3 extends Mas {
    public static void main(String[] args) {
        TMasCh3 tm = new TMasCh3();
        tm.change();
    }

    void change() {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int tempI = 0;
        int tempJ = 0;
        int temp;
        for (int i = 0; i < a.length; i++) {
            if (a[i] > max) {
                max = a[i];
                tempI = i;
            }
            if (a[i] < min) {
                min = a[i];
                tempJ = i;
            }
        }
        temp = a[tempI];
        a[tempI] = a[tempJ];
        a[tempJ] = temp;
        System.out.println(Arrays.toString(a));
    }
}


4. Знайти найбільший парний елемент масиву і поміняти його місцями з найменшим непарних елементом. Якщо одного з таких елементів немає, то всім елементам масиву присвоїти нуль.
Відповідь:
import java.util.Arrays;

public class TMasCh4 extends Mas {
    public static void main(String[] args) {
        TMasCh4 tm = new TMasCh4();
        tm.change();
    }

    void change() {
        int maxParid = Integer.MIN_VALUE;
        int minUnparid = Integer.MAX_VALUE;
        int tempI = 0;
        int tempJ = 0;
        for (int i = 0; i < a.length; i++) {
            if (a[i] % 2 == 0 && a[i] > maxParid) {
                maxParid = a[i];
                tempI = i;
            }
            if ((a[i] % 2 == -1 || a[i] % 2 == 1) && a[i] < minUnparid) {
                minUnparid = a[i];
                tempJ = i;
            }
        }
        if (maxParid == Integer.MIN_VALUE || minUnparid == Integer.MAX_VALUE) {
            Arrays.fill(a, 0);
        } else {
            int temp = a[tempI];
            a[tempI] = a[tempJ];
            a[tempJ] = temp;
        }
        System.out.println(Arrays.toString(a));
    }
}

5. Замінити кожен елемент масиву з парним номером на сусідній зліва елемент.
Відповідь:
import java.util.Arrays;

public class TMasCh5 extends Mas {
    public static void main(String[] args) {
        TMasCh5 tm = new TMasCh5();
        tm.change();
    }

    void change() {
        if (a.length != 1) {
            for (int i = 0; i < a.length - 1; i += 2) {
                a[i + 1] = a[i];
            }
        }
        System.out.println(Arrays.toString(a));
    }
}
6. Видалити в масиві перший і останній елементи.
Відповідь:
public class TMasCh6 extends DinMas{
    public static void main(String[] args) {
        DinMas tm =new TMasCh6();
        System.out.println(tm.a.toString());
        tm.a.remove(0);
        tm.a.remove(tm.a.size()-1);
        System.out.println(tm.a.toString());
    }
}

7. Видалити в масиві все числа, які повторюються більше двох разів.
Відповідь:
package TaskMasCh;

import java.util.ArrayList;

public class TMasCh7 extends DinMas {
    public static void main(String[] args) {
        TMasCh7 tm = new TMasCh7();
        System.out.println(tm.a.toString());
        tm.test();
        tm.change();
    }

    void change() {
        ArrayList flags = new ArrayList();
        int count;
        for (int i = 0; i < a.size() - 1; i++) {
            count = 0;
            for (int j = i+1; j < a.size(); j++) {
                if (a.get(i) == a.get(j)) {
                    count++;
                    if (count >= 3) {
                        flags.add(a.get(i));
                        break;
                    }
                }
            }
        }

        System.out.println(flags.toString());
        a.removeAll(flags);
        System.out.println(a.toString());
    }

}


8. Знайти в масиві всі серії однакових елементів, які йдуть підряд, і видалити з них всі елементи крім одного.
Відповідь:
public class TMasCh8 extends DinMas {
    public static void main(String[] args) {
        TMasCh8 tm = new TMasCh8();
        System.out.println(tm.a.toString());
        tm.test();
        tm.change();
    }

    void change() {
        for (int i = 0; i < a.size() - 1; i++) {
            if (a.get(i) == a.get(i + 1)) {
                a.remove(i + 1);
                i--;
            }
        }
        System.out.println(a.toString());
    }
}

9. Видалити в масиві всі максимальні елементи.
Відповідь:
import java.util.ArrayList;

public class TMasCh9 extends DinMas {

    public static void main(String[] args) {
        TMasCh9 tm = new TMasCh9();
        System.out.println(tm.a.toString());
        tm.change();
    }

    void change() {
        ArrayList temp = new ArrayList();
        temp.add(0);
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < a.size(); i++) {
            if ((int) a.get(i) > max) {
                temp.set(0, a.get(i));
                max = (int) temp.get(0);
            }
        }
        a.removeAll(temp);
        System.out.println("Максимальний елемент " + temp.toString());
        System.out.println(a.toString());
    }
}

10. Переставити елементи масиву в зворотньому порядку.
Відповідь:
import java.util.Arrays;

public class TMasCh10 extends Mas{
    public static void main(String[] args) {
        TMasCh10 tm=new TMasCh10();
        int[] temp=new int [tm.a.length];
        for (int i = 0; i 
11. Дан масив a з n елементів. Сформувати новий масив b такого ж розміру так, що елемент bk дорівнював сумі елементів перших елементів массіва a до номера k включно.
Відповідь:
import java.util.Arrays;

public class TMasCh11 extends Mas {
    public static void main(String[] args) {
        TMasCh11 tm = new TMasCh11();
        int[] tmNew =new int[tm.a.length];
        int sum=0;
        for (int i = 0; i < tmNew.length; i++) {
            sum+=tm.a[i];
            tmNew[i]=sum;
        }
        System.out.println(Arrays.toString(tmNew));
    }
}


12. В даному масиві знайти всі нульові елементи і замінити їх разом з сусідніми елементами на 3.
Відповідь:
import java.util.Arrays;

public class TChMas12 extends Mas {
    public TChMas12(int i) {
        super(i);
    }

    public static void main(String[] args) {
        TChMas12 tm = new TChMas12(10);
        int[] temp = Arrays.copyOf(tm.a, tm.a.length);
        for (int i = 1; i < temp.length - 1; i++) {
            if (temp[i] == 0) {
                tm.a[i - 1] = tm.a[i] = tm.a[i + 1] = 3;
            }
        }
        if (temp.length == 1 && temp[0] == 0) {
            tm.a[0] = 3;
        } else if (temp.length == 2 && (temp[0] == 0 || temp[1] == 0)) {
            tm.a[0] = tm.a[1] = 3;
        } else if (temp[0] == 0) {
            tm.a[0] = tm.a[1] = 3;
            if (temp[temp.length - 1] == 0) {
                tm.a[tm.a.length - 1] = tm.a[tm.a.length - 2] = 3;
            }
        } else if (temp[temp.length - 1] == 0) {
            tm.a[tm.a.length - 1] = tm.a[tm.a.length - 2] = 3;
        }
        System.out.println(Arrays.toString(tm.a));
    }
}


13. Перетворити масив таким чином, щоб спочатку розташовувалися всі елементи, модуль яких не перевищує введеного корисувачем числа, а потім - всі інші.
Відповідь:
import java.util.ArrayList;

import static java.lang.Math.abs;

public class TMasCh13 extends Mas {
    public static void main(String[] args) {
        TMasCh13 tm = new TMasCh13();
        System.out.print("Який граничний елемент? ->");
        int number = tm.sc.nextInt();
        tm.sorted(number);
    }

    private void sorted(int number) {
        ArrayList minNumb = new ArrayList();
        ArrayList maxNumb = new ArrayList();
        for (int t : a
                ) {
            if (abs(t) < number) {
                minNumb.add(t);
            } else {
                maxNumb.add(t);
            }
        }
        minNumb.addAll(maxNumb);
        System.out.println(minNumb.toString());
    }
}


14. Дано два масиви. Сформувати третій масив, що складається з тих елементів, які присутні в обох масивах.
Відповідь:
import java.util.ArrayList;

public class TMasCh14 {
    public static void main(String[] args) {
        DinMas dm1 = new DinMas();
        DinMas dm2 = new DinMas();
        System.out.println(dm1.a.toString());
        System.out.println(dm2.a.toString());
        ArrayList result = presentInTwo(dm1, dm2);
        System.out.println(result.toString());
    }

    private static ArrayList presentInTwo(DinMas dm1, DinMas dm2) {
        ArrayList temp = new ArrayList();
        for (int i = 0; i < dm1.a.size(); i++) {
            for (int j = 0; j < dm2.a.size(); j++) {
                if (dm1.a.get(i) == dm2.a.get(j)) {
                    temp.add(dm1.a.get(i));
                    dm2.a.remove(j);
                    break;
                }
            }
        }
        return temp;
    }
}


15. Дано два масиви. Сформувати третій масив, що складається з тих елементів, які присутні тільки в одному масиві.
Відповідь:
import java.util.ArrayList;

public class TMasCh15 {
    public static void main(String[] args) {
        DinMas dm1 = new DinMas();
        DinMas dm2 = new DinMas();
        System.out.println(dm1.a.toString());
        System.out.println(dm2.a.toString());
        ArrayList result = presentInOne(dm1, dm2);
        System.out.println(result.toString());
    }

    private static ArrayList presentInOne(DinMas dm1, DinMas dm2) {
        ArrayList temp = new ArrayList();
        boolean flag;
        for (int i = 0; i < dm1.a.size(); i++) {
            flag = false;
            for (int j = 0; j < dm2.a.size(); j++) {
                if (dm1.a.get(i) == dm2.a.get(j)) {
                    flag = true;
                }
            }
            if (!flag) {
                temp.add(dm1.a.get(i));
            }
        }

        for (int i = 0; i < dm2.a.size(); i++) {
            flag = false;
            for (int j = 0; j < dm1.a.size(); j++) {
                if (dm2.a.get(i) == dm1.a.get(j)) {
                    flag = true;
                }
            }
            if (!flag) {
                temp.add(dm2.a.get(i));
            }
        }
        return temp;
    }
}


16. Дан масив. Здійсніть циклічний зсув масив на k одиниць вправо, якщо найменший елемент масиву розташований раніше найбільшого елементу масиву, і вліво, якщо інакше.
Відповідь:
import java.util.ArrayList;

public class TMasCh16 {
    public static void main(String[] args) {
        DinMas dm = new DinMas();
        System.out.println(dm.a.toString());
        System.out.print("k->");
        int k = dm.sc.nextInt();
        shiftK(dm, k);
    }

    // шукаємо номери мінімального та максимального елементів
    // виконуємо перевірку їх розташування та виконуюмо 
    // відповідний зсув
    private static void shiftK(DinMas dm, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int numberMin = 0;
        int numberMax = dm.a.size();
        for (int i = 0; i < dm.a.size(); i++) {
            if ((int) dm.a.get(i) > max) {
                max = (int) dm.a.get(i);
                numberMax = i;
            }
            if ((int) dm.a.get(i) < min) {
                min = (int) dm.a.get(i);
                numberMin = i;
            }
        }
        if (numberMax > numberMin) {
            shift(dm, k);
        } else {
            shift(dm, dm.a.size() - k);
        }
        System.out.println(dm.a.toString());
    }

    // метод для зсуву елементів
    private static void shift(DinMas dm, int k) {
        int size = dm.a.size();
        ArrayList temp = (ArrayList) dm.a.clone();
        for (int i = 0; i < dm.a.size(); i++) {
            temp.set((i + k) % dm.a.size(), dm.a.get(i));
        }
        dm.a = temp;
    }
}


17. Дан масив, в якому кількість негативних елементів дорівнює кількості позитивним. Поміняйте місцями перший негативний і перший позитивний, другий негативний і другий позитивний і так далі.
Відповідь:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;

public class TMasCh18 {

    public static void main(String[] args) {
        int[] massiv = new int[10];
        ArrayList positivElement = new ArrayList();
        ArrayList negativElement = new ArrayList();
        initMassiv(massiv);
        System.out.println(Arrays.toString(massiv));
        initPosNeg(massiv, positivElement, negativElement);
        changeMassiv(massiv, positivElement, negativElement);
        System.out.println(Arrays.toString(massiv));
    }

    private static void changeMassiv(int[] massiv, ArrayList positivElement, ArrayList negativElement) {
        for (int i = 0; i < massiv.length; i++) {
            if (massiv[i] > 0) {
                massiv[i] = (int) negativElement.get(0);
                negativElement.remove(0);
            } else {
                massiv[i] = (int) positivElement.get(0);
                positivElement.remove(0);
            }
        }
    }

    private static void initPosNeg(int[] masiv, ArrayList positivElement, ArrayList negativElement) {
        for (int i = 0; i < masiv.length; i++) {
            if (masiv[i] > 0) {
                positivElement.add(masiv[i]);
            } else {
                negativElement.add(masiv[i]);
            }
        }
    }

    private static void initMassiv(int[] massiv) {
        Random random = new Random();
        for (int i = 0; i < massiv.length; i++) {
            massiv[i] = random.nextInt(100) + 1;
        }
        int index;
        for (int i = 0; i < massiv.length / 2; i++) {
            do {
                index = random.nextInt(massiv.length);
            } while (massiv[index] < 0);
            massiv[index] *= -1;
        }
    }
}

18. Видаліть в цілочисельному масиві всі позитивні числа, які є паліндромами.
Відповідь:
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class TMasCh18 {
    public static void main(String[] args) {
        ArrayList massiv = new ArrayList();
        initMas(massiv);
        System.out.println(massiv.toString());
        delPolindroms(massiv);
        System.out.println(massiv.toString());
    }

    private static void delPolindroms(ArrayList massiv) {

        for (int i = 0; i < massiv.size(); i++) {
            if (isPolindrom(massiv.get(i))) {
                massiv.remove(i);
                i--;
            }
        }
    }


    private static boolean isPolindrom(Integer temp) {
        char[] numbers = temp.toString().toCharArray();
        for (int i = 0; i < numbers.length / 2; i++) {
            if (numbers[i] != numbers[numbers.length - i - 1]) {
                return false;
            }
        }
        return true;
    }

    private static void initMas(ArrayList massiv) {
        System.out.print("Розмір масиву ->");
        Random random = new Random();
        int size = new Scanner(System.in).nextInt();
        for (int i = 0; i < size; i++) {
            massiv.add(random.nextInt(100));
        }
    }
}

19. Дано два масиви. Визначте, чи існують в першому масиві такі два елементи, що їх сума дорівнює сумі будь-яких трьох елементів другого масиву.
Відповідь:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;

public class TMasch19 {
    public static void main(String[] args) {
        int[] t = new int[10];
        int[] p = new int[10];
        initMas(t);
        initMas(p);
        System.out.println("1 масив " + Arrays.toString(t));
        System.out.println("2 масив " + Arrays.toString(p));
        ArrayList mas1 = new ArrayList();
        initArLi1(mas1, t);
        find(mas1, p);
    }

    private static void find(ArrayList mas2, int[] p) {
        int count=0;
        Integer[] temp = mas2.toArray(new Integer[mas2.size()]);
        System.out.println(Arrays.toString(temp));
        Arrays.sort(temp);
        ArrayList t = new ArrayList();
        for (int i = 0; i < p.length - 2; i++) {
            for (int j = i + 1; j < p.length - 1; j++) {
                for (int k = j + 1; k < p.length; k++) {
                    if (Arrays.binarySearch(temp, p[i] + p[j] + p[k]) >= 0) {
                        System.out.println("Такі елементи присутні. Шукана сума " + (p[i] + p[j] + p[k]));
                        System.out.printf("Координати (%d, %d, %d)\n", i + 1, j + 1, k + 1);
                       // count++;
                        System.exit(0);
                    }
                }
            }
        }
        System.out.println(count);
       // System.out.println("Такі елементи відсутні");
    }

    private static void initArLi1(ArrayList mas1, int[] t) {
        for (int i = 0; i < t.length - 1; i++) {
            for (int j = i + 1; j < t.length; j++) {
                mas1.add(t[i] + t[j]);
            }
        }
    }

    private static void initMas(int[] t) {
        Random random = new Random();
        for (int i = 0; i < t.length; i++) {
            t[i] = random.nextInt(100);
        }

    }
}

Комментариев нет:

Отправить комментарий