Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 19

Переписать код js на С++: разбить введённую текст на слова, а затем добавить к каждому слову заданные символы

03.07.2018, 15:57. Показов 2135. Ответов 8

Студворк — интернет-сервис помощи студентам
Есть вот такой код, в него пользователь вводит большой массив слов, код вырезает из них лишь 30, добавляет символ "@" в начале каждого слова и потом выводит каждое из 30-ти слов с новой строки. Помогите переписать его на языке С++
JavaScript
1
2
3
4
5
6
7
8
9
10
11
var names = prompt();
while(names.length>0){
    arr=names.split(" ");
    var out=" ";
    for(var i=0; i<Math.max(30,arr.length);i++){
        out+="@"+arr[i]+"\n";
    }
    alert(out);
    confirm(out);
    names=names.substring(out.length-Math.max(30,arr.length));
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.07.2018, 15:57
Ответы с готовыми решениями:

Поток string (получить доступ к каждому слову строки и к каждому символу каждого слова для сортировки)
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; using namespace std; int main() { setlocale (LC_CTYPE,...

К каждому слову добавить невидимое окончание
Всем доброго времени суток! Необходимо к каждому слову в тексте (word) добавить оканчание (например &quot;kot&quot;), и это окончание...

Добавить к каждому найденному во введенной фразе слову символ
Надо написать программу, которая добавляет к каждому найденному во введенной фразе слову символ «а». Удалите все лишние пробелы между...

8
458 / 294 / 191
Регистрация: 23.06.2018
Сообщений: 678
03.07.2018, 17:16
Цитата Сообщение от 1Sunnygirl Посмотреть сообщение
вырезает из них лишь 30
Всё хорошо, только ваш код вырезает минимум 30 слов и выводит их, даже если их нет. А так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    string words, word;
    getline(cin, words);
    istringstream stream(words);
    for (int i = 0; i < 30 && (stream >> word); i++)
        cout << "@" << word << endl;
}
0
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 19
03.07.2018, 17:36  [ТС]
У меня почему-то выводит одно лишь слово с добавлением "@", вместо 30

Добавлено через 7 минут
Можно учесть такой момент, что я ввожу слова не просто через пробел, а с переносом строки?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.07.2018, 17:48
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
26
27
28
29
30
31
32
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <sstream>
 
std::vector<std::string> split(const std::string& s, char delimiter)
{   // Thanks to Jonathan Boccara for this function
    std::vector<std::string> tokens;
    std::string token;
    std::istringstream tokenStream(s);
 
    while (std::getline(tokenStream, token, delimiter))
        tokens.push_back(token);
 
    return tokens;
}
 
int main()
{
    std::string names;
    getline(std::cin, names);
 
    const size_t NUMBER_OF_WORDS = 30;
    std::string out;
    auto words = split(names,' ');
 
    for(size_t i = 0, limit = std::min(NUMBER_OF_WORDS, words.size()); i < limit; i++)
        out.append("@").append(words[i]).append("\n");
 
    std::cout << out;
}
Миниатюры
Переписать код js на С++: разбить введённую текст на слова, а затем добавить к каждому слову заданные символы  
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.07.2018, 17:52
Цитата Сообщение от 1Sunnygirl Посмотреть сообщение
Можно учесть такой момент, что я ввожу слова не просто через пробел, а с переносом строки?
Можно. Замените эту строку:
C++
27
    auto words = split(names,' '); // в качестве разделителя - пробел
на эту:
C++
27
    auto words = split(names,'\n'); // в качестве разделителя - символ новой строки
0
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 19
03.07.2018, 17:55  [ТС]
А как можно сделать, чтоб программа считывала на вводе слова через разделитель - перенос строки?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.07.2018, 18:09
Цитата Сообщение от 1Sunnygirl Посмотреть сообщение
А как можно сделать, чтоб программа считывала на вводе слова через разделитель - перенос строки?
Уже написал. 27-ю строку кода замените.

Добавлено через 2 минуты
1Sunnygirl, хотя не... Сейчас подумаю.

Добавлено через 5 минут
1Sunnygirl, давайте представим себе, для наглядности, процесс.

Вот вы вводите слово Ann. Жмёте Enter.
Затем вводите слово Andy. Жмёте Enter.
Вводите слово Bob. Жмёте Enter.
Вводите слово Sam. Жмёте Enter.
Вводите слово Ken. Жмёте Enter.
Вводите слово Mike. Жмёте Enter.
Вводите слово Phil. Жмёте Enter.
Вводите слово Rick. Жмёте Enter.

Как программе понять, что вы больше не хотите вводить слова?

Добавлено через 4 минуты
В предыдущем варианте Вы вводили слова через пробел. В качестве разделителя (delimiter) у нас был символ пробела. А когда Вы нажимали Enter, программа понимала, что ввод строки names завершён.
Теперь же у нас в качестве разделителя выступает символ новой строки - тот самый, который Вы вставляете теперь в строку нажатием клавиши Enter (символ \n). Как дать понять программе, что ввод строки завершён? Можно сделать ввод в цикле, пока пользователь не введёт контрольное слово, скажем Exit или Quit. Так пойдёт?
0
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 19
03.07.2018, 18:20  [ТС]
Да, контрольное слово тоже подойдет!
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.07.2018, 18:24
Лучший ответ Сообщение было отмечено 1Sunnygirl как решение

Решение

1Sunnygirl, давайте так. В строку names вводим имена, разделяя их символом новой строки. Когда ввод завершён, ставим точку и жмём Enter.
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
26
27
28
29
30
31
32
33
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <sstream>
 
// Thanks to Jonathan Boccara for this function
std::vector<std::string> split(const std::string& s, char delimiter)
{
   std::vector<std::string> tokens;
   std::string token;
   std::istringstream tokenStream(s);
 
   while (std::getline(tokenStream, token, delimiter))
      tokens.push_back(token);
 
   return tokens;
}
 
int main()
{
    std::string names;
    getline(std::cin, names, '.'); // вместо точки можно выбрать любой другой символ
 
    const size_t NUMBER_OF_WORDS = 30;
    std::string out;
    auto words = split(names,'\n');
 
    for(size_t i = 0, limit = std::min(NUMBER_OF_WORDS, words.size()); i < limit; i++)
        out.append("@").append(words[i]).append("\n");
 
    std::cout << out;
}
Миниатюры
Переписать код js на С++: разбить введённую текст на слова, а затем добавить к каждому слову заданные символы  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2018, 18:24
Помогаю со студенческими работами здесь

Разбить строку, введённую в первую ячейку первого столбца активного листа, на слова
Задали следующее задание: 1я часть: Разбить строку, введённую в первую ячейку первого столбца активного листа, на слова, и вывести их в...

Разбить строку, введённую в первую ячейку первого столбца активного листа, на слова
Помогите-помогите! Пожалуйста.... Нужно разбить строку, введённую в первую ячейку первого столбца активного листа, на слова, и вывести их в...

Разбить строку, введённую в первую ячейку первого столбца активного листа, на слова
Общая часть задания Разбить строку, введённую в первую ячейку первого столбца активного листа, на слова, и вывести их в ячейки первого...

Разделить предложение на слова и каждому слову присвоить порядковое число
как разделить предложение на слова и каждому слову присвоить порядковое число а затем по тому числу слово забрать?

Добавить к слову x те буквы слова y, что используется при написании слова x
Составьте программу, присваивающую к слову x те буквы слова y, что используется при написании слова x.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru