tema
Varias teclas están rotas en el teclado antiguo, por lo que al escribir un párrafo de texto, los caracteres correspondientes no aparecerán. Ahora, dado un fragmento de texto que se debe ingresar y las teclas que están rotas, ¿cuál será el texto resultante?
Formato de entrada:
Ingrese las claves rotas y el texto que se debe ingresar en dos líneas. En el que las correspondientes teclas de letras inglesas en mayúsculas dan mal; cada parte del texto no sea superior a 10 510 5 ^ 1. 0 ? 5 ? ? Cadena de caracteres. Caracteres disponibles incluyen letras [ - , - ], digitales - , y el guión bajo (lo que representa el espacio), , ,, (que representa la tecla de mayúsculas). Asegúrese de que la cadena de texto ingresada en la línea 2 no esté vacía. a
z
A
Z
0
9
_
,
.
-
+
Nota: Si la tecla de mayúsculas está rota, no se pueden escribir las letras mayúsculas en inglés.
Formato de salida:
Genere el texto del resultado que se puede escribir en una línea. Si no se puede escribir ninguno de los caracteres, se genera una línea en blanco.
Muestra de entrada:
7+IE.
7_This_is_a_test.
Salida de muestra:
_hs_s_a_tst
Código
#include<iostream>
using namespace std;
int main()
{
string can = "abcdefghijklmnopqrstuvwxyz#ABCDEFGHIJKLMNOPQRSTUVWXYZ#0123456789_,.-+";
char input;
int index;
while (1)
{
input = getchar();
if (input == '\n')
break;
index = can.find(input, 0);
if (input >= 'a' && input <= 'z')
{
if(index!=-1)
can = can.substr(0, index) + can.substr(index + 1);
input -= 32;
index = can.find(input, 0);
if (index != -1)
can = can.substr(0, index) + can.substr(index + 1);
}
else if (input >= 'A' && input <= 'Z')
{
if (index != -1)
can = can.substr(0, index) + can.substr(index + 1);
input += 32;
index = can.find(input, 0);
if (index != -1)
can = can.substr(0, index) + can.substr(index + 1);
}
else if (input == '+')
{
if (index != -1)
can = can.substr(0, index) + can.substr(index + 1);
index = can.find('#', 0);
if (index != -1&& can.find('#', index + 1)!=-1)
can = can.substr(0, index) + can.substr(can.find('#',index+1)+1);
}
else
{
if (index != -1)
can = can.substr(0, index) + can.substr(index + 1);
}
}
while (1)
{
input = getchar();
if (input == '\n')
break;
if (can.find(input, 0) != -1)
cout << input;
}
return 0;
}