source: tags/arb_5.3/ALIV3/a3_test_ptree.cxx

Last change on this file was 3482, checked in by westram, 19 years ago
  • tabs → spaces
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 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.