Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.util.Scanner;
- import java.util.TreeSet;
- public class Main {
- static Scanner scanner;
- static final int MAX_ARRAY = 10;
- static int[] inputArrayFromConsole() {
- int n;
- do {
- System.out.print("Введите размер массива от 2 до " + MAX_ARRAY + ": ");
- n = Integer.parseInt(scanner.nextLine());
- }
- while (n < 2 || n > MAX_ARRAY);
- System.out.println("Введите " + n + " элементов массива: ");
- int[] arrayOfElements = new int[n];
- for (int i = 0; i < n; i++)
- arrayOfElements[i] = Integer.parseInt(scanner.nextLine());
- System.out.println("Массив: ");
- for (int i = 0; i < n; i++)
- System.out.print(arrayOfElements[i] + " ");
- System.out.println();
- return arrayOfElements;
- }
- static int[] inputArrayFromFile(String path) throws FileNotFoundException {
- int n;
- File file = new File(path);
- Scanner fileScanner = new Scanner(file);
- n = Integer.parseInt(fileScanner.nextLine());
- int[] arrayOfElements = new int[n];
- for (int i = 0; i < n; i++)
- arrayOfElements[i] = Integer.parseInt(fileScanner.nextLine());
- System.out.println("Массив: ");
- for (int i = 0; i < n; i++)
- System.out.print(arrayOfElements[i] + " ");
- return arrayOfElements;
- }
- static byte chooseSource() {
- boolean isIncorrect;
- byte source = 0;
- System.out.println("Выберите, как будет осуществлятся ввод и вывод данных, через файл или консоль.");
- System.out.print("Пожалуйста, сделайте выбор(1 - файл; 2 - консоль): ");
- do {
- isIncorrect = false;
- try {
- source = Byte.parseByte(scanner.nextLine());
- } catch (Exception ex) {
- isIncorrect = true;
- System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
- }
- if (source != 1 && source != 2 && !isIncorrect) {
- isIncorrect = true;
- System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
- }
- } while (isIncorrect);
- return source;
- }
- static String inputPathToFile() {
- boolean isIncorrect;
- String path;
- do {
- isIncorrect = false;
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- isIncorrect = true;
- System.out.print("Файл не найден! Введите правильную ссылку: ");
- }
- } while (isIncorrect);
- return path;
- }
- static int[] input(byte source) throws FileNotFoundException {
- String path;
- int[] arrayOfElements = new int[]{};
- switch (source) {
- case 1:
- System.out.print("Введите ссылку на файл ввода: ");
- path = inputPathToFile();
- arrayOfElements = inputArrayFromFile(path);
- break;
- case 2:
- arrayOfElements = inputArrayFromConsole();
- break;
- }
- return arrayOfElements;
- }
- static int findMaxLength(int[] arrayOfElements) {
- int i = 2, position = 0, counter1, counter2, maxLength = 0;
- while (i <= arrayOfElements.length) {
- if (arrayOfElements[i] > arrayOfElements[i - 1]) {
- counter1 = 1;
- counter2 = i;
- while (arrayOfElements[counter2] > arrayOfElements[counter2 - 1] && counter2 <= arrayOfElements.length) {
- counter1++;
- counter2++;
- }
- if (counter1 > maxLength) {
- maxLength = counter1;
- position = i - 1;
- }
- i = i + counter1;
- } else
- i++;
- }
- return maxLength;
- }
- static void outputToConsole(int position, int[] arrayOfElements) {
- {
- if (position == 0)
- System.out.print("Участков возрастания нет.");
- else {
- System.out.println("Максимальная длина = " + position);
- for (int i = position; i < position - 1; i++)
- System.out.print(arrayOfElements[i] + " ");
- }
- }
- }
- static void outputToFile(int position, int[] arrayOfElements, String path) throws IOException {
- {
- FileWriter fileWriter = new FileWriter(path);
- if (position == 0)
- fileWriter.write("Участков возрастания нет.");
- else {
- fileWriter.write("Максимальная длина = " + position);
- for (int i = position; i < position - 1; i++)
- fileWriter.write(arrayOfElements[i] + " ");
- }
- }
- }
- static void output(byte source, int position, int[] arrayOfElements) throws IOException {
- String path;
- switch (source) {
- case 1: {
- System.out.print("Введите ссылку на файл вывода: ");
- path = inputPathToFile();
- outputToFile(position, arrayOfElements, path);
- System.out.print("Данные успешно записаны в файл!");
- }
- case 2: {
- outputToConsole(position, arrayOfElements);
- }
- }
- }
- public static void main(String[] args) throws IOException {
- scanner = new Scanner(System.in);
- System.out.println("Данная программа находит самую длинную восходящую подпоследовательность в данной последовательности.");
- byte source = chooseSource();
- int[] arrayOfElements = input(source);
- int position = findMaxLength(arrayOfElements);
- output(source, position, arrayOfElements);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement