170 похожих чатов

Ребят, как сделать так что бы замена работала? #include <iostream> #include <string> using

namespace std;
int main()
{
int n;
cin >> n;
char *s = new char[n];
for (int i = 0; i <= n; i++)
{
cin >> s[i];
if (s[i] == ".")
{
s[i] = "...";
}
}

delete []s;
return 0;

}
Нужно заменять символы точки в массиве на многоточие, и делать это именно с типом char

21 ответов

26 просмотров

а многоточие это сколько символов?

char *s = new char[n]; for (int i = 0; i <= n; i++)

Kostiantyn
?

Works flawlessly

Ну а как ты себе представляешь заменить точку на многоточие?

Kostiantyn- Автор вопроса
Gleb Pylypets
Ну а как ты себе представляешь заменить точку на м...

Ну может как-то так, но тоже не получается s[i] = '.'+'.'+'.';

Kostiantyn
Ну может как-то так, но тоже не получается ...

Смотрите, вы пришли к зубному. он вам удалил 1 зуб и на его место вставил 4.

🐈
Смотрите, вы пришли к зубному. он вам удалил 1 зуб...

Ну тут уже не 4 зуба, а один очень странный. Тут же просто по аски просуммируются коды точек

Kostiantyn
Ну может как-то так, но тоже не получается ...

попробуйте s[i]='…'; (не забудьте включить юникод)

Главный вопрос-то так и не решён: многоточие — это один символ или три точки?

Kostiantyn
Три точки

Если так сильно надо с массивом чаров, то почему просто не пройтись по исходной строке, посчитать количество точек n, выделить новый массив на size_of_initial_array + 2 * n + 1 элементов и по вполне очевидному алгоритмау не скопировать исходный массив в новый, не забывая добавлять дополнительные точки?

Kostiantyn
Три точки

Я обычно "по-питоновски" делаю, когда думать лень: // s — std::string if (s[i] == '.') { s = s.substr(0, i) + "..." + s.substr(i + 1); i += 2; }

Hvost 🦊♠️
Я обычно "по-питоновски" делаю, когда думать лень:...

Опять-таки, если не сказано, в каком именно контейнере хранить строку

Kostiantyn- Автор вопроса
Hvost 🦊♠️
Я обычно "по-питоновски" делаю, когда думать лень:...

Та в этом и проблеиа что нужно символьный массив, а не строка

Kostiantyn- Автор вопроса
Kostiantyn
char* s = new char[n];

ну есть два варианта - наперёд подсчитать, сколько там точек, чтобы понимать длину результата, либо расширять динамически как вектор.

Gleb Pylypets
ну есть два варианта - наперёд подсчитать, сколько...

Причем первый выглядит оптимальнее с точки зрения количества полезных аллокаций Ну и этот способ тут уже предложили. Дважды

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта