Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 06.04.2019
Сообщений: 23
1

Найти слова совпадающие с начальным отрезком латинского алфавита

07.04.2019, 00:07. Показов 1373. Ответов 7
Метки нет (Все метки)

Дана строка символов, состоящая из отдельных слов, обособленных пробелом. Найти слова, которые совпадают с начальным отрезком латинского алфавита. (a, ab, abc и т.д.)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2019, 00:07
Ответы с готовыми решениями:

строки (напечатать все слова,которые совпадают с начальным отрезком латинского алфавита
строки (напечатать все слова,которые совпадают с начальным отрезком латинского алфавита)...

найти и удалить слова совпадающие с начальным отрезком латинского алфавита!
Срочно при срочно надо сдать задачу!!!Помогите Дана не пустая последовательность слов из строчных...

Найти слова, которые совпадают с с начальным отрезком латинского алфавита (a, ab, abc
Дана последовательность слов, каждое слово не более 8 символов, заканчивается точкой. Найти слова,...

Напечатать слова, отличные от последнего слова, совпадающие с конечным отрезком латинского алфавита
задача следующая : задача по теме обработки строк, поэтому соответственно использовать множества...

7
7246 / 4901 / 2822
Регистрация: 18.12.2017
Сообщений: 15,401
07.04.2019, 01:00 2
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
#include <iostream>
#include <string>
#include <sstream> 
using namespace std;
 
int main()
{
    int k=0;
    string s, word;
    cout << "String:\n";
    getline(cin, s);    
 
    stringstream words(s);
    while (words >> word)
    {
        k=0;
        for (int i=0; word[i]; i++)
        if (word[i]!='a'+i) {k=1; break;}
        if(!k) cout << word << " ";        
    }
    cout <<"\n";
system("pause");
return 0;
}
1
Модератор
Эксперт С++
11482 / 9400 / 5650
Регистрация: 18.12.2011
Сообщений: 25,114
07.04.2019, 09:56 3
Yetty, k у Вас булевская переменная,
имеет смысл описать ее с типом bool, выглядит изящнее
C++
1
2
3
4
5
6
7
8
  bool GoodWord=true;
  for (int i=0; word[i]; i++)
     if (word[i]!='a'+i) 
     {
       GoodWord=false; break;
     }
  if(GoodWord) 
     cout << word << " ";
Кстати, можно вообще обойтись без этой переменной
C++
1
2
3
4
5
6
  int i=0;
  for (; i<word.size(); i++)
     if (word[i]!='a'+i) 
         break;
  if( i=word.size()) 
     cout << word << " ";
0
7246 / 4901 / 2822
Регистрация: 18.12.2017
Сообщений: 15,401
07.04.2019, 11:23 4
Цитата Сообщение от zss Посмотреть сообщение
имеет смысл...выглядит изящнее
это субъективно. я считаю наоборот.
Цитата Сообщение от zss Посмотреть сообщение
можно вообще обойтись без этой переменной
можно. вопрос в том нужно ли - применять функцию, там где можно без неё вполне можно обойтись.
0
Модератор
Эксперт С++
11482 / 9400 / 5650
Регистрация: 18.12.2011
Сообщений: 25,114
07.04.2019, 11:34 5
Yetty, а кстати,
для string, обязательно ли
word[word.size()] равно нулю?
Я что-то нигде этого не встречал.
Конечно, это разумно, но не соответствует стандарту контейнерной технологии,
т.к. индекс выходит за границы данных, т.е.
word.end() возвращает адрес еще не содержащий данных.
0
7246 / 4901 / 2822
Регистрация: 18.12.2017
Сообщений: 15,401
07.04.2019, 11:40 6
zss, там находится терминальный ноль.
0
Модератор
Эксперт С++
11482 / 9400 / 5650
Регистрация: 18.12.2011
Сообщений: 25,114
07.04.2019, 11:51 7
Я вижу, что находится.
Но не обязан, нигде не написано, что должен.
Контейнер хранит размер строки, соответственно, концепция терминального нуля там излишняя.
0
7246 / 4901 / 2822
Регистрация: 18.12.2017
Сообщений: 15,401
07.04.2019, 11:58 8
zss, посмотрел, нашёл следующее:

Стандарт гарантирует, что если у std::string запросить последний символ тем или иным способом (например через operator[] с аргументом size()), то вернется символ, аналогичный сконструированному вызовом char(), т.е. 0. Так что можно сказать, что 0 существует в конце строки.
При этом в Стандарте всё же присутствует некоторая несогласованность. Например, описание конструктора, который вызывается конструктором по умолчанию, гласит, что функция-член data() после инициализации объекта возвращает не-нулевой указатель, по которому может содержаться 0.
Т.е. может, но не обязан. При этом для значения, полученного через data() справедливо равенство:
p + i == &operator[](i), для всех i в диапазоне [0, size()]
А учитывая работу operator[], о чем сказано в самом начале, получается, что 0 всё же не просто может, а обязан существовать в памяти.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2019, 11:58

Определить, совпадает ли введенное слово с начальным отрезком латинского алфавита
Определить, совпадает ли введенное слово с начальным отрезком латинского алфавита. Например: a, ab,...

Определить, совпадает ли введенное слово с начальным отрезком латинского алфавита
1. Определить, совпадает ли введенное слово с начальным отрезком латинского алфавита. Например: a,...

Напечатать те слова, которые отличны от последнего и совпадают с начальным отрезком алфавита
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных...

Найти слова, в которых есть цифры и буквы латинского алфавита
Задание такое:Дана строка. Словом текста является последовательность цифр и букв латинского...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru