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

Описать в виде отдельной функции удаление заданного символа в заданной строке

26.08.2018, 19:11. Показов 1680. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста. У меня есть задание: "Даны две строки длиной до 80 символов. Необходимо удалить заданный символ в каждой строке. Описать в виде отдельной функции удаление заданного символа в заданной строке". Работала на VS 2017, windows 7, если это важно. код написала, но после вывода на экран надписи "Выберите символ, который хотите удалить:" и последующего ввода символа он автоматически завершается. У меня самой пока слишком мало опыта, чтобы увидеть, в чём ошибка. Подскажите, пожалуйста.
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
37
38
39
40
#include "stdafx.h"
#include<iostream>
#include<windows.h>
using namespace std;
 
void func(char m, char z[])
{
    string s;
    s.erase(m, 1);
    cout << "s";
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int i;
    char a, o;
    char str1[81], str2[81];
    cout << "Введите две строки символов:\n";
    gets_s(str1);
    gets_s(str2);
    cout << "Выберите строку, в которой нужно удалить символы: ";
    cin >> i;
    if (i == '1')
    {
        cout << "Выберите символ, который хотите удалить: ";
        cin >> a;
        func(a, str1);
    }
    else
        if (i == '2')
        {
            cout << "Выберите символ, который хотите удалить: ";
            cin >> o;
            func(o, str2);
        }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2018, 19:11
Ответы с готовыми решениями:

Описать в виде отдельной функции определение минимального элемента в заданной части массива
Ребята выручайте! 4.Дан числовой массив X. Определить min (X, X, … , X) + min (X, X, … , X) Описать в виде отдельной функции...

Описать в виде отдельной функции определение для заданного массива суммы элементов с четными индексами
Здраствуйте, помогите решить задание. Даны два массива из n целых чисел (n =&lt; 10). Для каждого массива определить сумму элементов с четными...

Подсчитать в заданной строке количество повторений заданного символа
Разработать библиотечный модуль, содержащий следующие подпрограммы (процедуры или функции) для работы со строками: А. Подсчитать в...

5
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
26.08.2018, 19:24
Во-первых в 25й строке не нужны одинарный кавычки, так как вы используете int переменную, а не char.

Во-вторых в 8й строке вы создали строку s, но не инициализировали ее значением.

В-третьих вы неправильно удаляете символ в строке 9. string::erase работает по другому.

Ну, и самое главное, в-четвертых, зачем вы смешиваете char* (старый стиль) и string (новый стиль)? Определитесь с чем будете работать и не "прыгайте" из одного стиля в другой.
1
Злостный нарушитель
 Аватар для Verevkin
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,265
26.08.2018, 20:04
Не пойму: надо удалять символ по индексу или по значению?
0
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
26.08.2018, 20:29
AlayaRomashka,
Свести к минимуму использование массивов символов и строк в стиле C, заменив их на типы string и vector из STL (c) Бьёрн Страуструп
- моё любимое.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.08.2018, 23:19
Лучший ответ Сообщение было отмечено AlayaRomashka как решение

Решение

AlayaRomashka, скорее всего по заданию нужно создать свою функцию, а не использовать готовую функцию
erase. как вариант (для латиницы):
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
37
38
39
40
41
#include <iostream>
#include <string>
using namespace std;
 
char* Newstr (char *str, char a)
{      
    int i=0, j=0;
    while(str[i])
    {
          if(str[i]==a)
            {
              j=i;    
              while(str[j])  
              {
              str[j]=str[j+1];
              j++;
              }
              i--;
            }
           i++;
    }
    return str;
}
 
int main()
{
    char str1[81];
    cout << "String 1:\n";
    cin.getline(str1, 81);
    char str2[81];
    cout << "String 2:\n";
    cin.getline(str2, 81);
    char a;
    cout << "Erase symbol:\n";
    cin >>a;
    
    cout <<Newstr(str1, a)<<endl;
    cout <<Newstr(str2, a)<<endl;
system("pause");
return 0;
}
возможно что в каждой строке нужно удалить свой символ (например в первой строке - символ q,
во второй символ s) - тогда внесите небольшие изменения в код.
1
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
27.08.2018, 12:46  [ТС]
Yetty, спасибо)) Здесь именно то, что надо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2018, 12:46
Помогаю со студенческими работами здесь

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

Поиск в заданной строке последнего вхождения заданного символа
Помогите написать функцию, которая ищет в заданной строке последнее вхождение заданного символа (char *strrchr(const char *s1, int c)

Удаление повторяющегося символа в строке с заданной периодичностью
Товарищи, ХЕЛП :help: В общем, само задание звучит так: Составить программу удаления из заданного текстового файла произвольной длины...

В заданной строке найти все слова, начинающиеся с заданного символа
В заданной строке найти все слова, начинающиеся с заданного символа Если можно, то с объяснениями

В заданной строке определить максимальную длину подстроки, состоящей из заданного символа
В заданной строке определить максимальную длину подстроки, состоящей из заданного символа.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru