Слово до точки занести в два стека, содержащих гласные и согласные буквы - C (СИ)
Формулировка задачи:
- struct Node
- {
- char c;
- list *next;
- }n1,n2;
- struct ptr_stack
- {
- Node *last;
- };
- void pop ( ptr_stack *stack )
- {
- if ( stack->last != 0 )
- {
- Node *tmp = Node->last->prev;
- delete Node->last;
- Node->last = tmp;
- }
- }
- void push ( ptr_stack *stack, num )
- {
- Node *tmp = new list;
- tmp->num = num;
- tmp->prev = Node->last;
- Node->last = tmp;
- }
Решение задачи: «Слово до точки занести в два стека, содержащих гласные и согласные буквы»
- #include <stdio.h>
- #include <ctype.h>
- #include "stack.h"
- int isvowel(int c)
- {
- int character = tolower(c);
- if ((character == 'a') || (character == 'e') || (character == 'i') ||
- (character == 'o') || (character == 'u'))
- return 1;
- else
- return 0;
- }
- int main(void)
- {
- char s[256];
- int i;
- char c;
- STACK_HANDLE hVowelsStack;
- STACK_HANDLE hConsonantStack;
- StackCreate(&hVowelsStack, sizeof(char));
- StackCreate(&hConsonantStack, sizeof(char));
- gets(s);
- i = 0;
- while (s[i] != '.')
- {
- if (isalpha(s[i]))
- {
- if (isvowel(s[i])) StackPush(hVowelsStack, &s[i]);
- else StackPush(hConsonantStack, &s[i]);
- }
- i++;
- }
- printf("String : '%s'\n", s);
- printf("Vowels in stack:\n");
- while (!IsStackEmpty(hVowelsStack))
- {
- StackPop(hVowelsStack, &c);
- printf("item : '%c'\n", c);
- }
- printf("Consonants in stack:\n");
- while (!IsStackEmpty(hConsonantStack))
- {
- StackPop(hConsonantStack, &c);
- printf("item : '%c'\n", c);
- }
- StackDelete(&hVowelsStack);
- StackDelete(&hConsonantStack);
- return 0;
- }
Объяснение кода листинга программы
В этом коде используется стандартная библиотека языка C, а также пользовательская библиотека для работы со стеками. Сначала определена функция isvowel, которая принимает символ и возвращает 1, если символ является гласной (a, e, i, o, u), и 0 в противном случае. В функции main создаются два указателя на стек, hVowelsStack и hConsonantStack, а также буфер для строки s. Затем в стек hVowelsStack и hConsonantStack добавляются гласные и согласные буквы из строки s до тех пор, пока не встретится точка. После этого выводится исходная строка, а затем из стеков поочередно вытаскиваются и выводятся элементы. В конце программы вызываются функции StackDelete для очистки памяти от выделенных стеков.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д