Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 07.pptx
Скачиваний:
68
Добавлен:
21.05.2015
Размер:
261.93 Кб
Скачать

char *find_substr(char *sub, char *str)

{

int t;

char *p, *p2, *start;

for(t=0; str[t]; t++) {

p = &str[t]; // установка указателей

start = p;

р2 = sub;

while(*р2 && *p2==*p) { // проверка совпадения

р++; р2++;

}

/* Если достигнут конец р2-подстроки, то эта подстрока была найдена. */

if(!*р2) return start; // Возвращаем

указатель на начало найденной подстроки.

}

return 0; // подстрока не найдена }

При выполнении этой версии программы получен следующий результат.

Найденная подстрока: три четыре

Прототипы функций

Прототип объявляет функцию до

ее первого использования.

Прототипы содержат три вида информации о функции:

тип возвращаемого ею значения;

тип ее параметров;

количество параметров.

Прототипы позволяют компилятору выполнить следующие три важные операции.

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

Они позволяют C++ обнаружить недопустимые преобразования типов аргументов, используемых при вызове функции, в тип, указанный в объявлении ее параметров, и сообщить о них.

Они позволяют компилятору выявить

различия между количеством аргументов,

Общая форма прототипа функции аналогична ее определению за исключением того, что в прототипе не представлено тело функции.

type func_name(type parm_name1, type parm_name2,...,type parm_nameN);

void sqr_it(int *i); // прототип функции int main()

{

int х;

х = 10;

sqr_it(x); // *** Ошибка *** —

несоответствие типов!

return 0;

}

void sqr_it(int *i)

{

*i=*i * *i;

}

Заголовки C++ содержат прототипы стандартных библиотечных функций, а также различные значения и определения, используемые этими функциями. Подобно функциям, создаваемым программистами, стандартные библиотечные функции также должны "заявить о себе" в форме прототипов до их использования. Поэтому любая программа, в которой

Рекурсивная функция это функция, которая вызывает сама

себя.

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

#include <iostream> using namespace std; int factr(int n); int fact(int n); int main()

{

// Использование рекурсивной версии.

cout << "Факториал числа 4 равен " << factr(4);

cout << '\n';

// Использование итеративной версии.

cout << "Факториал числа 4 равен " << fact(4);

cout << '\n';

return 0;

}

// Рекурсивная версия. int factr(int n)

{

int answer;

if(n==1) return(1);

answer = factr(n-1)*n;

return(answer);

}

// Итеративная версия. int fact(int n)

{

int t, answer;

answer =1;

for(t=1; t<=n; t++) answer = answer* (t);

return (answer);

}

Соседние файлы в папке lekcii_1_10