• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Строки [c++]

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

Guest

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

Whatka

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

однако, идентификатор 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," "); что-то невероятное.
 
W

Whatka

:) да break в том месте исправил бы повторение одного слова ))


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

rrrFer

Ну так то да, вполне вероятное...в документации про это тоже написано )
Но не представляю как они написали такую функцию
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!