Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lolopop12
0 / 0 / 1
Регистрация: 20.01.2016
Сообщений: 50
#1

Строку разделить одним символом "точка" - C++

11.03.2016, 19:24. Просмотров 548. Ответов 10
Метки нет (Все метки)

Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним символом «.» (точка). В конце строки точку не ставить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2016, 19:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строку разделить одним символом "точка" (C++):

Найти конец предложения, обозначенный символом "точка" - C++
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". В следующем слове первую строчную...

Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*". - C++
Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*". Групой...

Преобразовать строку, удалив пробелы, и разделить слова одиночной "звёздочкой" - C++
Дана строка слов, разделенных пробелами. Между словами может быть несколько пробелов, в начале и конце строки также могут быть пробелы....

Разделить строку на слова, вывести в столбик, подсчитать количество слов с буквой "а" - C++
Здравствуйте! Я новичок в этом деле. застопорился на строках Прошу помощи у вас Мне надо решить пару задач : 1. Дана строка, мне...

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На - C++

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет - C++
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после каждого знака препинания (".", ",",...

10
-ДоМоВоЙ-
121 / 120 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
11.03.2016, 19:49 #2
lolopop12,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним символом «.» (точка). В конце строки точку не ставить
#include <iostream>
 
int main()
{
    char arr[]={"Великая матушка Русь."};
    
    for (int i=0;i<strlen(arr)-1;i++){
    if (arr[i]==' ')
    arr[i]='.';
    std :: cout<<arr[i];}
    system("pause");
    return 0;
}
Добавлено через 4 минуты
Или так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним символом «.» (точка). В конце строки точку не ставить
#include <iostream>
#include <string>
 
int main()
{
    std :: string arr={"Великая матушка Русь."};
    
    for (int i=0;i<arr.length()-1;i++){
    if (arr[i]==' ')
    arr[i]='.';
    std :: cout<<arr[i];}
    system("pause");
    return 0;
}
1
sab1ch
BrainOverflow
123 / 127 / 41
Регистрация: 31.03.2013
Сообщений: 556
11.03.2016, 19:55 #3
lolopop12,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    string a;
    cout << "Enter the text: " << endl; // на английском, иначе выведутся кракозябры
    getline(cin, a);
    string b;
    b += a[0];
    for (int i = 1; i < a.size(); i++)
    {
        if ((a[i] != ' ') || ((a[i] == ' ') && (a[i - 1] != ' '))) b += a[i];
        for (int i = 0; i < b.size(); i++)
            if (b[i] == ' ')
                b[i] = '.';
    }
    cout << endl;
    cout << "All spaces are replaced by a '.': " << endl;
    cout << b << endl;
 
}
Добавлено через 51 секунду
Cadr, ТСу надо, чтобы ВСЕ пробелы заменились на одну точку, а у вас ВСЕ пробелы заменятся на аналогичное количество точек.
1
-ДоМоВоЙ-
121 / 120 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
11.03.2016, 20:01 #4
sab1ch

Добавлено через 3 минуты
Цитата Сообщение от sab1ch Посмотреть сообщение
Cadr, ТСу надо, чтобы ВСЕ пробелы заменились на одну точку, а у вас ВСЕ пробелы заменятся на аналогичное количество точек.
Не понял? Это как?
0
sab1ch
BrainOverflow
123 / 127 / 41
Регистрация: 31.03.2013
Сообщений: 556
11.03.2016, 20:01 #5
Cadr, например, строка:
C++
1
"Here          some               string"
должна замениться на:
C++
1
"Here.some.string"
а в с вашим кодом будет:
C++
1
"Here..........some...............string"
2
-ДоМоВоЙ-
121 / 120 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
11.03.2016, 20:06 #6
sab1ch, Понял. Ну бывает, недопонял задание
0
yrceus
82 / 82 / 54
Регистрация: 25.08.2013
Сообщений: 326
11.03.2016, 20:12 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <Windows.h>
#include <locale>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
    string or_line, cur_line;
    getline(cin, or_line);
    for (decltype(or_line.size()) ind = 0; ind < or_line.size(); ++ind) {
        if (!isspace(or_line[ind], locale("rus_rus.1251")))
            cur_line.push_back(or_line[ind]);
        else if (!cur_line.empty() && cur_line.back() != '.')
            cur_line.push_back('.');
    }
    if (cur_line.back() == '.') cur_line.pop_back();
    cout << cur_line << endl;
    return 0;
}
1
-ДоМоВоЙ-
121 / 120 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
11.03.2016, 20:15 #8
sab1ch, Тогда так, в задании указано
Цитата Сообщение от lolopop12 Посмотреть сообщение
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими).
С вашего позволения, чуть подправил ваш код под задание
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
 
int main()
{
    setlocale(LC_ALL,"Russian");
    const int SZ=100;
    std ::string a = "Великая   матушка   Русь";
    std ::string b;
    b += a[0];
    for (int i = 1; i < a.size(); i++)
    {
        if ((a[i] != ' ') || ((a[i] == ' ') && (a[i - 1] != ' '))) b += a[i];
        for (int i = 0; i < b.size(); i++)
            if (b[i] == ' ')
                b[i] = '.';
    }
    std ::cout << std ::endl;
    std ::cout << b << std ::endl;
 
 
    system("pause");
    return 0;
}
1
lolopop12
0 / 0 / 1
Регистрация: 20.01.2016
Сообщений: 50
11.03.2016, 20:39  [ТС] #9
Cadr, sab1ch, yrceus, Спасибо вам огромное.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3976 / 2200 / 553
Регистрация: 18.10.2014
Сообщений: 3,814
11.03.2016, 20:42 #10
Цитата Сообщение от lolopop12 Посмотреть сообщение
В конце строки точку не ставить.
А в начале можно ставить? А если в конце много пробелов, то на один пробел их заменять можно или нет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string>
#include <algorithm>
#include <iostream>
 
int main() 
{
  std::string s = " aaaaa   bbbbb  cccccc dddddddd  ";
 
  s.erase(std::unique(s.begin(), s.end(), [](char a, char b) { return a == ' ' && b == ' '; }), s.end());
  std::replace(s.begin(), s.end() - 1, ' ', '.');
 
  std::cout << s << std::endl;
}
Добавлено через 2 минуты
Цитата Сообщение от Cadr Посмотреть сообщение
С вашего позволения, чуть подправил ваш код под задание
Эта реализация ставит точку в конце, если в конце были пробелы.
1
-ДоМоВоЙ-
121 / 120 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
11.03.2016, 21:09 #11
TheCalligrapher, Ну тогда так, небольшое упущение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
 
int main()
{
    setlocale(LC_ALL,"Russian");
    const int SZ=100;
    std ::string a = "Великая   матушка   Русь   ";
    std ::string b;
    b += a[0];
 
    for (int i = 1; i < a.size(); i++)
    {
    if ((a[i] != ' ') || ((a[i] == ' ') && (a[i - 1] != ' '))) b += a[i];
    for (int i = 0; i < b.size()-1; i++)
    if (b[i] == ' ')
    b[i] = '.';
    }
    std ::cout << std ::endl;
    std ::cout << b << std ::endl;
 
 
    system("pause");
    return 0;
}
0
11.03.2016, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2016, 21:09
Привет! Вот еще темы с ответами:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Класс "Точка". Функция - определение в каком координатном угле находится точка - C++
1. Определить в глобальной области видимости функцию в соответствии с вариантом. Доступ к полям класса осуществить с помощью...

Найти все вхождения в строку последовательности символов "сто" и заменить на "100" - C++
Дана строка символов. Найти все вхождений последовательностей символов &quot;сто&quot; и заменить на &quot;100&quot;

Сколькими способами можно получить строку "В" из строки "А", вычеркивая некоторые символы - C++
)заданы 2 символьные строки А и Б . Требуется вычислить сколькими способами можно получить строку В из строки А, вычеркивая некоторые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.