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

  • Приглашаем на KubanCTF

    Старт соревнований 14 сентября в 10:00 по москве

    Ссылка на регистрацию в соревнованиях Kuban CTF: kubanctf.ru

    Кодебай является технологическим партнером мероприятия

Работа Со Строкой

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

Whatka

В строке заменить слова,длина которых
больше длины последнего слова.
к примеру есть строка(str1):
(через пробелы):

dark файл so слово planet doom end
вот мой код:
C++:
len=strlen(str1);
int a(0),b(-1),d;
for(i=0;i<len-1;i++)
{
if(str1[i]==' ')
{	
b++;
if(a>h)
{
d=i;
while(a!=0)
{
a--;
str1[i]='_';
i--;
}
i=d;
}
}	
else
a++;

}
cout<<"Str1:"<<str1<<endl;
Вот что получается:
d____ф____so_______p______d____end
Надо чтобы получалось:
__________so___________________end



подскажите где неправильно
 
R

rrrFer

Код:
#include <iostream>
int main() {
char	*s;
int		i, max, t;

s = new char[ 255 ];

std ::cin .getline( s, 255 );

max = 0;
for( i = 0; s[ i ]; ) {
while( ' ' == s[ i ] )
i ++;
for( t = 0; s[ i ] && ' ' != s[ i ]; i ++ )
t ++;
if( t > max )
max = t;
}

for( i = 0; s[ i ]; ) {
while( ' ' == s[ i ] )
i ++;
for( t = 0; s[ i ] && ' ' != s[ i ]; i ++ )
t ++;
if( t < max )
for( i -= t; s[ i ] && ' ' != s[ i ]; i ++ )
s[ i ] = ' ';
}

std ::cout .write( (char*) s, i ); 

delete[] s;

return 0;
}
блин, я не вчитался в задание, тут на соответствующее количество пробелов заменяются те слова, длина которых меньше длины самого длинного слова ).
Сам переделать сможешь? )
 
W

Whatka

да спасибо
очень помог :facepalm:


(не могу добавить рейтинг баг какой-то показывает ток 4 сообщения у меня)



*** добавишь завтра. сообщения поправим (lazybiz)
 
Мы в соцсетях:

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