Предмет: Информатика, автор: rinatsibayru

Подскажите пожалуйста, Язык C++, в чем ошибка?

Изначальное задание: Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним символом «.» (точка). В конце строки точку не ставить. В C++.

Приложения:

Адиль15123: Впервые вижу человека, который взаправду кодит через Word)
rinatsibayru: просто скопировал туда, для отправки
restIess: а для чего используется массив структур в коде?
rinatsibayru: ну меня учили с помощью этого метода вводить текст после запуска программы. Я хотел что бы мы сами вводили текст, а потом программа, показывала оригинальный текст и с точками вмексто пробела
restIess: а пробелов может быть хоть 10 штук подряд?
rinatsibayru: да
restIess: программе на вход даем n строк, а потом она выводит эти строки с точками получается?
rinatsibayru: да

Ответы

Автор ответа: restIess
2

#include <iostream>

#include <string>

#include <Windows.h>

using namespace std;

int main()

{

   SetConsoleCP(1251);

   SetConsoleOutputCP(1251);  

   setlocale(LC_ALL, "Rus");

   struct _list {

       char predl[30];

   };

   int n;

   cout << "n=";

   cin >> n;

   _list *mas = new _list[n];

   cin.ignore();

   

       char predlcpy[30];

       int j = 0;

       for (int i = 0; i < n; i++)

       {

           cout << "\nПредложение:";

           cin.getline(mas[i].predl, 30);

           //cout << "\n" << "Предложение:" << mas[i].predl << "\n";

       }

       for (int k = 0; k < n; k++) {

           //убираем лишние пробелы

           int space = 0;

           for (int i = 0; i < strlen(mas[k].predl); i++) {

               if (mas[k].predl[i] == ' ') {

                   while (!space) {

                       predlcpy[j] = ' ';

                       j++;

                       space = 1;

                   }

               }

               else {

                   predlcpy[j] = mas[k].predl[i];

                   j++;

                   space = 0;

               }

           }

           predlcpy[j] = 0;

           //меняем пробел на точку

           for (int i = 0; i < strlen(predlcpy); i++)

           {

               if (predlcpy[i] == ' ')

                   predlcpy[i] = '.';

               cout << predlcpy[i];

           }

           cout << endl;

           j = 0;

           space = 0;

       }

   return 0;

}

Похожие вопросы