Advertisement
Guest User

:)

a guest
May 26th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.73 KB | None | 0 0
  1.  
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5.  
  6. /* Задача по алгоритмам
  7. Задача: Пользователь вводит с клавиатуры список слов (и чисел). Слова вывести в возрастающем порядке, числа - в убывающем.
  8. Пример ввода:
  9. Вишня
  10. 1
  11. Боб
  12. 3
  13. Яблоко
  14. 2
  15. 0
  16. Арбуз
  17. Пример вывода:
  18. Арбуз
  19. 3
  20. Боб
  21. 2
  22. Вишня
  23. 1
  24. 0
  25. Яблоко
  26. */
  27.  
  28. public class Solution
  29. {
  30.     public static void main(String[] args) throws Exception
  31.     {
  32.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  33.         ArrayList<String> list = new ArrayList<String>();
  34.         while (true)
  35.         {
  36.             String s = reader.readLine();
  37.             if (s.isEmpty()) break;
  38.             list.add(s);
  39.         }
  40.  
  41.         String[] array = list.toArray(new String[list.size()]);
  42.         sort(array);
  43.  
  44.         for (String x : array)
  45.         {
  46.             System.out.println(x);
  47.         }
  48.  
  49.  
  50.     }
  51.  
  52.     public static void sort(String[] array)
  53.     {
  54.         ArrayList<Integer> listNumbers = new ArrayList<Integer>();
  55.         ArrayList<Integer> listWord = new ArrayList<Integer>();
  56.         for (int k = 0; k < array.length; k++)
  57.         {
  58.  
  59.             if (isNumber(array[k]))    // Якщо число - записує порядековий номер в масив
  60.             {
  61.                 listNumbers.add(k);
  62.  
  63.             }
  64.             else {                  //  Якщо слово - записує порядковий номер в масив
  65.                 listWord.add(k);
  66.             }
  67.  
  68.  
  69.         }
  70.  
  71.         for (int i = 0; i < array.length; i++)                // Проганяю всі елементи масиву
  72.         {
  73.             for (int j = 0; j < listNumbers.size() - 1; j++)
  74.             {
  75.                 if (Integer.parseInt(array[listNumbers.get(j)]) < Integer.parseInt(array[listNumbers.get(j + 1)]))  //  сортування для Чисел
  76.                 {
  77.                     String s = array[listNumbers.get(j + 1)];
  78.                     array[listNumbers.get(j + 1)] = array[listNumbers.get(j)];
  79.                     array[listNumbers.get(j)] = s;
  80.                 }
  81.             }
  82.             for (int f = 0; f < listWord.size() - 1; f++ )                               // сортування для слів
  83.             {
  84.                 if (isGreaterThen(array[listWord.get(f)], array[listWord.get(f + 1)]))
  85.                 {
  86.                     String s = array[listWord.get(f + 1)];
  87.                     array[listWord.get(f + 1)] = array[listWord.get(f)];
  88.                     array[listWord.get(f)] = s;
  89.                 }
  90.             }
  91.             }
  92.         }
  93.  
  94.  
  95.     //  Зрівнюю слова (чи а більше б)    (цей метод вже був написаний в умові)
  96.     public static boolean isGreaterThen(String a, String b)
  97.     {
  98.         return a.compareTo(b) > 0;
  99.     }
  100.  
  101.  
  102.     // перевіряю чи строка це число    (цей метод вже був написаний в умові)
  103.     public static boolean isNumber(String s)
  104.     {
  105.         if (s.length() == 0) return false;
  106.  
  107.         char[] chars = s.toCharArray();
  108.         for (int i = 0; i < chars.length; i++)
  109.         {
  110.             char c = chars[i];
  111.             if ((i != 0 && c == '-') //
  112.                     || (!Character.isDigit(c) && c != '-') ) // не цифра і не починається з '-'     (цей метод вже був написаний в умові)
  113.             {
  114.                 return false;
  115.             }
  116.         }
  117.         return true;
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement