-
Notifications
You must be signed in to change notification settings - Fork 0
/
program.cc
109 lines (98 loc) · 3.36 KB
/
program.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
* @mainpage Codificación y decodificación de textos.
Consiste en un programa modular que ofrece un menú de opciones para gestionar codificador de textos en varios idiomas. En este programa se ha intentado poner
en práctica los fundamentos de programación modular, utilizando una serie de módulos funcionales combinados para resolver el problema planteado.
En este programa se han utilizado cinco clases o módulos, los que se han considerado apropiados para resolver el problema de forma organizada e intuitiva.
Las clases utilizadas han sido las siguientes:
- <em>Cjt_idiomas</em>
- <em>Idioma</em>
- <em>Tabla_frec</em>
- <em>Treecode</em>
- <em>Codigos</em>
*/
#include "Cjt_idiomas.hh"
#ifndef NO_DIAGRAM
#include <iostream>
#include <string>
#endif
/** @brief Programa principal con menú de opciones.
*/
int main (){
Cjt_idiomas c;
c.leer_idiomas();
string op;
while (cin >> op and op != "fin"){
//añadrir/modificar Idioma
if (op == "anadir/modificar"){
c.anadir_idioma();
}
//codificar
if (op == "codifica"){
string nombre_id, palabra;
cin >> nombre_id >> palabra;
cout << "Codifica en " << nombre_id << " el texto:" << endl;
cout << palabra << endl;
if (c.esta_idioma(nombre_id)){
string i = c.codifica(nombre_id, palabra);
if (i=="") cout << palabra << endl;
else cout << "El texto no pertenece al idioma; primer caracter que falla: " << i << endl;
}
else {
cout << "El idioma no existe" << endl;
}
}
//decodificar
else if (op == "decodifica"){
string nombre_id, palabra;
cin >> nombre_id >> palabra;
cout << "Decodifica en " << nombre_id << " el texto:" << endl;
cout << palabra << endl;
int n = palabra.length();
if (c.esta_idioma(nombre_id)) {
int i = c.decodifica(nombre_id, palabra);
if (i==n) cout << palabra << endl;
else cout << "El texto no procede de una codificacion del idioma; ultima posicion del codigo correspondiente al ultimo caracter que se podria decodificar: " << i << endl;
}
else {
cout << "El idioma no existe" << endl;
}
}
//consultar tabla de frecuencias
else if (op == "tabla_frec"){
string nombre_id;
cin >> nombre_id;
cout << "Tabla de frecuencias de " << nombre_id << ":" << endl;
if (c.esta_idioma(nombre_id)) c.consultar_tabla(nombre_id);
else {
cout << "El idioma no existe" << endl;
}
}
//consultar treecode
else if (op == "treecode"){
string nombre_id;
cin >> nombre_id;
cout << "Treecode de " << nombre_id << ":" << endl;
if (c.esta_idioma(nombre_id)) c.consultar_treecode(nombre_id);
else {
cout << "El idioma no existe" << endl;
}
}
//consultar codigos
else if(op == "codigos"){
string nombre_id, consulta;
cin >> nombre_id >> consulta;
if (consulta == "todos")
cout << "Codigos de " << nombre_id << ":" << endl;
else
cout << "Codigo de " << consulta << " en " << nombre_id << ":" << endl;
if (c.esta_idioma(nombre_id)) c.consultar_codigos(nombre_id, consulta);
else {
if (consulta == "todos")
cout << "El idioma no existe" << endl;
else
cout << "El idioma no existe o el caracter no esta en el idioma" << endl;
}
}
cout << endl;
}
}