//Haha TTPro //http://codeforces.com/problemset/problem/118/A //String Task #include #include using namespace std; struct NODE { char cha; NODE * pNext; }; void input(NODE*&head, char X[]); void output(NODE*&head); void Clean(NODE*&head); void DeVowels(NODE*&head); bool CheckVowels(char x); void DeDummyNodehead(NODE*&head); void DummyNodehead(NODE*&head); void Replace(NODE*& head); void Up(char &x); int main() { char X[120]; cin.getline(X, 120); NODE*head = NULL; DummyNodehead(head); input(head,X); DeVowels(head); DeDummyNodehead(head); Replace(head); output(head); Clean(head); } void DummyNodehead(NODE*&head) { head = new NODE; head->pNext = NULL; } void DeDummyNodehead(NODE*&head) { NODE*K; K = head; head = head->pNext; delete K; } void CreateNode(NODE*&K, char a) { K = new NODE; K->cha = a; K->pNext = NULL; } void input(NODE*&head, char X[]) { char a; NODE *K,*cur; cur = head; for (int i =0; i < strlen(X);i++) { a=X[i]; if (a == '\0') break; CreateNode(K,a); cur->pNext = K; cur = cur->pNext; } } void output(NODE*&head) { NODE*cur; cur = head; while (cur != NULL) { cout << "."; cout << cur->cha; cur = cur->pNext; } } void Clean(NODE*&head) { NODE*cur; cur = head; while (cur!=NULL) { head = head->pNext; delete cur; cur = head; } } void DeVowels(NODE*&head) { NODE*cur; NODE*del; cur = head; while (cur->pNext != NULL) { while (CheckVowels(cur->pNext->cha)) { del = cur->pNext; cur->pNext = del->pNext; delete del; if (cur->pNext == NULL) break; } cur = cur->pNext; if (cur == NULL) break; } } bool CheckVowels(char x) { if ((x == 'A') || (x == 'a') || (x == 'O') || (x == 'o') || (x == 'E') || (x == 'e') || (x == 'Y') || (x == 'y') || (x == 'U') || (x == 'u') || (x == 'i') || (x == 'I')) { return true; } return false; } void Up(char &x) { if ((x >= 65) && (x <= 90)) { x = x + 32; } } void Replace(NODE*& head) { if (head == NULL) return; NODE* cur = head; while (cur != NULL) { Up(cur->cha); cur = cur->pNext; } }