Строки [c++]

  • Автор темы -
  • Дата начала

Гость
#1
Помогите с задачей.
Дана строка символов. Группу символов, разделённую с одной или с обеих сторон одним или несколькими пробелами и не содержащую внутри себя пробелов назовём словом. Распечатаь все слова нечётной длины, в которых есть буква Т.
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#2
C++:
//
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL,"RUS");
char *u,s[80];
cout<<"Введите строку:";
gets(s);
u=strtok(s," ");
while(u)
{
if(strlen(u)%2!=0)
for(int i=0;i<strlen(u);i++)
if(u[i]=='Т')
cout<<u<<"\n";
u=strtok(NULL," ");
}
}
//
 
R

rrrFer

Гость
#3
однако, идентификатор s можно убрать:
Код:
//
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL,"RUS");
char *u = new char[80];
cout<<"Введите строку:";
gets(u);
strtok(u," ");
while(u)
{
if(strlen(u)%2!=0)
for(int i=0;i<strlen(u);i++)
if(u[i]=='Т')
cout<<u<<"\n"; //тут явно не хватает break
u = strtok(NULL," ");
}
delete u;
}
//
Если в слове четной длины несколько букв "Т" то оно напечатается несколько раз.
Не обратил бы внимания на программу если бы не эта строка: strtok(NULL," "); что-то невероятное.
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#4
:) да break в том месте исправил бы повторение одного слова ))


а почему strtok(NULL," "); что-то невероятное??
 
R

rrrFer

Гость
#5
Ну так то да, вполне вероятное...в документации про это тоже написано )
Но не представляю как они написали такую функцию