Подскажите пожалуйста, Язык C++, в чем ошибка?
Изначальное задание: Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним символом «.» (точка). В конце строки точку не ставить. В C++.
Answers & Comments
#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;
}