PAT Clase B 1033 teclado antiguo escribiendo 20 (puntos)

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;
}

Enlace de detalles de la pregunta

Supongo que te gusta

Origin blog.csdn.net/qq_41985293/article/details/115035275
Recomendado
Clasificación