Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 13_Комбинация функций, определяемых пользователем

.pdf
Скачиваний:
31
Добавлен:
14.03.2016
Размер:
185.32 Кб
Скачать

Пример последовательного вызова функций без зависимости по данным

// Удаляем из массива все простые числа i = 0;

while(i < N) // обходим все элементы массива

{

if( isSimpleNumber( mass[i] ) ) //

эл-т массива -

{

//

простое число

//Удаляем элемент путем сдвига правостоящих

//элементов влево

shiftArray( mass+i+1, N, -1 ); N--;

// Переходить к следующему элементу не нужно

}

else // элемент массива - не простое число { i++; } // переходим к следующему эл-ту

31 }

Пример последовательного вызова функций без зависимости по данным

.........

// Печатаем результирующий массив printf("\nResult array: \t"); printArray( mass, N );

getch(); return 0;

}

32

Задание на комбинирование функций

Дан многострочный текст char text[MAX_ROW][MAX_LENGTH+1]

Подсчитать максимальное кол-во согласных букв

вслове, если известно, что:

слово – это непрерывная последовательность букв;

разделителями слов могут быть точка, запятая и пробел;

последовательности символов, не являющиеся словами (т.е. содержащие недопустимые сим-

33

волы), игнорировать.

Задание на комбинирование функций

Нарисуйте дерево вызовов для указанной задачи, если известен перечень функций:

#define MAX_WORDS 20 // макс. кол-во слов в строке #define MAX_LENGTH 25 // макс. длина слова

/*!

* Ищет максимум двух значений

*\param [in] a, b - анализируемые значения *\return - максимум двух значений

*/

int max(int a, int b);

34 .........

Задание на комбинирование функций

.........

/*!

* Выделяет слова в строке, если слово — это непрерывная последовательность букв, а разделителями могут быть только указанные символы

*\param [in] str — анализируемая строка

*\param [in] delim — строка, состоящая из разделителей *\param [out] words — выделенные слова

*\return – кол-во выделенных слов */

int extractWords( const char *str, const char *delim, char words[MAX_WORDS][MAX_LENGTH+1]);

.........

35

Задание на комбинирование функций

.........

/*!

* Подсчитывает кол-во вхождений заданных символов в строку

*\param [in] str — анализируемая строка *\param [in] symbols — искомые символы *\return – кол-во вхождений символов */

int symbolEntry( const char *str, const char *symbols);

.........

36

Задание на комбинирование функций

.........

/*!

* Определяет, является ли строка словом, если слово — это непрерывная последовательность букв

*\param [in] str - анализируемая строка

*\return – признак того, что строка является словом */

int isWord(const char *str);

37

Комбинация вызовов функций

main

extractWords слово symbolEntry

кол-во

max

 

согласных

 

 

букв в

 

isWord

слове

 

38

Задание на комбинирование функций

Доопределите дерево вызовов библиотечными функциями

 

char *strncpy(char *s,

копирует не более n символов строки ct в строку s

 

const char *ct, int n)

 

 

 

int strncmp(const char *cs,

сравнивает не более n символов строк cs и ct

 

const char *ct, int n)

 

 

 

int isalpha(int c)

проверяет, является ли символ c буквой

 

char *strrchr(const char *cs,

возвращает указатель на последнее вхождение символа c в

 

int c)

строку cs

 

size_t strspn(const char *cs,

возвращает длину начального сегмента cs, состоящего из

 

const char *ct)

символов, входящих в строку ct

 

size_t strcspn(const char *cs,

возвращает длину начального сегмента cs, состоящего из

 

const char *ct)

символов, не входящих в строку ct

 

char *strpbrk(const char *cs,

возвращает указатель в строке cs на первый символ,

 

const char *ct)

который совпал с одним из символов, входящих в строку ct

 

size_t strlen(const char *cs)

возвращает длину строки cs

39

char *strtok(char *cs,

разбивает строку sна лексемы. Ограничителем лексемы

const char *ct)

служит любой символ из строки ct

 

 

Комбинация вызовов функций

main

 

extractWords слово

symbolEntry

кол-во

max

 

 

 

согласных

 

 

 

 

букв в

 

strtok

послед-ть isWord

strchr

слове

 

 

символов,

 

 

 

 

ограниченная

 

 

 

 

разделит-ми

 

 

 

40

isalpha