Основы алгоритмического языка С++

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

содержит адрес остатка первоначальной строки, начинающегося с подстроки "how".

Функция strtok

Библиотека функций для работы со строками имеет функцию strtok, которая дает вам возможность разбить строку на подстроки на основании заданного набора символов-ограничителей.

Подстроки иногда называются лексемами.

Прототип функции strtok:

char* strtok(char *target, const char * delimiters);

Функция разбивает строку на лексемы, согласно символам-ограничителям, заданным в параметре delimeters. В следующем примере показано, как работать с этой функцией и как получать лексемы, на которые была разбита строка. Функция strtok вводит символ \0 после каждой лексемы. (Опять же не забудьте сохранить копию вашей строки в другой строковой переменной.)

Пример

#include // см. файл Ex02.cpp

#include

int main()

{

char *str = "(Base_Cost + Profit) * Margin";

char *tkn = "+*()";

char *ptr = str;

printf("%s\n", str);

// Первый вызов функции

ptr = strtok(str, tkn);

printf("Лексемы этой строки: %s", ptr);

while (ptr)

{

// Первый аргумент должен быть равен нулю

if ((ptr = strtok(0, tkn)) != 0)

printf (",%s", ptr);

}

printf("\n");

return 0;

}

 

В результате выполнения этой программы на экран выводятся следующие строки:

(Base_Cost + Profit) * Margin

Лексемы этой строки: Base_Cost, Profit, Margin

 

Рассмотрим пример программы поиска символов и строк. Листинг 7 (List7_7.cpp) содержит исходный текст программы STRING4.CPP. Программа выполняет следующие задачи:

  • Запрашивает у вас ввод основной строки
  • Запрашивает строку поиска
  • Предлагает вам ввести символ поиска
  • Выводит линейку цифр и основную строку
  • Выводит номер символа в основной строке, с которого начинается строка поиска *
  • Выводит номер символа в основной строке, совпавшего с символом поиска.

 

Основы объектно-ориентированного программирования СИНТАКСИС ОСНОВНЫХ КОНСТРУКЦИЙ

Объявление базовых классов

 

В С++ мы имеем возможность объявлять классы, которые инкапсулируют элементы-данные и функции-элементы. Эти функции изменяют и позволяют обращаться к значениям данных-элементов и выполняют другие задачи.

 

Базовый класс

 

Базовый класс определяется следующим образом (синтаксис):

 

class className

{

private:

protected:

public:

};

 

Пример 1:

 

class point

{

protected:

double х;

double у;

public:

point(double xVal, double yVal);

double getX();

double getY();

void assign(double xVal, double yVal);

point& assign(point &pt);

};

 

Разделы класса

 

Классы С++ имеют три различных уровня доступа к своим элементам - как к данным, так и к функциям:

 

Закрытые (частные) элементы

Защищенные элементы

Открытые элементы

 

К данным в закрытом разделе имеют доступ только функции-элементы класса.

Классам-потомкам запрещен доступ к закрытым данным своих 6азовых классов.

К данным в защищенной секции имеют доступ функции-элементы класса и классов-потомков. Данные из открытой секции находятся в области видимости функций-элементов класса, функций-элементов классов-потомков, и вообще доступны кому угодно.

 

Существуют следующие правила для разделов класса:

 

Разделы могут появляться в любом порядке.

Один и тот же раздел можно определять несколько раз.

Если не определен ни один раздел, компилятор (по умолчанию) объявляет все элементы закрытыми.

Помещать данные-элементы в открытый раздел следует только в том случае, если в этом есть необходимость, например, если это упрощает вашу задачу. Обычно элементы-данные помещаются в защищенный раздел, чтобы к ним имели доступ функции-элементы классов-потомков.

Используйте для изменения значений данных и доступа к ним функции-элементы. При использовании функции вы можете осуществлять проверку данных и, если нужно, изменять другие данные.

Класс может иметь несколько конструкторов.

Класс может иметь только один деструктор, который должен объявляться в открытом разделе класса.

Функции-элементы (в том числе конструкторы и деструкторы), состоящие из нескольких операторов, должны определяться вне объявления класса. Определение функции может содержаться в том же файле, в котором определяется класс. Это напоминает порядок работы с обычными функциями: задание прототипа и определение функции.

 

Конструкторы являются специфическим типом функций-элементов, тип возвращаемого значения для которых не указывается, а имя должно совпадать с именем класса-хозяина. Вызываются они при создании нового представителя класса. Деструктор вызывается для разрушения представителя класса.

 

При определении функции-элемента вы должны указать ее имя и имя ее класса. Сначала вы должны Сначала необходимо указать имя класса (т.н. квалификатор), а затем, через два двоеточия (::), имя функции. В качестве примера рассмотрим такой класс:

 

class point

{

protected:

double x;

double y;

public:

point(double xVal, double yVal);

double getX();

// другие функции-элементы

};

 

Определения конструктора и функций-элементов должны выглядеть так