source: tags/initial/ALIV3/a3_test_ptree.cxx

Last change on this file was 2, checked in by oldcode, 23 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1// -----------------------------------------------------------------------------
2//      Include-Dateien
3// -----------------------------------------------------------------------------
4
5#include <iostream.h>
6#include <stdlib.h>
7
8#include "a3_ptree.hxx"
9
10// -----------------------------------------------------------------------------
11        static void Menu ( Postree &pt )
12// -----------------------------------------------------------------------------
13{
14        int done = 0;
15       
16        while (!done)
17        {
18                int choice;
19               
20                cout << "\nMenue:\n";
21                cout << "\na   - Sequenz anzeigen";
22                cout << "\nb   - Positionsbaum anzeigen";
23                cout << "\nf   - Teilsequenz suchen (exakt)";
24                cout << "\ns   - Teilsequenz suchen (<= 1 Fehlposition)";
25                cout << "\ne/q - Programm beenden\n";
26                cout << "\nDeine Wahl? ";
27               
28                choice = cin.get();
29               
30                switch (choice)
31                {
32                        case 'a':       pt.Show(1);
33                                                break;
34                        case 'b':       pt.Show(0);
35                                                break;
36                        case 'f':
37                        {
38                                int  seqlen = pt.SeqLen(),
39                                    *pos    = NULL,
40                                     anz    = 0,
41                                     len    = 0,
42                                     res;
43                                str  seq    = new char [seqlen + 1];
44                               
45                                cout << "\nSuchsequenz eingeben : ";
46                                cin  >> seq;
47
48                                if ((res = pt.Find(seq,&pos,&anz,&len,1)) < 0) cout << "\nGrober Fehler!\n";
49                                else
50                                {
51                                        int count = 0;
52
53                                        if (!res)
54                                        {
55                                                cout << "\nSuchsequenz " << seq << " der Laenge " << len;
56                                                cout << " wurde an " << anz << " Position(en) gefunden:";
57
58                                                while (count < anz) cout << " " << pos[count++];
59                                               
60                                                cout << "\n";
61                                        }
62                                        else
63                                        {
64                                                cout << "\nSuchsequenz " << seq << " der Laenge ";
65                                                cout << len << " wurde nicht gefunden!";
66                                                seq[len] = 0;
67                                                cout << "\nDas laengste Prefix " << seq << " mit Laenge " << len;
68                                                cout << " wurde an " << anz << " Position(en) gefunden:";
69
70                                                while (count < anz) cout << " " << pos[count++];
71                                               
72                                                cout << "\n";
73                                        }
74                                }
75
76                                break;
77                        }
78                        case 's':
79                        {
80                                int  seqlen = pt.SeqLen(),
81                                    *pos    = NULL,
82                                     anz    = 0,
83                                     len    = 0,
84                                     res;
85                                str  seq    = new char [seqlen + 1];
86                               
87                                cout << "\nSuchsequenz eingeben : ";
88                                cin  >> seq;
89
90                                if              ((res = pt.OneMismatch(seq,&pos,&anz,&len)) < 0) cout << "\nGrober Fehler!\n";
91                                else
92                                {
93                                        int count = 0;
94                                       
95                                        seq[len] = 0;
96                                       
97                                        cout << "\nSuchsequenz " << seq << " der Laenge " << len;
98                                        cout << " wurde an " << anz << " Position(en) gefunden:";
99
100                                        while (count < anz) cout << " " << pos[count++];
101                                               
102                                        cout << "\n";
103                                }
104
105                                break;
106                        }
107                        case 'q':
108                        case 'e':       done = 1;
109                                                break;
110                        default:        cout << "\nUnzulaessige Eingabe '" << choice << "'\n";
111                                                break;
112                }
113
114                choice = cin.get();
115        }
116}
117
118// -----------------------------------------------------------------------------
119        int main ( int   argc,
120                           char *argv[] )
121// -----------------------------------------------------------------------------
122{
123        int error = 0;
124       
125        if ((argc < 2) || (argc > 3))
126            cout << "\nUSAGE: aliv3 [<length> | [<file> <line>]]\n\n";
127        else
128        {
129                if (argc == 2)
130                {
131                        Postree pt(atoi(argv[1]));
132
133                        Menu(pt);
134                }
135                else if (argc == 3)
136                {
137                        Postree pt(argv[1],atoi(argv[2]));
138
139                        Menu(pt);
140                }
141        }
142       
143        return error;
144}
Note: See TracBrowser for help on using the repository browser.