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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
#1

Написать функцию удаления в строке все буквы - C++

09.01.2011, 15:43. Просмотров 1285. Ответов 16
Метки нет (Все метки)

доброго времени суток. У меня такая задача:

Выполнить задание двумя способами используя индексы и используя указатели при работе со
строками не используя стандартные операции и функции для строк символов.
Вариант задания реализовать в виде функции. Если функция возвращает строку или ее
фрагмент, то это необходимо сделать через указатель. Строки динамические, размер вводится с
клавиатуры. Строки вводить с клавиатуры.
Составьте блок-схему алгоритма
Написать функцию удаления в строке все буквы ―b‖, непосредственно за которыми идет цифра.


Расскажите пожалуйста с чего мне начать и как это сделать. Обьясните пожалуйста, просто не знаю как начинать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2011, 15:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию удаления в строке все буквы (C++):

Написать функцию которая заменяет все буквы в строке на '*',а цифры оставляет как есть. - C++
Написать функцию которая заменяет все буквы в строке на '*',а цифры оставляет как есть.

Написать функцию, которая возвращает количество символов, обозначающих буквы в строке - C++
Написать функцию, которая возвращает количество символов, обозначающих буквы в строке. Заголовок функции: int letterCount (const char *s);...

Написать и протестировать функцию, которая определяет, совпадают ли в заданной строке первая и последняя буквы - C++
Написать и протестировать функцию, которая определяет, совпадают ли в заданной строке первая и последняя буквы.

Написать программу, которая удаляет в строке все буквы b в тексте, написанном латинскими буквами - C++
Помогите пожалуйста написать программу. Нужно написать программу, которая удаляет в строке все буквы b в тексте, написанном латинскими...

Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 - C++
Народ, очень требуется помощь : :wall: № 1. Написать и протестировать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы,...

В строке заменить все буквы «О» на «Ъ», а буквы «Е» – на случайные символы - C++
Дана символьная строка. Заменить в ней все буквы «О» на «Ъ», а буквы «Е» – на случайные символы. Использовать функции библиотеки string.h

16
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
09.01.2011, 17:03 #2
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
#include <iostream>
#define N 256
char* filter(char* str, int n , char ch)
{
  char* out = new char[n];
  int k=0;
  for(int i=0;i<n;i++)
    {
      if(str[i]!=ch) 
    {
      out[k]=str[i];
      k++;
    }
      str++;
    }
  out[k+1]='\0';
  return out;
}
 
int main()
{
  char str[N];
  std::cout << "Введите строку:\n";
  std::cin.getline(str,N);
  char ch;
  std::cout << "Введите удаляемый символ который:\n";
  std::cin >> ch;
  char* str_out = filter(str,N,ch);
  std::cout << str_out << std::endl;
  delete[] str_out;
  return 0;
}
1
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
09.01.2011, 18:01  [ТС] #3
Спасибо огромное за код. а почему программа работает неадекватно если там нужно удалить больше одного символа?
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
09.01.2011, 18:09 #4
Спасибо огромное за код. а почему программа работает неадекватно если там нужно удалить больше одного символа?
потомучто она для этого непредназначена. она фильтрует строку, проверяя только наличие одного символа со словом надо немного подругому делать, вы же сами сказали "удалить буквы".
0
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
09.01.2011, 18:15  [ТС] #5
ну так там написано "Написать функцию удаления в строке все буквы ―b‖, непосредственно за которыми идет цифра" а если в строке 2 буквы b а если в строке больше 1 буквы, то программа перестаёт работать. это можно как-то поправить?
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
09.01.2011, 18:43 #6
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
#include <iostream>
#define N 256
 
bool is_digit(char ch)
{
  if(ch>='0' && ch<='9') return true;
  return false;
}
 
void filter(char* str, int n , char ch)
{
  char tmp[n];
  int k=0;
  for(int i=0;i<n;i++)
    {
      if(str[i]!=ch || i==n-1 || !is_digit(str[i+1])) 
    {
      tmp[k]=str[i];
      k++;
    }
    }
  tmp[k+1]='\0';
  for(int i=0;i<k;i++) str[i]=tmp[i];
}
 
int main()
{
  char* str = new char[N];
  std::cout << "Введите строку:\n";
  std::cin.getline(str,N-1);
  std::cout << "Введите удаляемые символ который:\n"; //пробел игнорируется, предпологается, что его можно использовать как разделитель.
  char ch;
  while(std::cin.get(ch) && ch!='\n') if(ch!=' ' && ch!='\t') filter(str,N,ch);
  std::cout << str << std::endl;
  delete[] str;
  return 0;
}
Добавлено через 5 минут
ну так там написано "Написать функцию удаления в строке все буквы ―b‖, непосредственно за которыми идет цифра" а если в строке 2 буквы b а если в строке больше 1 буквы, то программа перестаёт работать. это можно как-то поправить?
если в строке две буквы б, то программа и удаляла две буквы б. программа перестает работать, только если когда вас просят ввести букву(!!!) вы вводите целое слово. и то она не перестает работать а просто считывает букву, а все следуюемое за буквой считается как строка, которую следует фильтровать. программа делает свою задачу но небольше. просто следуйте инструкциям, или вам обязательно необходимы и всевозможные проверки на соответствие типов и введенных данных?
0
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
09.01.2011, 20:43  [ТС] #7
мне больше того что в задании не нужно. главное чтоб не выгнали а ваш второй код к сожалению не работает выбивает ошибки.

ошибки

error C2057: требуется константное выражение
error C2466: невозможно выделить память для массива постоянного нулевого размера
error C2133: tmp: неизвестный размер
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
09.01.2011, 20:47 #8
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
#include <iostream>
#define N 256
 
bool is_digit(char ch)
{
  if(ch>='0' && ch<='9') return true;
  return false;
}
 
void filter(char* str, int n , char ch)
{
  char* tmp = new char[n];
  int k=0;
  for(int i=0;i<n;i++)
    {
      if(str[i]!=ch || i==n-1 || !is_digit(str[i+1])) 
        {
          tmp[k]=str[i];
          k++;
        }
    }
  tmp[k+1]='\0';
  for(int i=0;i<k;i++) str[i]=tmp[i];
  delete[] tmp;
}
 
int main()
{
  char* str = new char[N];
  std::cout << "Введите строку:\n";
  std::cin.getline(str,N-1);
  std::cout << "Введите удаляемые символ который:\n"; //пробел игнорируется, предпологается, что его можно использовать как разделитель.
  char ch;
  while(std::cin.get(ch) && ch!='\n') if(ch!=' ' && ch!='\t') filter(str,N,ch);
  std::cout << str << std::endl;
  delete[] str;
  return 0;
}
0
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
09.01.2011, 21:52  [ТС] #9
извеняюсь за свою настырность, но этот запускается, но при работе когда выбираешь удаляемую букву выбивается ошибка в самой программе.
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
09.01.2011, 22:00 #10
Цитата Сообщение от snoop11 Посмотреть сообщение
извеняюсь за свою настырность, но этот запускается, но при работе когда выбираешь удаляемую букву выбивается ошибка в самой программе.
хм, а что за ошибка я должен сам догадаться ? у меня отлично компилируется и работает
что у вас за компилятор?)
0
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
09.01.2011, 22:10  [ТС] #11
у меня тоже компилируется, но при работе самой программы вот что выдаёт: [IMG]http://s016.***********/i335/1101/30/504782d40ffct.jpg[/IMG]
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
09.01.2011, 22:17 #12
я вижу окно ошибки, но текст на нем не читаем, вы б покрупнее сделали картинку.
0
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
10.01.2011, 19:32  [ТС] #13
http://i033.***********/1101/50/260ed0f28494.jpg
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
10.01.2011, 19:46 #14
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
#include <iostream>
#define N 256
 
bool is_digit(char ch)
{
  if(ch>='0' && ch<='9') return true;
  return false;
}
 
void filter(char* str, int n , char ch)
{
  char* tmp = new char[n];
  int k=0;
  for(int i=0;i<n;i++)
    {
      if(str[i]!=ch || i==n-1 || !is_digit(str[i+1])) 
        {
          tmp[k]=str[i];
          k++;
        }
    }
  tmp[k+1]='\0';
  for(int i=0;i<k;i++) str[i]=tmp[i];
  delete[] tmp;
}
 
int main()
{
  char* str = new char[N];
  std::cout << "Введите строку:\n";
  std::cin.getline(str,N-1);
  std::cout << "Введите удаляемые символ который:\n"; //пробел игнорируется, предпологается, что его можно использовать как разделитель.
  char ch;
  while(std::cin.get(ch) && ch!='\n') if(ch!=' ' && ch!='\t') filter(str,N-1,ch);
  std::cout << str << std::endl;
  delete[] str;
  return 0;
}
0
snoop11
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 26
10.01.2011, 19:58  [ТС] #15
теперь вот так http://s002.***********/i197/1101/68/84e5516169f7.jpg
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 19:58
Привет! Вот еще темы с ответами:

Написать функцию удаления элемента из списка - C++
Надо написать функцию Void del (int value) , которая удаляет элемент в списке и Elem *searth (int value) , что в списке ищет первый элемент...

Написать функцию удаления из текста заданного символа - C++
Написать функцию удаления из текста заданного символа. Текст вводится с клавиатуры в динамический массив, указатель на который передается...

1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э - C++
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с...

Написать функцию удаления из заданного массива отрицательных элементов - C++
Написать функцию удаления из заданного массива отрицательных элементов, использовать ее для массива целых и вещественных чисел.


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
10.01.2011, 19:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru