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

Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S

10.04.2018, 18:45. Показов 4705. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят , можете обьяснить эту задачу . Как-то туго понимаю . Пожалуйста . Не судите строго)))
Напишите комментарии к строкам


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
34
35
36
#include <iostream>  //для ввода/вывода
#include <conio.h>   //для _getch()
#include <Windows.h> //для изменения кодировки
#include <string>    //для класса string
using namespace std;
 
int main()
{
   SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char c[2];
    unsigned int i = 0, j = 0;
    cout << "Введите символ:" << endl;
    cin.getline(c,2);
    int buf = 80;
    char s[buf];
    char s_buf[buf * 2];
    cout << "Введите строку:" << endl;
    cin.getline(s, buf);
    while (i < strlen(s))
        {
           if (s[i] != c[0])
        {
            strcpy(&s_buf[j], &s[i]);
        }
           else
            {
            strcpy(&s_buf[j], &c[0]);
            ++j;
            strcpy(&s_buf[j], &c[0]);
        }
        ++i; ++j;
    }
    cout << s_buf << endl;
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2018, 18:45
Ответы с готовыми решениями:

Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S
Обработка символьных массивов с помощью указателей: Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S Для...

Дан символ и строка, удвоить каждое вхождение символов в строку
Дан символ и строка, удвоить каждое вхождение символов в строку! кто может помочь?) помогите пожалуйста!

Дан символ и строка, удвоить каждое вхождение символов в строку!!!!
помогите реализовать данную прогу на СИ)

12
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.04.2018, 18:52
Лучший ответ Сообщение было отмечено Kostik17 как решение

Решение

Kostik17, на первый взгляд показалось что в коде выход за границы массива есть
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
34
35
36
#include <iostream>
#include <cstring>
 
 
void insert(char* buffer, unsigned pos, char c)// Функция принимает строку, номер позиции и символ
{
    for(unsigned i = strlen(buffer) + 1; i > pos; --i)// Обходит строку с конца до номера позиции из параметров
        buffer[i] = buffer[i - 1]; // Отодвигает все символы на одну позицию вправо начиная с позиции из пораметров
    buffer[pos] = c;// Вставляет символ из параметров в освободившееся место
}
 
int main()
{
    std::cout << "input line: ";// Вывод строки в поток
 
    const int BUF_SIZE = 256;//константа с размером будущей строки
    char* buffer = new char[BUF_SIZE];//резервируте память в куче
 
    std::cin.getline(buffer, BUF_SIZE);//запрос на ввод строки
 
    std::cout << "input character: ";
    char c;//символ для замены
    std::cin >> c;//запись символа из потока
 
    for(unsigned i = 0; i < strlen(buffer); ++i)//обход строки
        if(c == buffer[i])//если нашел символ
        {
            insert(buffer, i, c);//вызывает функцию вставки символа
            ++i;//отодвигает индекс на одну позицию вправо так как символ вставили
        }
 
    std::cout << buffer << std::endl;//выводит результат
 
    delete[] buffer;//освобождает памят в куче
    return 0;//возвращает результат успешного окончания
}
1
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 23
10.04.2018, 18:55  [ТС]
_stanislav, А можно узнать чего оно не выполняет условие ?? Не умножает на 2 . Как в первом решении задачи ?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.04.2018, 19:01
Kostik17, поменяй в 15 строке на это
C++
1
const int buf = 80;
Добавлено через 37 секунд
Kostik17, когда успел код в вопросе поменять
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 23
10.04.2018, 19:05  [ТС]
_stanislav, Та я нашёл рабочую . А эту решил удалить пока не поздно . Но не успел
Сменил на 80 . Не дало результата
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.04.2018, 19:11
Kostik17, const добавь
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 23
10.04.2018, 19:18  [ТС]
_stanislav, Можете сделать комментарий к
Если не сложно
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
34
35
36
#include <iostream>  //для ввода/вывода
#include <conio.h>   //для _getch()
#include <Windows.h> //для изменения кодировки
#include <string>    //для класса string
using namespace std;
 
int main()
{
   SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char c[2];
    unsigned int i = 0, j = 0;
    cout << "Введите символ:" << endl;
    cin.getline(c,2);
    int buf = 80;
    char s[buf];
    char s_buf[buf * 2];
    cout << "Введите строку:" << endl;
    cin.getline(s, buf);
    while (i < strlen(s))
        {
           if (s[i] != c[0])
        {
            strcpy(&s_buf[j], &s[i]);
        }
           else
            {
            strcpy(&s_buf[j], &c[0]);
            ++j;
            strcpy(&s_buf[j], &c[0]);
        }
        ++i; ++j;
    }
    cout << s_buf << endl;
    return 0;
}
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.04.2018, 19:32
Цитата Сообщение от Kostik17 Посмотреть сообщение
Можете сделать комментарий к
Если не сложно
переделай код который я прокомментировал, там с размером буфера надо вроде как разобраться а так нормально.
поменяй вот эту строчку
C++
1
std::cin.getline(buffer, BUF_SIZE);
на эту
C++
1
std::cin.getline(buffer, BUF_SIZE / 2 - 1);
Добавлено через 8 минут
так как в строке могут быть все символы С
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 23
10.04.2018, 19:32  [ТС]
_stanislav, Неа . Оно кидает символ 2 раза . А строку забывает . Допустим 5 символ , а строка 555. Кидает просто 55
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.04.2018, 19:39
Цитата Сообщение от Kostik17 Посмотреть сообщение
Оно кидает символ 2 раза . А строку забывает . Допустим 5 символ , а строка 555. Кидает просто 55
вот мой вывод
Миниатюры
Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S  
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.04.2018, 19:43
Лучший ответ Сообщение было отмечено Kostik17 как решение

Решение

Kostik17,
C++
1
std::cin.getline(buffer, BUF_SIZE / 2);
-1 не надо
1
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 23
10.04.2018, 19:54  [ТС]
_stanislav, До меня дошло . Спасибо )
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.04.2018, 22:14
как вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
int main()
{    
    string s;
    cout << "String:\n";
    getline(cin, s);    
    for (size_t i = 0; i < s.size(); i++) 
    if (s[i] == 'C') { s.insert(i, 1, 'C'); i++; }     
    cout <<s<<"\n";
system("pause");
return 0;
}
для латиницы
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2018, 22:14
Помогаю со студенческими работами здесь

Удвоить каждое вхождение символа C в строку S
Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S. Помогите плиз написать программу с помощью функций.

Удвоить каждое вхождение символа С в строку S
Дана строка S и символ С. Удвоить каждое вхождение символа С в строку S.

Удвоить каждое вхождение символа в строке
Дана строка s и c символ . Удвойте каждое вхождение символа c в строке s подскажите пожалуйста как решить. Добавлено через 10 минут ...

Удвоить каждое вхождение элемента в строку
Задача: Дан символ C и строка S. Удвоить каждое вхождение символа C в строку S Как удвоить вхождение элемента?Есть что-нибудь похожее на...

Дан символ С и строка S. Подсчитать количество вхождений символа C в строку S
ребята выручайте плиззз


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru