Лаба 7 яп. Лаба7яп. Использование функций при работе со строками
Скачать 156.07 Kb.
|
№7 Использование функций при работе со строками Цель работы: получение навыков работы со строками. Закрепление навыков работы с функциями. Вариант 6: В данной строке соседние слова разделены запятыми. Определить количество слов-палиндромов, которые начинаются с буквы 'a'. Блок-схема алгоритма: Описание подпрограмм: Назначение подпрограммы – Поиск слова в строке, запись первой буквы слова в переменную i1, последнюю букву в переменную i2. Назначение подпрограммы – Проверка слова на палиндром. Назначение подпрограммы – Поиск палиндромов, начинающихся на 'a' и их подсчет. Блок-схема с использованием блока «предопределённый процесс»: Программа на языке Си: #include <stdio.h> void get_word(char l[], int *i1, int *i2) { while ((l[*i1] == ',') || ((l[*i1] <= ' ') && (l[*i1]))) (*i1)++; (*i2) = *i1; while ((l[*i2]) && (l[*i2] != ',')) (*i2)++; (*i2)--; } int palindrome_check(char l[], int i1, int i2) { int mid = (i2 + i1)/2, i = i1, j = i2; while ((l[i] == l[j]) && (i <= mid)) { i++; j--; } return (i > mid); } void palindrome_search(char l[]) { int i1 = 0, i2 = 0, count = 0, i; while (l[i1]) { get_word(l, &i1, &i2); if (((i2 - i1) > 0) && (l[i1] == l[i2]) && (l[i1] == 'a')) { i = palindrome_check(l, i1+1, i2-1); if (i) count++; } i1 = i2 + 1; } printf("Количество слов-палиндромов начинающихся на 'a' - %d", count); } void main() { char l[255]; puts("Введите строку l, cлова разделять запятыми"); gets(l); palindrome_search(l); } |