Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
1

Удалить в строке символ "а" (найти ошибку)

12.01.2013, 22:50. Показов 873. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
строку вводим с клавиатуры, удалить в строке символ "а".
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
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    char s[100], s2[100]=" ";
    cout<<"Vvedite stroku: ";
    cin>>s;
    int d=strlen(s);
    for (int i, j=0; i<d; i++, j++)
    {
        if (s[i]=='a')
        {
                i++; 
        }
        
                else 
        { 
            s2[j]=s[i];
            j++;
        
        }
    }
    cout<< s2 <<endl;
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2013, 22:50
Ответы с готовыми решениями:

Найти пробел в строке и удалить следующий за ним символ
Найти пробел в строке и удалить следующий за ним символ

Найти пробел в строке и удалить следующий за ним символ
Помогите, пожалуйста. Как в делфи найти пробел в строке и удалить следующий за ним символ.

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

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

16
97 / 71 / 5
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
12.01.2013, 23:00 2
11 строчка переменная и=пустая
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
12.01.2013, 23:03 3
Цитата Сообщение от Саня gamer Посмотреть сообщение
11 строчка переменная и=пустая
в 11 строке нету переменной и, есть переменная i и она не пустая а заполнена мусором
для ТС a,b = c неэквивалентно a = c , b = c
0
97 / 71 / 5
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
12.01.2013, 23:19 4
Вроде работает
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
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    char s[100], s2[100]=" ";
    cout<<"Vvedite stroku: ";
    cin>>s;
    int d=strlen(s);
    for (int i=0, j=0; i<d; i++, j++)
    {
        if (s[i]=='a')
        {
               --j;
        }
 
                else
        {
            s2[j]=s[i];
        }
    }
    cout<< s2 <<endl;
    //system("pause");
    return 0;
1
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
12.01.2013, 23:40  [ТС] 5
а если нам например, нужно удалить не один символ
C++
1
if (s[i]=='a'  && s[i+1]=='b')
то что тогда делать писать
C++
1
j-=2
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
12.01.2013, 23:45 6
да и не забудьте что если вы пишите i+1 то цикл идет до max-1
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
12.01.2013, 23:51 7
Csacsa, строка не всегда состоит из одного слова. cin же учтет символы до первого пробела. Здесь нужен getline().
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstring>
int main()
{
     char str[100];
     std::cin.getline(str,99);
     for (int i=0; str[i]; i++)
          if (str[i]=='a')
              for (int j=i; j<=strlen(str); j++)
                    str[j]=str[j+1];
     std::cout<<str<<'\n';
     return 0;
}
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 00:13  [ТС] 8
Цитата Сообщение от Nixy Посмотреть сообщение
да и не забудьте что если вы пишите i+1 то цикл идет до max-1
а в else что=то нужно добавить ?
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
13.01.2013, 00:14 9
ну а иначе остается как было
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 00:27  [ТС] 10
Цитата Сообщение от Nixy Посмотреть сообщение
ну а иначе остается как было
а что именно нужно дописать?
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
13.01.2013, 01:16 11
C++
1
2
3
4
5
6
7
8
9
if (s[i]=='a')
        {
               --j;
        }
 
                else
        {
            s2[j]=s[i];
        }
вот такое было условие
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 01:24  [ТС] 12
Цитата Сообщение от Nixy Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
if (s[i]=='a')
        {
               --j;
        }
 
                else
        {
            s2[j]=s[i];
        }
вот такое было условие
это я поняла всё отлично работает, но если нужно удалить "ab", то как писать ?
0
97 / 71 / 5
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
13.01.2013, 01:34 13
ab -это две буквы подряд или удалять и а и б?
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 01:37  [ТС] 14
Цитата Сообщение от Саня gamer Посмотреть сообщение
ab -это две буквы подряд или удалять и а и б?
две подряд.
C++
1
s[i]=='a' && s[i+1]=='b'
0
97 / 71 / 5
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
13.01.2013, 01:50 15
гдето так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i=0, j=0; i<d; i++, j++)
    {
        if (s[i]=='a' && s[i+1]=='b')
        {
            j-=2;
        }
        if (s[i]=='a')
        {
               --j;
        }
 
                else
        {
            s2[j]=s[i];
        }
}
Добавлено через 9 минут
или а не нада удалять, а удалять только аб?
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 01:55  [ТС] 16
только ab
0
97 / 71 / 5
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
13.01.2013, 02:06 17
оно?
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
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    char s[100], s2[100]=" ";
    cout<<"Vvedite stroku: ";
    cin>>s;
    int d=strlen(s);
    for (int i=0, j=0; i<d; i++, j++)
    {
        if (s[i]=='a' && s[i+1]=='b')
        {
            j-=2;
        }
                else
        {
            s2[j]=s[i];
        }
    }
    cout<< s2 <<endl;
    //system("pause");
    return 0;
}
0
13.01.2013, 02:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2013, 02:06
Помогаю со студенческими работами здесь

Удалить слова и символ пробела, встречающиеся подряд более, чем один раз. Не могу найти ошибку
Вот задание: Повтор слов. В текстовое поле пользователь вводит строку, состоящую из слов,...

Строка: Как удалить начальный символ в строке и добавить тот же символ (который удалили) в конец строки?
Как удалить начальный символ в строке и добавить тот же символ (который удалили) в конец строки? ...

Из строк, которые содержат символ '1' или '2', удалить первый встречающийся в строке символ, равный латинской букве 'a'
Дана матрица размером 4×3, элементами которой являются строки. Необходимо в системе Турбо-Паскаль...

В строке заменить символ 'a' на 'A' и удалить символ 'b'
Приведённый ниже код удаляет из ведённой с клавиатуры строки пробелы, все строчные символы &quot;а&quot;...

В заданной строке удалить последний символ пробел, который найдется в строке
Здравствуйте, можете помочь с методом удаления последнего пробела в строке?

В заданной строке удалить первый символ «», который найдется в строке
В заданной строке удалить первый символ «», который найдется в строке. На языке питон


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru