Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск символов в строке на языке C++

8.9K
24 декабря 2005 года
senator
32 / / 24.12.2005
Здравствуйте! Задали написать лабораторную на языке Borland C++. Задача стоит следующая: 10. Проверить, имеется ли в заданном тексте открывающиеся и закрывающиеся круглые скобки. Заранее спасибо.
9.8K
25 декабря 2005 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by senator
Здравствуйте! Задали написать лабораторную на языке Borland C++. Задача стоит следующая: 10. Проверить, имеется ли в заданном тексте открывающиеся и закрывающиеся круглые скобки. Заранее спасибо.


Кушай на здоровье :-)

Код:
#include<ciostream.h>
 main(){
  char str[255];
  int flag=0;  

  for(int i=0; i<255; i++){
   if(str=='(' && flag==0) flag=1;    
   if(str=='(' && flag==1)
    cout<<"Есть открывающая и закрывающая скобка";
   if(str==')' && flag==0) flag=1;
   if(str==')' && flag==1)      
    cout<<"Есть открывающая и закрывающая скобка";
  }

  return 0;
 }
8.9K
26 декабря 2005 года
senator
32 / / 24.12.2005
спасибо тебе добрый человек :-)
292
26 декабря 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by linker3
Кушай на здоровье :-)
Код:
#include<ciostream.h>
 main(){
  char str[255];
  int flag=0;  

  for(int i=0; i<255; i++){
   if(str=='(' && flag==0) flag=1;    
   if(str=='(' && flag==1)
    cout<<"Есть открывающая и закрывающая скобка";
   if(str==')' && flag==0) flag=1;
   if(str==')' && flag==1)      
    cout<<"Есть открывающая и закрывающая скобка";
  }

  return 0;
 }



Твой код равносилен этому:

 
Код:
#include<iostream.h>

void main()
{
char str[] = "dfhgdfh())("; // для примера
for(int i=0; i<strlen(str); i++)
   if(str == '(' || str == ')')
      cout<<"встретилась скобка";
}
2
26 декабря 2005 года
squirL
5.6K / / 13.08.2003
вот вариант на С++, а не на С. так, для общего развития :)
Код:
#include <iostream>
#include <string>

using namespace std;

int main()
{
  string str;

  cin>>str;

  if (str.find(')') == string::npos || str.find('(') == string::npos )
    cout << "Not found" << '\n';
  else
    cout << "'(' and ')' found" << '\n';
  return 0;
}
259
26 декабря 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by squirL
вот вариант на С++, а не на С. так, для общего развития :)
Код:
#include <iostream>
#include <string>

using namespace std;

int main()
{
  string str;

  cin>>str;

  if (str.find(')') == string::npos || str.find('(') == string::npos )
    cout << "Not found" << '\n';
  else
    cout << "'(' and ')' found" << '\n';
  return 0;
}


Ну а ежели говорить о Borland C++, то наверно так:

 
Код:
.....
AnsiString str("12*(45-162)/(145-142)");
if((str.AnsiPos("(") > 0)&&(str.AnsiPos(")") > 0)
   cout << "found";
else
   cout << "not found";
2
26 декабря 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by AlexandrVSmirno
Ну а ежели говорить о Borland C++
:skip:

259
26 декабря 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by squirL


Я это к тому, что сама фирма Borland настоятельно рекумендует пользоваться типом AnsiString. Хотя, конечно stl никто не отменял.

9.8K
26 декабря 2005 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by Matush
Твой код равносилен этому:
 
Код:
#include<iostream.h>

void main()
{
char str[] = "dfhgdfh())("; // для примера
for(int i=0; i<strlen(str); i++)
   if(str == '(' || str == ')')
      cout<<"встретилась скобка";
}


Я кенечно человек не придлирчивый к мелочам и всегда учитываю рациональное мнение, но в условие сказано что нада проверить есть ли закрывающая "И" открывающая скобки.
Кстати я первый раз написал так как ты, но потом перечитал условие и... :-)

292
27 декабря 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by linker3
Я кенечно человек не придлирчивый к мелочам и всегда учитываю рациональное мнение, но в условие сказано что нада проверить есть ли закрывающая "И" открывающая скобки.
Кстати я первый раз написал так как ты, но потом перечитал условие и... :-)



Ожидал встретить такой ответ. Поэто поясняю все по-порядку.

Я написал "Твой код равносилен этому" - это означает, что приведенный мною код делает в точности тоже самое что и твой.

Условие я тоже читать умею и что самое главное понимаю его. Поэтому становится ясным что приведенный тобою и всеми другими код - нерабочий (относительно условия).

Если уловие понять так что надо проверить есть ли открывающие и закрывающие скобки и они расставлены верно, то вот код:

Код:
void Make()
{
char str[] = "sgdfs(gf)gjfgj";
int t = 0;
BOOL Flag = false;
for(int x=0; x<strlen(str); x++)
{
    if(str[x] == '(')
    {
        Flag = true;
        t++;
    }
    if(str[x] == ')') t--;
    if(t<0)
    {
        cout<<"No";
        return;
    }
}
if(Flag&& t==0)
    cout<<"Yes";
else cout<<"No";
}
2
27 декабря 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Matush
Поэтому становится ясным что приведенный тобою и всеми другими код - нерабочий (относительно условия).


ну за всех то не говори. мой код ищет именно И ту И другую скобку.
единственное - я бы cin заменил на cin.getline. но это к делу отношения не имеет.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог