Вставить в строку пробелы с конца
Суть в том, что надо вставить пробелы в массив типа char с конца через каждые 3 символа, чтобы введя 1234567890, на выходе получалось 1 234 567 890. Я смог только обратится к концу массива, однако как вставить пробелы я без понятия. Буду благодарен за любую помощь
int main() < setlocale(0, ""); srand(time(0)); const int size = 80; char num[size]; cout system("pause"); return 0; >
Отслеживать
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков
задан 15 дек 2020 в 6:47
bruhmomentum bruhmomentum
59 1 1 серебряный знак 9 9 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вот пример кода с комментариями:
int real_size = strlen(num); //Количество отступов int count = real_size / 3 + (bool)(real_size % 3) - 1; //Обрезаем нашу новую строку num[real_size + count] = '\0'; //Проходим по всем тройкам с конца, кроме первой for (int i = real_size - 1; i >= 3; i -= 3) < //Можно без цикла просто перенести три символа назад на count позиций for (int j = 0; j
Объясню идею через пример.
Есть строка 1234567 у нее count = 2 т.к. в итоге получим 2 пробела. И первую с конца тройку мы сместим сначала на 2 позиции. Т.к. мы знаем что будет еще одна тройка, которую мы уже сместим на 1 позицию. Получается каждую следующую тройку мы будем смещать на 1 позицию меньше, чем предыдущую. Надеюсь понятно объяснил.
Ввод строки char с пробелами

Всем доброго дня.
Подскажите плз, У меня есть указатель char *str как ввести в него строку с пробелами которую ввел пользователь. Класс стринг нельзя использовать и его функции.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Ввод строки с пробелами в поле char
Это часть файла header.h; В программе в поле Name нужно ввести ФИО с пробелами, но программа выдает.
Ввод строки с пробелами
Всё, сдаюсь. Ребят, подскажите, пожалуйста, как строку с пробелами считать int main ()
Ввод строки с пробелами
нижеприведенный код получает строку до первого пробела, а нужно получать с учетом всех символов.

Ввод строки с пробелами
Я искал насчет этого в поиске и прочитал про get gets getline fgets, так и не понял. Кто то может.
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
1 2 3
int size = 256; char* str = new char[size]; cin.getline(str, size);
Регистрация: 26.03.2012
Сообщений: 22
а если нужно больше чем 256 символов?как обойтись без ввода количества символов?
2657 / 2232 / 240
Регистрация: 03.07.2012
Сообщений: 8,131
Записей в блоге: 1
Задай size 10000 (или 100000)
Регистрация: 26.03.2012
Сообщений: 22
дело состоит в том что нужно сделать без єтого и там еще задача с мин использованием памяти и проц
2657 / 2232 / 240
Регистрация: 03.07.2012
Сообщений: 8,131
Записей в блоге: 1
Никаких доп. требований в первом сообщений я не вижу.
Регистрация: 08.09.2014
Сообщений: 88
Подскажите по теме.
Этот "new" что за штука?
Я понял, что благодаря ему можно:
1) задавать массив переменного размера
2) если я использую эту конструкцию в функции и возвращу указатель, то содержимое сохранится.
пробовал сделать без "new" - не получилось. Правильно понимаю?
7699 / 6495 / 2955
Регистрация: 14.04.2014
Сообщений: 28,310
Память динамически выделяется. Что значит переменного? Ты размер указываешь один раз при вызове, после его изменить нельзя, только создать массив другого размера и перенести из первого нужные данные.
Конкретно в этом примере можно обойтись обычным массивом. Консоль Windows, например, больше 4096 символов не позволяет ввести за 1 раз.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Ввод строки с пробелами
Собственно вот текст, не хочет никакими функциями принимать строку stud.fio с пробелами, испробовал.
Ввод строки с пробелами
Знающие, помогите решить такую проблему. Надо составить маленькую программку, представление.

Ввод строки с пробелами
Мне необходимо ввести несколько слов в строку, использую getline, но в консоле когда в меню.
Ввод строки с пробелами
Нужна помощь!Как сделать так,чтобы после нажатия на пробел программа не заканчивала ввод в строку,а.
Или воспользуйтесь поиском по форуму:
Как в C++ ввести строу char[], содержащую пробелы?
Может кто подскажет:
Как в C++ ввести строу char[], содержащую пробелы?
#1
19:41, 26 окт 2007
#2
19:49, 26 окт 2007
#3
19:49, 26 окт 2007
уточни, что ты хочешь?
ввести строку с клавиатуры или создать строку?
#4
19:59, 26 окт 2007
Хочу, чтобы было аналогично следующему:
//.
char str[MAX_LENGTH];
//.
cin >> str;
cout Но так, что если введена строка "asd asdfs a aewt wet dsg asd", то она и должна быть выведена, а не "asd".
Как ввести в cin строки с пробелами в С++
По умолчанию cin (стандартный ввод) в С++ считывает данные до первого пробела. Рассмотрим способы, с помощью которых мы можем передать через стандартный ввод строку, содержащую один или нескольких пробелов, чтобы эта строка могла быть присвоена в качестве значения переменной в программе.
cin по умолчанию пропускает все белые пробелы (пробелы, табуляции, новые строки и т. д.). Вы можете либо изменить его поведение, либо использовать немного другой механизм.
Рассмотрим небольшую программу, которая просит пользователя ввести имя и после этого сразу же отображает введённую строку на экране. Приведённый код работает так, как ожидается, если вводимые данные не содержат пробелов:
#include using namespace std; int main() < string line; cout > line; cout
Для запуска этого кода сохраните его в файл test.cpp и скомпилируйте:
g++ test.cpp
Запуск скомпилированного файла:
./a.out
Попробуем ввести строку с пробелами:
Как можно увидеть, из введённой строки «Алексей Милосердов», сохранилось только часть до пробела, то есть «Алексей».
Чтение строки с getline
getline читает символы из входного потока и помещает их в строку — именно это нам и нужно. getline (как и использование строки), требует указать заголовок #include . Отредактируем наш код:
#include #include using namespace std; int main()
Как можно убедиться, теперь строка считалась полностью, вместе с пробелами.
Изменение поведения cin с помощью noskipws
Как мы уже выяснили, по умолчанию cin пропускает все белые пробелы (пробелы, табуляции, новые строки и т. д.). Чтобы изменить его поведение, используйте манипулятор noskipws следующим образом:
cin >> noskipws >> line;
noskipws включает пропуск начальных пробелов с помощью форматированных функций ввода (по умолчанию включено). Не влияет на вывод.
То есть noskipws не поможет нам передать через стандартный ввод строки, содержащие в себе пробелы, кроме тех случаев, когда пробелы стоят в начале строки.
Чтобы стало понятнее, рассмотрим следующий код:
#include #include using namespace std; int main() < char c1, c2, c3; istringstream("a b c") >> c1 >> c2 >> c3; cout > noskipws >> c1 >> c2 >> c3; cout
В результате работы этого кода будет выведено:
Поведение по умолчанию: c1 = a c2 = b c3 = c Поведение с noskipws: c1 = a c2 = c3 = b
Смотрите также онлайн учебник «Основы С++».