fork download
  1. # include <cstdlib>
  2. # include <cstdio>
  3.  
  4. int main()
  5. {
  6. /*
  7.   Задан текст.
  8.   Определить, удовлетворяет ли он свойству,
  9.   текст начинается с некоторой ненулевой цифры, за которой следуют только буквы,
  10.   и их количество равно числовому значению этой цифры
  11.   */
  12.  
  13. char text[1000] = {}; // текст
  14.  
  15. system("chcp 1251 && cls"); // меняем кодовую страницу в консоли для отображения кириллицы и очищаем консоль
  16. printf("Введите текст:");
  17. fgets(text, sizeof(text), stdin);
  18.  
  19. //1. проверяем, что первый символ - цифра, отличная от 0
  20. if(text[0] <= '0' || text[0] > '9')
  21. {
  22. printf("Текст НЕ начинается с ненулевой цифры\n");
  23. return 1;
  24. }
  25.  
  26. //2. получаем числовое значение этой цифры
  27. int len = text[0] - '0';
  28.  
  29. int count = 0; //счетчик длины
  30.  
  31. //3. проверяем есть ли в тексте не буквы
  32. char *ptr = &text[1]; // указатель , установленный на второй символ
  33.  
  34. //4. пока не дойдем до конца строки
  35. while(*ptr && *ptr != '\n')
  36. {
  37. // буквы в алфавите идут по порядку, поэтому проверяем на вхождение в диапазон
  38. // 5.
  39. char s = *ptr;
  40. if(
  41. (s >= 'a' && s <= 'z') // латиница нижний регистр
  42. || (s >= 'A' && s <= 'Z') // латиница верхний
  43. || (s >= 'а' && s <= 'я') // кириллица нижний
  44. || (s >= 'А' && s <= 'Я') // кириллица верхний
  45. )
  46. {
  47. ++ptr; // сдвигаем указатель
  48. count++; // увеличиваем счетчик
  49. }
  50. else
  51. {
  52. printf("Найдена не буква\n");
  53. return 1;
  54. }
  55. }
  56.  
  57. if(count != len)
  58. {
  59. printf("Число букв не равно первой цифре\n");
  60. return 1;
  61. }
  62.  
  63. printf("Текст удовлетворяет свойству\n");
  64. return 0;
  65. }
  66.  
Success #stdin #stdout #stderr 0s 5660KB
stdin
4test
stdout
Введите текст:Текст удовлетворяет свойству
stderr
sh: 1: chcp: not found