fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class CharArrApp
  6. {
  7.  
  8. // объ¤вление переменных - флаги и счетчики дл¤ всех видов слов
  9. private int letterWordCount = 0;
  10. private int letterWordOngoing = 0;
  11. private int digitWordCount = 0;
  12. private int digitWordOngoing = 0;
  13. private int symbolWordCount = 0;
  14. private int symbolWordOngoing = 0;
  15.  
  16. // функци¤ завершени¤ чтени¤ слова и увеличение счетчика слова на единицу
  17. private void countLastWord()
  18. {
  19. if ( letterWordOngoing != 0 ) { letterWordOngoing = 0; letterWordCount++; }
  20. else if ( digitWordOngoing != 0 ) { digitWordOngoing = 0; digitWordCount++; }
  21. else if ( symbolWordOngoing != 0 ) { symbolWordOngoing = 0; symbolWordCount++; }
  22. }
  23.  
  24. public void run()
  25. {
  26. // загрузка текста в массив - цикл считывани¤ одного символа текста
  27. Scanner in = new Scanner(System.in);
  28. String s = in.next();
  29. in.close();
  30.  
  31. if ( s.isEmpty() )
  32. {
  33. return;
  34. }
  35.  
  36. char[] text = s.toCharArray();
  37.  
  38. // проход по символам текста загруженного в массив
  39. for( int i = 0; i < text.length && text[i] != 0; i++ )
  40. {
  41. // анализ символов: к какой группе они относ¤тс¤ и проверка состо¤ний
  42. if ( text[i] == '*'|| text[i] == '-'|| text[i] == '+' ) // проверка принадлежности к данному типу символов
  43. {
  44. if ( symbolWordOngoing == 0 )
  45. {
  46. countLastWord();
  47. symbolWordOngoing = 1;
  48. }
  49. }
  50. else if ( Character.isDigit( text[i] ) ) // проверка принадлежности к данному типу символов (цифра)
  51. {
  52. if ( digitWordOngoing == 0 )
  53. {
  54. countLastWord();
  55. digitWordOngoing = 1;
  56. }
  57. }
  58. else if ( Character.isLowerCase( text[i] ) ) // проверка принадлежности к данному типу символов (буква)
  59. {
  60. if ( letterWordOngoing == 0 )
  61. {
  62. countLastWord();
  63. letterWordOngoing = 1;
  64. }
  65. }
  66. else
  67. {
  68. System.out.printf("error: illegal character: %c / 0x%x\n", text[i], text[i]);
  69. return;
  70. }
  71. }
  72.  
  73. countLastWord(); // финальное завершение текущего слова
  74.  
  75. // вывод количества посчитанных слов
  76. System.out.printf("letterWordCount = %d\n", letterWordCount);
  77. System.out.printf("digitWordCount = %d\n", digitWordCount );
  78. System.out.printf("symbolWordCount = %d\n", symbolWordCount);
  79.  
  80. // вычисление конечного результата
  81. if( letterWordCount > symbolWordCount ) { System.out.printf("в данном тексте больше групп букв, чем групп знаков\n"); }
  82. else if ( letterWordCount == symbolWordCount ) { System.out.printf("в данном тексте одинаковое количество групп букв и групп знаков\n"); }
  83. else { System.out.printf("в данном тексте групп букв меньше, чем групп знаков\n"); }
  84. }
  85.  
  86. public static void main( String[] args )
  87. {
  88. CharArrApp app = new CharArrApp();
  89. app.run();
  90. }
  91. }
Success #stdin #stdout 0.14s 321344KB
stdin
afsf1213**++
stdout
letterWordCount = 1
digitWordCount  = 1
symbolWordCount = 1
в данном тексте одинаковое количество групп букв и групп знаков