- •Т.Э. Шульга программирование.
- •Глава 1. Основы программирования на языке высокого уровня 6
- •Глава 2. Динамические структуры данных 40
- •Глава 3. Основы объектно-ориентированного программирования 53
- •Введение
- •Глава 1. Основы программирования на языке высокого уровня
- •Void main()
- •Задания
- •1.2. Переменные. Основные типы данных
- •Ввод – вывод значений переменных
- •Форматирование данных при обменах с потоками ввода-вывода
- •Void main()
- •Void main()
- •Преобразование типов
- •Задание 1. Описание переменных и преобразование типов
- •Задание 2. Форматирование вывода
- •1.3. Основные операции
- •Void main ()
- •Задания
- •1.4. Конструкции выбора
- •Void main()
- •Void main()
- •Void main()
- •Задание 1. Обработка введенного символа
- •Задание 2. Вычисление значения функции
- •Задание 3. Применение разветвляющихся алгоритмов при решении простейших задач
- •Задание 4. Mультиветвление
- •1.5. Конструкции цикла и передачи управления
- •Void main()
- •Задание 1. Детерминированные циклы. Простейшие задачи
- •Void main()
- •Задание 2. Итерационные циклы. Простейшие задачи
- •Void main()
- •Int last;
- •Задание 3. Одномерные массивы
- •Void main ()
- •Int a[100],n,max,imax;
- •Задание 4. Вложенные циклы
- •Void main ()
- •Задание 5. Двумерные массивы
- •Void main ()
- •Задание 6. Посимвольная обработка строк
- •Void main()
- •Задание 7. Сортировка массива
- •Void main ()
- •1.6.Функции
- •Int oct (int a)// определение функции
- •Void main()
- •Void main()
- •Int strcmp(const char *str1, const char* str2);
- •Int fclose (file * stream);
- •Int feof(file *stream);
- •Int fseek ( file* stream, long offset, int origin);
- •Задание 1. Определение и вызов функций
- •Задание 2. Рекурсивные функции
- •Задание 3. Использование библиотечных функций string.H
- •Void main()
- •Задание 4. Использование библиотечных функций stdio.H
- •Void main ()
- •Глава 2. Динамические структуры данных
- •Int year;
- •Int children;
- •Задание 1. Структуры
- •Int year;
- •Int month;
- •Int visokos(int year)
- •Vivod (date d)
- •Int day_number(date d)
- •Vivod(mas[I]);
- •Vivod (min(mas,n));
- •Задание 2. Динамический список
- •Int mark;
- •Void vvod ()
- •Void vivod()
- •If (begin)
- •Void vivod_f()
- •If (begin)
- •Void add()
- •Void udol () //
- •If (begin)
- •Void del()
- •Void main ()
- •Задание 3. Использование стеков и очередей
- •Глава 3. Основы объектно-ориентированного программирования
- •Void empty();
- •If (len) delete []s;
- •Void cStr::empty()
- •Задание 1 . Описание простейшего класса
- •Задание 2 . Класс string
- •Void main()
- •Void main ()
- •Задание 3. Класс fstream
- •Задание 4. Наследование
- •Список литературы
Задание 2 . Класс string
Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-12 задания 3 из параграфа 1.6, использую класс string.
В С++ описан стандартный класс string, который обеспечивает различные операции для манипулирования строками. Данный класс описывается в заголовочном файле cstring.h.
В классе string имеется несколько конструкторов. Ниаболее употребляемыми из них явлются конструктор, создающий пустую строку - string () и конструктор, создающий строку со значением С-строки - string (const char*).
Например,
string S1, S2; // создали два объекта класса string – пустые строки
string S3 (“Hello!!!”);// создали объект класса string – строку со значение “Hello!!!”
Класс содежит три операции присваивания:
string& opertor=(const srting& str); // присваивание объекта-строка
string& opertor=(const char *str);// присваивание значения С-строки
string& opertor=(char s);// присваивание значения символа
Например,
string S4=S3, S5= “Error”, S6= ‘a’;
В классе string опрделена константа NPOS, задающая максимально возможное число, которое в зависимости от конекста означет либо «все элементы строки», либо отрицательный результат поиска.
В классе переопредлены следющие операции
Опреция |
Значение |
= |
присваивание |
+ |
конкантенация |
== (!=) |
равенство(неравенство) |
< (<=) |
меньше (меньше или равно) |
> (>=) |
больше (больше или равно) |
[ ] |
индексация |
<< (>>) |
вывод(ввод) |
+= |
добавление |
Пример 1. Ввести с клавиатуры два слова. Если они одинаковы, то вывести на экран их первый символ, в противном случае вывести строку, состоящую из этих слов, разделенных пробелом.
# include <iostream.h>
# include <cstring.h>
Void main()
{
int k,k1;
string s1,s2;// описали два объекта класса string
cin>>s1>>s2; // считали две слова
if (s1!=s2) // использовали функцию != (не равно)
// класса string
{
string s3=s1+" "+s2+"\n"; //конкатенация строк класса //string для создания новой строки
cout<<s3;
}
else cout<<"First = "<<s1[0];
}
Опишем наиболее используемые методы класса string.
Метод size_type1 size() const и метод size_type length() const возвращают размер строки.
Метод insert (size_type posl, const string & str) вставляет строку str в вызывающую строку, начиная с позиции posl.
Метод replace (size_type posl, size_type n1, const string & str) заменяет n1 элементов, начиная с позиции pos1 вызывающей строки, элементами строки str.
Метод string substr (size_type pos=0, size_type n=NPOS) const возвращает подстроку длины n, назиная с позиции pos.
Метод size_type find (const string& str, size_type pos=0) const / size_type rfind (const string& str, size_type pos=0) const ищет самое левое/правое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.
Метод size_type find (char с, size_type pos=0) const / size_type find (char с, size_type pos=0) const ищет самое левое/ правое вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.
Метод size_type find_first_of (const string& str, size_type pos=0) const/ size_type find_last_of (const string& str, size_type pos=0) const ищет самое левое/ правое вхождение любого символа строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.
Метод swap (const string& str) обменивает содрежимое вызывающей строки и строи str.
Метод erase (size_type pos=0, size_type n= NPOS) удаляет n элементов, начиная с позиции pos.
Метод clear () ощищает всю строку.
Метод size_type copy (char * s, size_type n, size_type pos=0) const копирует в символьный массив s n элементов вызывающей строки, начиная с позиции pos. Возращается количество скопированных элементов.
Пример 2. Решим задачу из примера 6.3., использую класс string. Вывести слова введенной строки, начинающиеся с гласной буквы, на экран столбиком, без разделительных знаков (пробел, табуляция, точка, запятая и т.п.).