Различия

Показаны различия между двумя версиями страницы.


reshenie_zadachi_16 [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Задача: Записать каждое слово предложения в обратном порядке (инвертировать слово) ======
 +[[zadachi._olimpiady]]
  
 +
 +**Задача 16**: Ввести с клавиатуры заканчивающееся точкой предложение, слова в котором отделены друг от друга пробелами. Записать каждое слово предложения в обратном порядке (инвертировать слово) и напечатать полученное предложение. Для простоты реализации ограничим длину вводимого предложения 80 символами.
 +
 +Решение с использованием языка CPP.
 +
 +
 +
 +Листинг основной файл:<file cpp>
 +#include <iostream>
 +using namespace std;
 +// Файлйл написанный самостоятельно, содержащий 
 +// функцию соединения строк и 
 +// функцию инвертирования строк.ы
 +#include "mystring.h" 
 +
 +void main()
 +{
 +   char slovo[81], sp[81], c = ' ', *ptr = slovo;
 +
 +   sp[0] = '\0'; // Очистка массива для нового предложения.
 +
 +   cout << "Enter string with point of the end:\n";
 +   do
 +   
 +      cin >> slovo ; // Читается слово из входного потока.
 +      invert(slovo); // Инвертировать слово.
 +      c = slovo[0];
 +
 +      // Убрать точку в начале последнего слова.
 +      if (c == '.')
 +   ptr = &slovo[1];
 +
 +      if (sp[0] != '\0')
 +           conc(sp," \0"); // Пробел перед словом.
 +      conc(sp,ptr);        // Добавить слово в предложение.
 +
 +    }while (c != '.');    // Конец цикла чтения.
 +
 +   conc(sp,".\0");         // Точка o конце предложения.
 +   cout << "\n" << sp;     // Вывод результата.
 +}
 +
 +</file>
 +**Заголовочный файл mystring.h:**
 +<file>
 +void invert (char *e)
 +{
 +   char s;
 +   for (int m=0;e[m]!='\0';m++);
 +   for (int i=0,j=m-1;i < j;i++,j--)
 +   
 +    s = e[i];
 +    e[i] = e[j];
 +    e[j] = s; 
 +   }
 +}
 +
 +void conc (char *c1, char *c2)
 +{
 +   for (int m=0;c1[m]!='\0';m++);
 +   // m - длина первой строки.
 +   for (int i=0; c2[i]!='\0';i++)
 +      c1[m+i]=c2[i];
 +   c1[m+i] = '\0';
 +}
 +</file>
 +Комментарий к коду.
 +
 +В программе в символьный массив slovo считывается из входного потока (с клавиатуры) очередное слово. sp - формируемое предложение, в конец которого всегда добавляется точка. Переменная char c - первый символ каждого инвертированного слова. Для последнего слова предложения этот символ равен точке. При добавлении этого слова к новому предложению точка отбрасывается с помощью изменения значения указателя ptr. Использованы директивы #include, включающие в программу средства ввода/вывода и тексты функций инвертирования строки invert() и конкатенации строк conc(). Обратите внимание, что длина массива - первого из параметров функции conc() должна быть достаточно велика, чтобы разместить результирующую строку. Препроцессор добавляет тексты всех функций в программу из файла mystring.h и как единое целое передает на компиляцию.

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!