/ Задача по алгоритмам Задача: Пользователь вводит с клавиатуры список слов (и чисел). Слова вывести в возрастающем порядке, числа - в убывающем. Пример ввода: Вишня 1 Боб 3 Яблоко 2 0 Арбуз Пример вывода: Арбуз 3 Боб 2 Вишня 1 0 Яблоко / public class Solution { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); ArrayList<string> list = new ArrayList<string>();

    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;
        list.add(s);
    }
    String[] array = list.toArray(new String[list.size()]);
    sort(array);
    for (String x : array)
    {
        System.out.println(x);
    }
}
public static void sort(String[] array)
{
    for (int i = 0; i < array.length-1; i++)
    {
        int iTemp = i;
        if (isNumber(array[i]))
        {
            for (int j = 0; j < array.length; j++)
            {
                if (isNumber(array[j]))
                {
                    int di = Integer.parseInt(array[i]);
                    int dj = Integer.parseInt(array[j]);
                    if ((di < dj && i < j) || (dj < di && j < i))
                    {
                        array[i] = String.valueOf(dj);
                        array[j] = String.valueOf(di);
                        i = j;
                    }
                }
            }
        }
        else
        {
            for (int j = 0; j < array.length; j++)
            {
                if (!(isNumber(array[j])))
                {
                    if ((isGreaterThan(array[i], array[j]) && i < j) || (isGreaterThan(array[j], array[i]) && j < i))
                    {
                        String sTemp = array[j];
                        array[j] = array[i];
                        array[i] = sTemp;
                        i = j;
                    }
                }
            }
        }
        i = iTemp;
    }
}
//Метод для сравнения строк: 'а' больше чем 'b'
public static boolean isGreaterThan(String a, String b)
{
    return a.compareTo(b) > 0;
}
//строка - это на самом деле число?
public static boolean isNumber(String s)
{
    if (s.length() == 0) return false;

    char[] chars = s.toCharArray();
    for (int i = 0; i < chars.length; i++)
    {
        char c = chars[i];
        if ((i != 0 && c == '-') //есть '-' внутри строки
                || (!Character.isDigit(c) && c != '-') ) // не цифра и не начинается с '-'
        {
            return false;
        }
    }
    return true;
}

}

задан 28 Окт '16, 03:20

dorongoldin's gravatar image

dorongoldin
356
одобрено: 23%

закрыто 13 Сен, 15:33

AndyRad's gravatar image

AndyRad
13.1k29

Вопрос был закрыт по следующей причине: "Problem is not reproducible or outdated" AndyRad 13 Сен, 15:33


ссылка

опубликован 28 Окт '16, 04:13

Yuri_Dnepr's gravatar image

Yuri_Dnepr
5.8k7
одобрено: 51%

Если исправили, то обновите первое (свое) сообщение данной темы с нормально отформатированным кодом.

(28 Окт '16, 05:09) Vegas

Вишня
1
Боб
3
Яблоко
2
0
Арбуз
10
20
1000
20000

(28 Окт '16, 04:49) Yuri_Dnepr

Не исправил:

Код от начала и до конца  
Нормально отформатированный
(28 Окт '16, 04:44) Yuri_Dnepr

исправил

(28 Окт '16, 04:36) dorongoldin

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×3,808

Задан: 28 Окт '16, 03:20

Просмотров: 172 раз

Отредактирован: 13 Сен, 15:33