Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- ==============================================================
- Экзаменационный билет #15
- Предмет: Языки и методы программирования
- Экзаменатор1: Парфенов Денис Васильевич (составитель)
- Экзаменатор2: Петрусевич Денис Андреевич
- ==============================================================
- Задание 1. Условный оператор switch, его полная форма записи
- и возможности. Сравнение с конструкцией if.
- Задание 2. Указатели и функции. Передача содержимого
- переменных и массивов в функцию. Адресация элементов
- переданного по указателю массива внутри функции: одномерный
- и многомерный случаи.
- Задание 3. Запрограммируйте функцию, которая считает
- количество гласных букв английского алфавита (к ним относятся
- a, e, i, o, u, y) в тексте, помещенном в стандартной строке
- Си, вне зависимости от того, строчные это буквы или прописные.
- ==============================================================
- **/
- #include <stdio.h>
- #include <string.h>
- void number_of_vowels(const char *, const char *, int *); // Считает количество гласных букв
- void print_number_of_vowels(const char *, const int *); // Выводит посчитанное кол-во на экран
- int main(){
- // Объявим массив из строчных гласных букв и массив их количества в строке
- char vowels[] = {'a', 'e', 'i', 'o', 'u', 'y', '\0'}; // Строка строчных гласных букв
- int numbers[] = {0, 0, 0, 0, 0, 0, -1}; // Их количество в строке
- // Объявим строку, в которой будем считать гласные буквы, и выведем ее на экран
- char str[] = "Around the world";
- printf("str = %s\n", str);
- // Посчитаем количество гласных букв
- number_of_vowels(str, vowels, numbers);
- // Выведем на экран результат
- print_number_of_vowels(vowels, numbers);
- return 0;
- }
- void number_of_vowels(const char *str, const char *vowels, int *numbers){
- // Данная функция считает количество гласных букв в строке str вне
- // зависимости от того, строчные это буквы или прописные.
- // Гласные буквы передаются в функцию в строке vowels. Она хранит их в строчном виде (не заглавном).
- // Результат записывается в массив numbers;
- // Для начало необходимо обнулить массив numbers
- char *pv = vowels; // указатель на нулевой элемент строки
- int *pn = numbers; // указатель на нулевой жлемент массива
- while (*pv != '\0'){ // Пока мы не достигли конца строки - символа '\0'
- *pn = 0; // Обнуляем значение элемента массива
- pv++; // Смещаемся на одну позицию вдоль строки
- pn++; // Смещаемся на одну позицию вдоль массива
- }
- *pn = -1; // Будем в конце массива хранить -1 - символ окончания массива.
- // Начинаем подсчет количества гласных букв
- while (*str != '\0'){ // Пока мы не достигли конца строки, в которой считаем
- char l = tolower(*str); // Получаем символ строки в нижнем регистре (строчную букву)
- char *p = strchr(vowels, l); // Смотрим, есть ли полученный символ в строке с строчными гласными буквами
- if (p != NULL){ // Если есть
- int i = p-vowels; // Определяем индекс как разность указателя на найденный символ и указателя на нулевой символ
- numbers[i]++; // Увеличиваем на единицу соответствующий символу элемент массива
- }
- str++; // Смещаемся вдоль строки
- }
- }
- void print_number_of_vowels(const char *vowels, const int *numbers){
- // Данная функция выводит на экран строку из строчных гласных букв и массив количества их вхождений
- char *pv = vowels; // Указатель на нулевой элемент строки
- int *pn = numbers; // Указатель на нулевой жлемент массива
- while (*pv != '\0'){ // Пока не дошли до конца строки
- printf("%c=%d ", *pv, *pn); // Выводим на экран символ и количество
- pv++; // Смещаемся вправо вдоль строки
- pn++; // Смещаемся вправо вдоль массива
- }
- printf("\n"); // Переводим курсор на новую строку
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement