Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Csacsa
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
12.01.2013, 22:50     Удалить в строке символ "а" (найти ошибку) #1
строку вводим с клавиатуры, удалить в строке символ "а".
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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 22:50     Удалить в строке символ "а" (найти ошибку)
Посмотрите здесь:

C++ Сколько раз среди данных символов встречается символ "+" и символ "*"
C++ Определить первое вхождение символа "d" в строке и вывести слово, в котором оказался этот символ.
C++ В заданном тексте удалить символ "," и подсчитать число удаленных символов
C++ Преобразовать строку, вырезав каждый символ "*" и повторив каждый символ, отличный символ "*"
C++ В заданной строке подсчитать сколько раз встречается символ "*" и сколько раз символ "+"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
12.01.2013, 23:00     Удалить в строке символ "а" (найти ошибку) #2
11 строчка переменная и=пустая
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
12.01.2013, 23:03     Удалить в строке символ "а" (найти ошибку) #3
Цитата Сообщение от Саня gamer Посмотреть сообщение
11 строчка переменная и=пустая
в 11 строке нету переменной и, есть переменная i и она не пустая а заполнена мусором
для ТС a,b = c неэквивалентно a = c , b = c
Саня gamer
96 / 70 / 1
Регистрация: 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;
Csacsa
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
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
12.01.2013, 23:45     Удалить в строке символ "а" (найти ошибку) #6
да и не забудьте что если вы пишите i+1 то цикл идет до max-1
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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;
}
Csacsa
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 00:13  [ТС]     Удалить в строке символ "а" (найти ошибку) #8
Цитата Сообщение от Nixy Посмотреть сообщение
да и не забудьте что если вы пишите i+1 то цикл идет до max-1
а в else что=то нужно добавить ?
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
13.01.2013, 00:14     Удалить в строке символ "а" (найти ошибку) #9
ну а иначе остается как было
Csacsa
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 00:27  [ТС]     Удалить в строке символ "а" (найти ошибку) #10
Цитата Сообщение от Nixy Посмотреть сообщение
ну а иначе остается как было
а что именно нужно дописать?
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 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];
        }
вот такое было условие
Csacsa
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", то как писать ?
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
13.01.2013, 01:34     Удалить в строке символ "а" (найти ошибку) #13
ab -это две буквы подряд или удалять и а и б?
Csacsa
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 01:37  [ТС]     Удалить в строке символ "а" (найти ошибку) #14
Цитата Сообщение от Саня gamer Посмотреть сообщение
ab -это две буквы подряд или удалять и а и б?
две подряд.
C++
1
s[i]=='a' && s[i+1]=='b'
Саня gamer
96 / 70 / 1
Регистрация: 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 минут
или а не нада удалять, а удалять только аб?
Csacsa
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 40
13.01.2013, 01:55  [ТС]     Удалить в строке символ "а" (найти ошибку) #16
только ab
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 02:06     Удалить в строке символ "а" (найти ошибку)
Еще ссылки по теме:

Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" C++
Не могу понять ошибку "C2043: недопустимый break". Задача: найти подстроку в строке C++
Не могу убрать ошибку: "error LNK2001: неразрешенный внешний символ" C++

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

Или воспользуйтесь поиском по форуму:
Саня gamer
96 / 70 / 1
Регистрация: 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;
}
Yandex
Объявления
13.01.2013, 02:06     Удалить в строке символ "а" (найти ошибку)
Ответ Создать тему
Опции темы

Текущее время: 07:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru