fork download
  1. /*
  2.  
  3.  
  4. ЗАДАЧА 4
  5.  
  6.  
  7.  На вход: строка из цифр.
  8.  Вывод: строка, содержащая в себе самую длинную строго возрастающую последовательность цифр
  9.  
  10.  ПРИМЕР:
  11.  Ввод: 121013451
  12.  Вывод: 1345
  13.  
  14.  
  15.  
  16. АВТОР
  17.  
  18. Tg: @ninemisha9 (по всем вопросам)
  19. отблагодарить: 2200701041152627 т-банк
  20.  
  21. */
  22.  
  23.  
  24.  
  25.  
  26.  
  27. #include <stdio.h>
  28. #include <string.h>
  29.  
  30. #define LEN 1000
  31.  
  32. void max_ints_line(char *str, char *res){
  33. int len = strlen(str);
  34. str[--len] = '\0';
  35.  
  36. /*
  37.   пиздец как важно !!!!!!!!!!!
  38.  
  39.   fgets считывает строку с \n (когда мы нажимаем enter в конец строки добавляется \n)
  40.   поэтому перемещаем \0 на один индекс назад (на место \n) и сокращаем len на 1
  41.  
  42.   после fgets получаем: текст\n\0
  43.   поэтому => текст\0 (пермещаем \0 на место \n)
  44.  
  45.   */
  46.  
  47.  
  48. int maxLength = 0; // переменная для записи максимальной длины подстроки с возрастающими цифрами
  49. int currentLength = 1; // длина текущей подстроки с возрастающими цифрами (как минимум 1 цифра по итогу будет)
  50. int maxStartIndex = 0; // индекс начала подстроки с возрастающими цифрами (с максимальной длиной)
  51. int currentStartIndex = 0; // индекс начала подстроки с возрастающими цифрами
  52.  
  53. for (int i = 1; i < len; i++) { // начинаем со второй цифры
  54.  
  55. if (str[i] > str[i - 1]){ // если текущая цифра больше предыдущей
  56.  
  57. currentLength++; // увеличиваем счетчик возрастающих цифр подряд
  58.  
  59. if (currentLength > maxLength){ // если длина текущей строки больше максимальной длины
  60. maxLength = currentLength; // обновляем переменные для максимальной подстроки (с какого индекса началась и какая длина у нее)
  61. maxStartIndex = currentStartIndex;
  62.  
  63. }
  64.  
  65. }
  66. else{
  67. currentLength = 1; // если текущая цифра меньше предыдущей или равна ей, то обнуляем переменные для текущей подстроки
  68. currentStartIndex = i;
  69. }
  70. }
  71.  
  72.  
  73.  
  74. int i2 = 0;
  75.  
  76. for(int i = maxStartIndex; i < maxLength; i++){
  77. res[i2++] = str[i];
  78.  
  79. }
  80.  
  81. res[i2] = '\0';
  82.  
  83. /*
  84.   strncpy(res, str + maxStartIndex, maxLength);
  85.  
  86.  
  87.   res[maxLength] = '\0';
  88.  
  89.   */
  90.  
  91.  
  92.  
  93. }
  94.  
  95. int main() {
  96. char str_ints[LEN];
  97. char res[LEN];
  98.  
  99. fgets(str_ints, LEN, stdin);
  100.  
  101. max_ints_line(str_ints, res);
  102.  
  103. printf("%s\n", res);
  104.  
  105.  
  106. }
  107.  
  108.  
  109.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout