有一个国家的外交信件使用如下的方法写成密码:首先颠倒所有的非元音字母的序列(包括空格和标点符号),然后再把全部信件倒着些。该国总理发出密信如下:
rn.urtbae hes mevi ginoreppe. pesee chaxtret a thekam
收信人编写了一个程序翻译出信件,实现这个解密程序
要求:用两个栈实现
1 #ifndef STACK
2 #define STACK
3
4 #include <iostream>
5 using namespace std;
6
7 struct Node
8 {
9 char Data;
10 Node *Next;
11 };
12
13 class StackType
14 {
15 friend String ReverseCode(StackType);
16 public:
17 StackType(){Top = NULL;};
18 ~StackType();
19 bool IsEmpty(){return Top == NULL;}
20 void Push(char item);
21 char Pop();
22 String Print();
23 private:
24 Node *Top;
25
26 };
27 StackType::~StackType(){}
28
29 void StackType::Push(char Item)
30 {
31 Node *p;
32 p = new Node;
33 p->Data = Item;
34 p->Next = Top;
35 Top = p;
36 }
37 char StackType::Pop()
38 {
39 Node *p;
40 char temp;
41 if(IsEmpty())ShowMessage("Stack is Empty!!!");
42 else
43 {
44 temp = Top->Data;
45 p = Top;
46 Top = Top->Next;
47 delete p;
48 return temp;
49 }
50 }
51 String StackType::Print()
52 {
53 String sp;
54 while(!IsEmpty())
55 {
56 sp += Pop();
57 }
58 return sp;
59 }
60
61 String ReverseCode(StackType stk1 )
62 {
63 StackType stk2;
64 String output;
65 char temp1;
66
67 while(!stk1.IsEmpty())
68 {
69 temp1 = stk1.Pop();
70 if(temp1 == 'a'||temp1 == 'e'||temp1 == 'i'||temp1 == 'o'||temp1 == 'u'||temp1 == 'A'||temp1 == 'E'||temp1 == 'I'||temp1 == 'O'||temp1 == 'U')
71 {
72 output += stk2.Print();
73 output += temp1;
74 }
75 else
76 { stk2.Push(temp1); }
77 }
78 output += stk2.Print();
79
80 return output;
81 }
82
83 #endif
84
最后翻译出来的东西很脑残,有兴趣的小盆友可以翻译着玩儿 
1 //---------------------------------------------------------------------------
2
3 #include <vcl.h>
4 #pragma hdrstop
5
6 #include "ReverseCode.h"
7 #include "Stack.h"
8 //---------------------------------------------------------------------------
9 #pragma package(smart_init)
10 #pragma resource "*.dfm"
11 TForm1 *Form1;
12 //---------------------------------------------------------------------------
13 __fastcall TForm1::TForm1(TComponent* Owner)
14 : TForm(Owner)
15 {
16 }
17 //---------------------------------------------------------------------------
18 void __fastcall TForm1::Button1Click(TObject *Sender)
19 {
20 String input;
21 input = Form1->Edit1->Text;
22 if(input == ""){ShowMessage("请输入有效的密文!");return;}
23 char *ptr;
24 ptr = input.c_str();
25 StackType stk;
26 for(;*ptr != '\0';ptr++)
27 {
28 stk.Push(*(ptr));
29 }
30 String output = ReverseCode(stk);
31 Form1->Edit2->Text = output;
32
33 }
34 //---------------------------------------------------------------------------
35
36
                    
                
                
            
        
浙公网安备 33010602011771号