Автор Арсен Арутюнян задал вопрос в разделе Другие языки и технологии
C++ string insert и получил лучший ответ
Ответ от Капитан Гугл[гуру]
Потому что строка бесконечно удлинняется, добавляя в каждой итерации точку.
И вообще
const char X[] = "AOYEUI";
...
if(strchr(X,toupper(st[ i]))...//правда, проще? Арсен Арутюнян
Гуру
(4600)
1) удаляет все гласные буквы,
2) перед каждой согласной буквой ставит символ ".",
Ответ от Дима[мастер]
У тебя программа зацикливается вот здесь:
for(int i = 0; i < st.length(); i++)
Из-за этого:
else st.insert(i, ".");
Сделай break для вывода из цикла во вложенном цикле, как вариант, но я сомневаюсь что она будет работать, т. к. не понимаю окончательной задачи
У тебя программа зацикливается вот здесь:
for(int i = 0; i < st.length(); i++)
Из-за этого:
else st.insert(i, ".");
Сделай break для вывода из цикла во вложенном цикле, как вариант, но я сомневаюсь что она будет работать, т. к. не понимаю окончательной задачи
Ответ от Николай Веселуха[гуру]
Так нагляднее?
#include <iostream>
#include <string>
using namespace std;
bool is_vowel(wchar_t);
bool is_consonant(wchar_t);
bool logic(wstring, wchar_t);
int main() {
wcout.imbue(locale(".866"));
wcin.imbue(locale(".866"));
wstring text(L"Мама мыла раму, Алла читала книгу! ");
wcout << text << endl;
size_t size = text.size();
rsize_t letter = 0;
while (letter < size) {
if (is_vowel(text.at(letter)) {
text.erase(letter, 1);
--size;
} else if (is_consonant(text.at(letter)) {
text.insert(letter, L".");
++size;
letter += 2;
} else ++letter;
}
wcout << text << endl;
cin.get(); cin.get();
return 0;
}
bool is_consonant(wchar_t _letter) {
wstring src(L"БбВвГгДдЖжЗзЙйКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщЪъЬь");
return logic(src, _letter);
}
bool is_vowel(wchar_t _letter) {
wstring src(L"АаЕеЁёИиОоУуЫыЭэЮюЯя");
return logic(src, _letter);
}
bool logic(wstring _src, wchar_t _letter) {
bool vowel = false;
const size_t size = _src.size();
for (rsize_t letter = 0; letter < size; letter++)
if (_letter == _src.at(letter)) {
vowel = true;
break;
}
return vowel;
}
Так нагляднее?
#include <iostream>
#include <string>
using namespace std;
bool is_vowel(wchar_t);
bool is_consonant(wchar_t);
bool logic(wstring, wchar_t);
int main() {
wcout.imbue(locale(".866"));
wcin.imbue(locale(".866"));
wstring text(L"Мама мыла раму, Алла читала книгу! ");
wcout << text << endl;
size_t size = text.size();
rsize_t letter = 0;
while (letter < size) {
if (is_vowel(text.at(letter)) {
text.erase(letter, 1);
--size;
} else if (is_consonant(text.at(letter)) {
text.insert(letter, L".");
++size;
letter += 2;
} else ++letter;
}
wcout << text << endl;
cin.get(); cin.get();
return 0;
}
bool is_consonant(wchar_t _letter) {
wstring src(L"БбВвГгДдЖжЗзЙйКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщЪъЬь");
return logic(src, _letter);
}
bool is_vowel(wchar_t _letter) {
wstring src(L"АаЕеЁёИиОоУуЫыЭэЮюЯя");
return logic(src, _letter);
}
bool logic(wstring _src, wchar_t _letter) {
bool vowel = false;
const size_t size = _src.size();
for (rsize_t letter = 0; letter < size; letter++)
if (_letter == _src.at(letter)) {
vowel = true;
break;
}
return vowel;
}
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C++ string insert
помогите доработать программу
#include <iostream>
#include <string>
using namespace std;
int
подробнее...
спросили в System V
Форматированный вывод числа C#
Любую строку можно сформировать.
using System;
namespace example {
подробнее...
Форматированный вывод числа C#
Любую строку можно сформировать.
using System;
namespace example {
подробнее...
спросили в POS
Как в паскаль заменить подстроку в строке на другую подстроку
Доброго времени суток.
Для того, чтобы заменить Васю на Петю нужно три строчки программы
подробнее...
Как в паскаль заменить подстроку в строке на другую подстроку
Доброго времени суток.
Для того, чтобы заменить Васю на Петю нужно три строчки программы
подробнее...
перевести число десятичной системы в двоичную ПАСКАЛЬ
var
n,i: integer;
s:string;
begin
repeat
readln(n);
until(n >
подробнее...
спросили в Echo Night
Excel макросы
создай кнопку на странице и привяжи вот этот макрос:
Private Sub CommandButton1_Click()
Dim
подробнее...
Excel макросы
создай кнопку на странице и привяжи вот этот макрос:
Private Sub CommandButton1_Click()
Dim
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
Строковые переменные (Паскаль).Подскажите пожалуйста
var i:integer; Str:string;
begin
Writeln('Введите текст'); Readln(Str); i:=0;
подробнее...
спросили в Visual music
Эксель Можно ли строку или текст сделать мигающим?
Мерцающий текст в Excel можно получить лишь с помощью небольшой макрокоманды.
Допустим,
подробнее...
Эксель Можно ли строку или текст сделать мигающим?
Мерцающий текст в Excel можно получить лишь с помощью небольшой макрокоманды.
Допустим,
подробнее...
C++,построение множества
Просмотреть последовательность символов, и если какой-то символ является знаком препинания, то
подробнее...
спросили в Выводить
C++, вывод char в file.
Вывод в файл:
#include <fstream>
#include <iostream>
#include
подробнее...
C++, вывод char в file.
Вывод в файл:
#include <fstream>
#include <iostream>
#include
подробнее...
Нужен простейший счетчик посещений, online посетителей, с помощю MySQL. Или поскажите как написать.
function online()
{
#------Файл online.php
/* ф-я подсчитывает
подробнее...
Вопрос по Delphi. Не так легко ка может показаться!!
var
time1,time2:string;
begin
{ TODO -oUser -cConsole Main : Insert code here }
подробнее...
спросили в Otokar
Некоторые функции эксель
точно не знаю возможно ли такое, но для эксперимента можно попробовать так:
пропечатать
подробнее...
Некоторые функции эксель
точно не знаю возможно ли такое, но для эксперимента можно попробовать так:
пропечатать
подробнее...