!!! МЕТОДИЧКА_Срр_Часть1. Учебнометодическое пособие предназначено для студентов, изучающих дисциплину Программирование
Скачать 2.01 Mb.
|
s0 – содержит введенный текст; s1 – хранит очередное слово текста; s1 – хранит очередное слово текста; s2 – хранит искомый в тексте символ; pr – хранит символ «пробела»; j – хранит размер найденного слова; flag – указывает, что данное слово искомое. блок б) setlocale(LC_ALL, "Russian"); // Чтение введенной с клавиатуры строки. cout<<"Введите текст для замены:"; getline(cin, s0); блок в) s2="n"; pr=" "; cout<<"Получили: "; // Выясняем, не пустая ли строка. if (s0.empty()) cout << "String is empty"<<"\n"; else {}; блок г) while (s0.length()!=0) {} блок д) flag=false; //Заполняем строку s1 пробелами j=0; s1.resize(1,' '); s1.resize(s0.size(),' '); блок е) for (int i=0; i #include #include #include // Чтение введенной с клавиатуры строки. cout<<"Введите текст для замены:"; getline(cin, s0); s2="n"; pr=" "; cout<<"Получили: "; // Выясняем, не пустая ли строка. if (s0.empty()) cout << "String is empty"<<"\n"; else{ // s0.length() - функция получения длины строки s0. while (s0.length()!=0) { flag=false; //Заполняем строку s1 пробелами j=0; s1.resize(1,' '); s1.resize(s0.size(),' '); for (int i=0; i //Если очередной символ не пробел, //то копируем его в строку s1 if (s0[i]!=pr[0]) s1[i]=s0[i]; else break; j++; } // Проверяем, есть ли в очередном слове удвоенные буквы for (int i=1; i }; } _getch(); } Реализовав данную программу в интегрированной среде программирования, получим результирующее окно, представленное на рисунке 7.2. Рис. 7.2. Окно выполнения задачи В самом языке С++ нет типа данных «множество». Соответственно нет и операций над ними. Но в стандартной библиотеке шаблонов STL есть два подходящих шаблонных класса: set и multiset (множество и мультимножество). Второй отличается от первого тем, что элементы в нем могут повторяться. Такие операции как вставить, удалить, узнать размер, узнать есть ли такой элемент в множестве – там есть. Но необходимо самостоятельно реализовывать такие операции как найти пересечение, объединение, вычитание двух множеств (что является достаточно простым). Об STL можно почитать в книге: Николай Джосьютис. C++. Стандартная библиотека. Серия: Для профессионалов – СПб.: Питер, 2004 г., 736 стр. ISBN 5-94723-635-4. Контрольные вопросы Как описываются строковые переменные? Какая максимальная длина строки допустима в С++? Какие операции допустимы над строковыми данными? В чем отличие строковой переменной от массива символов? Какие стандартные процедуры и функции для работы со строками вы знаете? Что выведет функция Copy(x,Pos(' ',x)+1,18), если x='Сила есть - ума не надо'? Чему равно значение x[0] после присваивания x:='вопрос'? Задачи для индивидуального решения: 1. Дана строка, найти в ней удвоенные буквы. 2. Дана строка, содержащая математическую формулу. Проверить соблюдается ли в записи данной формулы баланс открывающихся и закрывающихся скобок. 3. Дана строка. Найти в ней количество слов. 4. Дана строка. Удалить все гласные в тексте. 5. Дана строка из слов, содержащих буквы и цифры. Слова разделены пробелами. Удалить из каждого слова цифры. Вариант 1 1. Найти самое длинное и самое короткое слово в заданном тексте. 2. Дана строка. Заменить все гласные на символ ' * '. Вариант 2 1. Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с дробной частью), то вывести 2, если строку нельзя преобразовать в число, то вывести 0. 2. Дана строка. Утроить все символы в тексте. Вариант 3 1. Дана строка. Найти количество слов 'krokodil'. 2. Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символа ‘\’). Если файл содержится в корневом каталоге, то вывести символ ‘\’. Вариант 4 1. Вывести строку длины N (N-четное), которая состоит из чередующихся символов С1 и С2, начиная с С1. 2. Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом и преобразует его в двоичное. Вариант 5 1. Дана строка. Напечатать ее в обратном порядке. 2. Дана строка из строчных латинских букв. Напечатать все буквы, входящие в текст не менее двух pаз. Вариант 6 1. Дана строка. Вывести текст по две буквы в столбик. 2. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но расположенные в обратном порядке и разделенные одним пробелом. Вариант 7 1. Написать программу, которая проверяет, является ли введенная с клавиатуры строка целым числом. 2. Удалить из слов с четной длиной все гласные, а из слов с нечетной длиной – все согласные. Вариант 8 1. Дана строка из строчных латинских букв. Напечатать все буквы, входящие в текст по одному pазу. 2. Дана строка. Удалить в тексте лишние пробелы между словами, оставив по одному. Вариант 9 1. Дана строка. Удалить каждую вторую букву. 2. Дана строка из слов, содержащих буквы и цифры. Вывести слова, упорядочив их по убыванию количества входивших в них цифр. Вариант 10 1. Дан текст. Найти количество слов, заканчивающихся буквосочетанием 'kk'. 2. Дана строка. Из заданного предложения удалить все слова, которые уже встречались в нем ранее. Рекомендуемая литература 1. Великович, Л.С. Программирование для начинающих / Л.С. Великович, М.С. Цветкова. – М.: БИНОМ, 2012. – 293 с. 2. Литвиненко, Н.А. Технология программирования на С++ / Н.А. Литвиненко. – СПб.: БХВ-Петербург, 2010 – 281 с. 3. Окулов, С.М. Основы программирования / С.М. Окулов. – М.: БИНОМ, 2012. – 340 с. 4. Пахомов, Б. С/С++ и MS Vusual C++ 2010 для начинающих / Б. Пахомов. – СПб.: БХВ-Петербург, 2011 – 726 с. |