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

Строки и функции - C++

Восстановить пароль Регистрация
 
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
04.12.2013, 15:45     Строки и функции #1
Привет... Помогите решить, пожалуйста.
Задание такое:
Распечатать введенную строку, исключив из нее те символы, которые находятся между скобками ( ). Сами скобки не удалять . Если хотя бы одной скобки нет – сообщить об этом
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 15:45     Строки и функции
Посмотрите здесь:

Возврат строки из функции C++
C++ Функции и строки
Строки и функции C++
C++ Строки. Функции
Строки и функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,196
Завершенные тесты: 1
04.12.2013, 16:21     Строки и функции #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
char str1[256],str2[256];
cin.getline(str1,255);
int k=0;
bool inside=false;// признак нахождения внутри скобок
bool present=false; // Признак присутствия скобок
for(int i=0;i<strlen(str1);i++)
{
     if(inside)
    { 
         if(str1[i]==')' )
         {
            inside=false;
            str2[k++]=str1[i];
         }
     }else
        if(str1[i]=='(')
        {
           inside=true;
           present=true;
           str2[k++]=str1[i];
      }else
       {
            str2[k++]=str1[i];
       }
}
str2[k]=0;
cout<<str2<<endl;
if(!present)
    cout<<"Скобок не было";
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
04.12.2013, 16:27     Строки и функции #3
как то так

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
#include <iostream> 
#include <string>
 
int main()
{
 std::string inputStr, result;
 std::cout << "Input string : "; getline(std::cin, inputStr);
 
 char left = '(', right = ')';
 int idxLeft = -1, idxRight = -1;
 
 idxLeft = inputStr.find(left);
 idxRight = inputStr.find(right);
 
 if(idxLeft == -1 || idxRight == -1)
   {  
      std::cout << "Incorrect string" << std::endl; 
      system("PAUSE");
      return 1;
   } 
 
 for(int i = 0; i < inputStr.size(); ++i)
     if(i <= idxLeft || i >= idxRight)
         result += inputStr[i];
         
 std::cout << result << std::endl; 
    
  system("PAUSE");
    
  return 0;
}
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
04.12.2013, 18:14  [ТС]     Строки и функции #4
А как сделать с помощью функции?

Добавлено через 18 минут
А можно объяснить какая строка что означает, выполняет в первой программе... Пожалуйста... И первую с помощью функций...
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,196
Завершенные тесты: 1
04.12.2013, 19:16     Строки и функции #5
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
bool OutBrackets(char *str1,char *str2)
{
   int k=0; // индекс текущего копируемого символа
   bool inside=false;// признак нахождения внутри скобок
   bool present=false; // Признак присутствия скобок
   for(int i=0;i<strlen(str1);i++)
  {
     if(inside) // если находимся после открыв. скобки
    { 
         if(str1[i]==')' ) // нашли закрывающую скобку
         {
            inside=false; // отключаем признак "внутри скобок"  
            str2[k++]=str1[i]; // копируем скобку
         }
     }else
        if(str1[i]=='(')  // нашли открывающую скобку
        {
           inside=true;// устанавливаем признак "внутри скобок"  
           present=true; // устанавл. признак наличия скобок
           str2[k++]=str1[i];// копируем скобку
      }else
       {
            str2[k++]=str1[i]; // копируем символ
       }
   }
    str2[k]=0; // терминальный ноль для конца строки.
    return present; // Возвращаем признак наличия скобок 
 
}
int main()
{
    char s1[256],s2[256];
    cin.getline(s1,255);
    bool p=OutBrackets(s1,s2);
    cout<<s2<<endl;
    if(!p)
        cout<<"Скобок не было";
    system("pause");
    return 0;
}
Yandex
Объявления
04.12.2013, 19:16     Строки и функции
Ответ Создать тему
Опции темы

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