Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Обработка символьной информации



В данном разделе используются строковые данные типа string.

Можно объявить строковую переменную title и инициализировать ее пустой строкой string title;

Строковую переменную можно инициализировать строковым литералом, написав оператор

string title = "Стены и зеркала";

Впоследствии переменной title можно присвоить другую строку, используя оператор присваивания.

title = "Huckleberry Finn";

Каждая из этих строк состоит из 16 символов. В этом случае говорят, что длина строки titleравна 16.

В библиотеке существует ряд функций для работы со строками. Для применения функции к конкретной строке нужно указать имя строки и имя функции. Например, для вычисления текущей длины строки можно применять функцию Length. Таким образом, значение title.Length равно 16. Ссылаться на отдельные символы строки можно с помощью индексов, как будто строка представляет собой массив. Таким образом, в предыдущем примере ячейка title[0]содержит символ 'H', а ячейка title[15]— символ 'n'.

Строки можно сравнивать, используя обычные операторы сравнения. Причем можно проверить не только равенство, но и какая из строк предшествует другой. Строки упорядочиваются в порядке следования ASCII-кодов их символов. Таким образом, все приведенные ниже отношения являются истинными.

"dig" < "dog" // примеры истинных выражений

"Star" < "star" //поскольку 'S' < 's'

"start" > "star"

"d" > "abc"

Строки можно конкатенировать (объединять), используя оператор +. В результате образуется новая строка, состоящая из двух частей: первой и второй строки, записанных последовательно. Например, если в программе поместить объявление

string str1 = "Com";

то операторы

string str2 = str1 + "puter";

str1 += "puter";

присвоят переменным strl и str2строку "Computer". Аналогично, к строке можно приписать отдельный символ

str1 += 's';

Используя функцию

Substring (позиция, длина),

можно манипулировать частями строки. Ее первый аргумент определяет пози­цию начала подстроки (помните, что первый символ строки находится на нулевой позиции). Второй аргумент задает длину подстроки. Например, результатом вызова

title.Substring(12, 4)

является слово "Finn".

Для вывода строки в консольной части C# можно использовать функцию WriteLine() класса Console.

Фрагмент программы

title = "Стены и зеркала";

Console.WriteLine("\"" + title + "\"");

выведет на экран строку "Стены и зеркала". Обратите внимание на специаль­ный символ \ ", стоящий внутри литеральной строки. Он предназначен для вы­вода на экран двойной кавычки. Оператор WriteLine() выводит на экран всю строку, включая пробелы. Оператор

title = Console.ReadLine();
при значении строки "Huckleberry Finn", присвоит переменной title строку "Huckleberry Finn". Пробельные символы во входной строке не прерывают операцию чтения.

 

Решение Найти самое длинное симметричное слово заданного предложения

Математическая модель

Найти слово – это значит его напечатать

Псевдокод

Цикл по предложению

Выделить слово

Если симметрично То

Проверить длину на Max

Все Если

Все Цикл

Программа

//Cимвол .hв операторе #include не применяется.

// Main.cpp

#include <fstream>

#include <iostream>

#include <string>

using namespace std;

 

string sInversion( const string& InStr); //Заголовок функции инверсии строки

 

int main()

{

string maxword, curword, sBeg, sFin, sResWord;

int sLong, sLongRes=0;

ifstream fin("infile.txt");

if (!fin) {cout << "It is file open mistake." << endl; return 1;}

while (!fin.eof()) // цикл по словам файла

{

fin >> curword; //чтение очередного слова

sLong = curword.length(); int mLong=sLong/2;

sBeg = curword.substr(0, mLong); //вырезание левого полуслова

if (sLong%2) mLong++; //учет влияния нечетности числа букв

sFin = curword.substr(mLong, mLong); //вырезание правого полуслова

sFin=sInversion(sFin); //инверсия правого полуслова

if ((sBeg==sFin) && (sLongRes < sLong))

{ sResWord = curword; sLongRes = sLong;}

}

cout << "The longest word is: " << sResWord << endl;

return 0;

}

string sInversion(const string& InStr)

{

string InversStr; int mLength=InStr.length(); //äëèíà ñòðîêè

for(int i=0;i<mLength; ++i)

InversStr += InStr[mLength-1-i];

return InversStr;

}

130. Проверить, имеется ли в заданном тексте баланс открывающих и закрывающих круглых скобок, то есть верно ли, что можно установить взаимно однозначное соответствие открывающих и закрывающих скобок со следующим свойством: открывающая скобка всегда предшествует соответствующей закрывающей?

Искать в слове открывающие и закрывающие скобки. При нахождении отрывающей скобки увеличивать счетчик на 1, при закрывающей уменьшать. Следить за величиной счетчика.

131. Для встречающихся в заданном тексте пар рядом расположенных символов указать, сколько раз встречается в тексте каждое из таких двухбуквенных сочетаний.

132. Найти максимум длины таких начальных отрезков заданного слова, которые имеют вид vv, где v – симметричное слово.

133. В заданном предложении найти пару слов, из которых одно является обращением другого.

134. Для каждого из слов заданного предложения указать, сколько раз оно встречается в предложении.

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

136. В предложении все слова начинаются с различных букв Напечатать (если можно) слова предложения в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквой следующего слова.

137. Найти множество всех слов, которые встречаются в каждом из двух заданных предложений.

138. Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами. Пример HOW DO YOU DO → OD OD.

139. Найти самое длинное общее слово двух заданных предложений.

140. Даны два предложения. Найти самое короткое из слов первого предложения, которого нет во втором предложении.

141. Проверить, верно ли, что в заданном предложении всякое несимметричное слово имеет четную длину.

142. Отредактировать заданное предложение, удаляя из него слова, которые встречаются в предложении заданное число раз.

143. Напечатать заданное предложение таким образом, чтобы каждое его слово целиком находилось в одной и той же строке распечатки (то есть избавиться от переносов).

144. В заданном предложении указать слово, в котором доля гласных (A, E, I, O, U) максимальна.

145. Перечислить все слова заданного предложения, которые состоят из тех же букв, что и первое слово предложения.

См. задачу 79. Вырезать и запомнить первое слово. Далее для каждого последующего слова, в цикле проверять имеется ли в нем очередная буква первого слова.

146. Переставить и распечатать слова заданного предложения в соответствии с ростом доли согласных (B, C, D, F, G, H, K, L, M, N, P, Q, R, S, T, V, W, X, Z) в этих словах.

147. Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.

148. Заменить окончание ING каждого слова, встречающегося в заданном предложении, на ED.

149. Отредактировать заданное предложение, удаляя из него все слова, целиком составленные из вхождений не более чем двух букв. Пример: AKKA KNOBIKAISE → KNOBIKAISE.

150. Отредактировать заданное предложение, заменяя всякое вхождение слова вида abã, где a, b - полслова, ã – обращение слова a.

151. Задано предложение, в котором есть вхождения каждой их букв латинского алфавита. Пусть Ca для буквы a означает первое из слов предложения, содержащих a. Проверить, верно ли, что длины слов Ca упорядочены в соответствии с порядком букв алфавита (т. е. слово Ca не длиннее слова Cb и т. д.).

152. Задано множество натуральных чисел. Заменить каждое из них на число, которое получается из исходного записью его (десятичных) цифр в обратном порядке. Полученное множество чисел распечатать.

 

Рекурсия

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.