Поиск символов в строке на языке C++
Здравствуйте! Задали написать лабораторную на языке Borland C++. Задача стоит следующая: 10. Проверить, имеется ли в заданном тексте открывающиеся и закрывающиеся круглые скобки. Заранее спасибо.
Кушай на здоровье :-)
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;
}
Кушай на здоровье :-)
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;
}
Твой код равносилен этому:
void main()
{
char str[] = "dfhgdfh())("; // для примера
for(int i=0; i<strlen(str); i++)
if(str == '(' || str == ')')
cout<<"встретилась скобка";
}
#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;
}
вот вариант на С++, а не на С. так, для общего развития :)
#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";
Ну а ежели говорить о Borland C++
:skip:
Я это к тому, что сама фирма Borland настоятельно рекумендует пользоваться типом AnsiString. Хотя, конечно stl никто не отменял.
Твой код равносилен этому:
void main()
{
char str[] = "dfhgdfh())("; // для примера
for(int i=0; i<strlen(str); i++)
if(str == '(' || str == ')')
cout<<"встретилась скобка";
}
Я кенечно человек не придлирчивый к мелочам и всегда учитываю рациональное мнение, но в условие сказано что нада проверить есть ли закрывающая "И" открывающая скобки.
Кстати я первый раз написал так как ты, но потом перечитал условие и... :-)
Я кенечно человек не придлирчивый к мелочам и всегда учитываю рациональное мнение, но в условие сказано что нада проверить есть ли закрывающая "И" открывающая скобки.
Кстати я первый раз написал так как ты, но потом перечитал условие и... :-)
Ожидал встретить такой ответ. Поэто поясняю все по-порядку.
Я написал "Твой код равносилен этому" - это означает, что приведенный мною код делает в точности тоже самое что и твой.
Условие я тоже читать умею и что самое главное понимаю его. Поэтому становится ясным что приведенный тобою и всеми другими код - нерабочий (относительно условия).
Если уловие понять так что надо проверить есть ли открывающие и закрывающие скобки и они расставлены верно, то вот код:
{
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";
}
Поэтому становится ясным что приведенный тобою и всеми другими код - нерабочий (относительно условия).
ну за всех то не говори. мой код ищет именно И ту И другую скобку.
единственное - я бы cin заменил на cin.getline. но это к делу отношения не имеет.