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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
#1

Вывести строки, где есть слова, начинающиеся на букву а - C++

13.08.2014, 11:21. Просмотров 662. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{ 
     setlocale (0,"");
     
     ifstream Fin; 
     ofstream Fout;
     int p,len; string s,s1;
     Fin.open ("input.txt");
     Fout.open ("output.txt");
 
     while (getline (Fin,s) ) // ïîêГ* Г*ГҐ ГЄГ®Г*ГҐГ¶ ГґГ*éëГ* Fin
       {
         
         len = s.size();
         
         p = s.find (" "); 
         s1 = s.substr (p+1,len); 
         if ( s1[0] == 'Г*') cout << s << endl;
       }
       
     Fout.close(); 
     Fin.close();  
 
   
     system ("PAUSE");
}
Добавлено через 1 минуту
помогите, сделать так , чтобы полностью всю строку проверять до конца, а у меня только до 1го пробела...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 11:21     Вывести строки, где есть слова, начинающиеся на букву а
Посмотрите здесь:

C++ Слова, начинающиеся и заканчивающиеся на одну и ту же букву
C++ Распечатать все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву.
C++ Вывести в выходной файл все слова, начинающиеся на заданную букву, и их количество
Найти и вывести все слова начинающиеся и заканчивающиеся на одну и ту же букву (комментирование кода) C++
В строке, состоящей из слов, найти и вывести на экран все слова, начинающиеся на букву w C++
C++ Вывести слова сообщения начинающиеся и оканчивающиеся на одну и ту же букву
C++ Вывести все слова из строки, начинающиеся с определенной буквы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6110 / 5713 / 1849
Регистрация: 18.12.2011
Сообщений: 14,590
Завершенные тесты: 1
13.08.2014, 11:39     Вывести строки, где есть слова, начинающиеся на букву а #2
Все гораздо проще
C++
1
2
3
4
while (Fin>>s)  // пока не конец файла Fin
       {
              if ( s[0] == 'а') cout << s << endl;
       }
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
13.08.2014, 12:21     Вывести строки, где есть слова, начинающиеся на букву а #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
arzhanok, а не проще ли сразу искать слова начинающиеся на а?:
C++
1
2
while (getline (Fin,s) ) // пока не конец файла Fin
    if ( s.find (" a") != std::string::npos) std::cout << s << std::endl;
zss
Модератор
Эксперт С++
 Аватар для zss
6110 / 5713 / 1849
Регистрация: 18.12.2011
Сообщений: 14,590
Завершенные тесты: 1
13.08.2014, 12:35     Вывести строки, где есть слова, начинающиеся на букву а #4
Ilot,
An input iterator addressing the first occurrence of the specified value in the range being searched. If no such value exists in the range, the iterator returned addresses the last position of the range, one past the final element.
Т.е. найдется первое такое слово. А если их в строке несколько, то что?
Если вместо getline использовать >> , то читаться каждый раз будет одно слово.
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
13.08.2014, 12:39     Вывести строки, где есть слова, начинающиеся на букву а #5
zss, так название темы:
Вывести строки, где есть слова, начинающиеся на букву а
И
An input iterator addressing the first occurrence of the specified value in the range being searched. If no such value exists in the range, the iterator returned addresses the last position of the range, one past the final element.
Не справедливо для строк. Если поиск неудачен возвращается npos.
Return Value
The position of the first character of the first match.
If no matches were found, the function returns string::npos.
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
13.08.2014, 12:44  [ТС]     Вывести строки, где есть слова, начинающиеся на букву а #6
zss, спасибо, но в твоем варианте у меня выводится только слово на букву а.
Ilot , а в твоем варианте - выводится строка, где есть слово на букву а. то есть то , что мне было нужно.
if ( s.find (" a") != std::string::npos) std::cout << s << std::endl; поясни , пожалуйста, эту строку
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
13.08.2014, 12:48     Вывести строки, где есть слова, начинающиеся на букву а #7
Цитата Сообщение от arzhanok Посмотреть сообщение
поясни , пожалуйста, эту строку
Сперва ищем вхождение в строке си строки " a", если его находим выводим строку. find возвращает npos если поиск был не удачен. Выше же все написано пусть и на буржуйском.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2014, 16:18     Вывести строки, где есть слова, начинающиеся на букву а
Еще ссылки по теме:

Переместить слова начинающиеся на одинаковую букву C++
C++ Удалить из строки все слова, начинающиеся на гласную букву
C++ Вывести все слова, начинающиеся с большой буквы, из заданной строки
Найти слова, начинающиеся и оканчивающиеся на одну и ту же букву; слова, содержащие букву, встречающуюся N раз C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BlackIce
309 / 171 / 64
Регистрация: 18.01.2014
Сообщений: 387
13.08.2014, 16:18     Вывести строки, где есть слова, начинающиеся на букву а #8
Цитата Сообщение от Ilot Посмотреть сообщение
Сперва ищем вхождение в строке си строки " a"
Еще наверно надо проверить, что сама строка и соответсвенно ее первое слово не начинается на 'a'

C++
1
if (s[0] == 'a' || s.find (" a") != std::string::npos) std::cout << s << std::endl;
иначе, к примеру, строка "an input iterator" не выведется, хотя должна.
Yandex
Объявления
13.08.2014, 16:18     Вывести строки, где есть слова, начинающиеся на букву а
Ответ Создать тему
Опции темы

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