Форум программистов, компьютерный форум CyberForum.ru

Поиск и вывод слов начинающихся на 'l' - C++

Восстановить пароль Регистрация
 
mister pOO
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 33
26.11.2011, 13:52     Поиск и вывод слов начинающихся на 'l' #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{int i,j;
char s[255],s1[255];
cin.getline(s,255);
for(i=0;i<255;i++)
{
if (s[i]=='l')
{j=i;
while (s[i]!=' ')
{s1[i]=s[i];
i++;
}cout<<s1<<endl;
i=j;
}
}
 
getch();
}
как сделать чтобы и после пробела обрабатывались слова? в частном случае, например, loja laja leja выводит все три, а в других случаях нет

Добавлено через 1 час 1 минуту
ну помогите же =\
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
26.11.2011, 14:22     Поиск и вывод слов начинающихся на 'l' #2
mister pOO,

Я думаю, ваша программа должна включать две задачи. Первая - это пропуск пробелов. Вторая - это пропуск слова, то есть не пробеов. Это может выглядеть так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i = 0;
while ( s[i] != '\0' )
{
   // Пропуск пробелов
   while ( s[i] == ' ' ) i++;
   // Выделение слова
   if ( s[i] == 'l' )
   {
      int j = 0;
      while ( ( s[i] != ' ' ) && ( s[i] != '\0' ) ) s1[j++] = s[i++]; 
      s1[j] = '\0';
      std::cout << s1 << std::endl;
   }
   else
   {
      while ( ( s[i] != '\0' ) && ( s[i] != ' ' ) ) i++;
   }
}
Это примерный алгоритм. Его можно улучшить, введя функции IsSpace, IsEol

Например

C++
1
2
3
4
5
6
7
8
9
inline bool IsSpace( char c )
{
   return ( c == ' ' );
}
 
inline bool IsEol( char c )
{
   return ( c == '\0' );
}
Тогда предыдущий код будет выглядеть следующим образом

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i = 0;
while ( !IsEol( s[i] ) )
{
   // Пропуск пробелов
   while ( IsSpace( s[i] ) ) i++;
   // Выделение слова
   if ( s[i] == 'l' )
   {
      int j = 0;
      while ( !IsSpace( s[i] ) && !IsEol( s[i] ) ) s1[j++] = s[i++]; 
      s1[j] = '\0';
      std::cout << s1 << std::endl;
   }
   else
   {
      while ( !IsSpace( s[i] ) && !IsEol( s[i] ) ) i++;
   }
}
mister pOO
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 33
26.11.2011, 16:16  [ТС]     Поиск и вывод слов начинающихся на 'l' #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{int i,j;
char s[255],s1[255];
cin.getline(s,255);
 
for(i=0;i<strlen(s);i++)
{
if (s[i]=='l')
{j=0;//переход в начало строки
while (s[i]!=' ')
{s1[j]=s[i];//получаем слово от буквы l до пробела
i++;
j++;
 
}cout<<s1<<endl;//выводим в цикле полученное слово, затем в те же элементы будет записано новое слово и снова выведется в цикле
 
}
}
 
getch();
}
решено.
Сыроежка
Заблокирован
26.11.2011, 16:33     Поиск и вывод слов начинающихся на 'l' #4
Цитата Сообщение от mister pOO Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{int i,j;
char s[255],s1[255];
cin.getline(s,255);
 
for(i=0;i<strlen(s);i++)
{
if (s[i]=='l')
{j=0;//переход в начало строки
while (s[i]!=' ')
{s1[j]=s[i];//получаем слово от буквы l до пробела
i++;
j++;
 
}cout<<s1<<endl;//выводим в цикле полученное слово, затем в те же элементы будет записано новое слово и снова выведется в цикле
 
}
}
 
getch();
}
решено.
Нет, у вас не решено!.Ваша программа работает просто некорректно! Возьмите для примера слово типа "abclef"
Так что используйте мой код и скажите мне спасибо!
Yandex
Объявления
26.11.2011, 16:33     Поиск и вывод слов начинающихся на 'l'
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru