Pesquisar este blog

Livros Recomendados

quinta-feira, 18 de março de 2021

URI (BEECROWD) - 2690 - Nova Senha RA - Strings - C e C++

Plataforma: URI (BEECROWD)

Problema2690

Enunciado:

Um novo conjunto de autenticação será implementado no Instituto Federal do Sul de Minas, campus Muzambinho.

Bom, o novo serviço de autenticação é seguro, sem bugs e dores de cabeça mesmo porque estamos no final de semestre. Ele permitirá que sua senha tenha espaços, mas não números ou caracteres especiais. A atualização ocorre sempre no período de férias, para que todos os ajustes sejam feitos e no final agrade todos os usuarios. Como estagiário da central de suporte da escola, seu dever é implementar a nova autenticação. Por enquanto o novo padrão para nomes de usuários está sendo estudado.


Como podemos perceber para cada conjunto de letras teremos um numero especifico. Bole um programa maroto para fazer essa conversão das letras para os números, e como você não acessará as senhas dos alunos, faça um algoritmo para que o mesmo faça o processo sozinho usando seus proprios casos de teste.

Obs : Seus casos de teste não poderão passar de 20 caracterese e a saída, 12 digitos.


Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>

int getNum (char letra) {
    if ((letra >= 'A' && letra <= 'Z') || (letra >= 'a' && letra <= 'z')) {
        switch (letra) {
            case 'G':
            case 'Q':
            case 'a':
            case 'k':
            case 'u':
                return 0;
            case 'I':
            case 'S':
            case 'b':
            case 'l':
            case 'v':
                return 1;
            case 'E':
            case 'O':
            case 'Y':
            case 'c':
            case 'm':
            case 'w':
                return 2;
            case 'F':
            case 'P':
            case 'Z':
            case 'd':
            case 'n':
            case 'x':
                return 3;
            case 'J':
            case 'T':
            case 'e':
            case 'o':
            case 'y':
                return 4;
            case 'D':
            case 'N':
            case 'X':
            case 'f':
            case 'p':
            case 'z':
                return 5;
            case 'A':
            case 'K':
            case 'U':
            case 'g':
            case 'q':
                return 6;
            case 'C':
            case 'M':
            case 'W':
            case 'h':
            case 'r':
                return 7;
            case 'B':
            case 'L':
            case 'V':
            case 'i':
            case 's':
                return 8;
            case 'H':
            case 'R':
            case 'j':
            case 't':
                return 9;
        }
    }
    return -1;
}

int main () { 
    int n, i, digitos;
    scanf("%d", &n);
    char frase[500];
    
    while (n--) {
        scanf(" %[^\n]", frase);

        i = 0;
        digitos = 0;
        while (frase[i] != '\0') {
            if (digitos == 12)
                break;
            if (getNum(frase[i]) != -1) {
                printf("%d", getNum(frase[i]));
                digitos++;
            }
            i++;
        }
        printf("\n");
    }
   
    return 0;
}

Código em C++:

#include <iostream>
#include <cstdio>

using namespace std;

int getNum (char letra) {
    if ((letra >= 'A' && letra <= 'Z') || (letra >= 'a' && letra <= 'z')) {
        switch (letra) {
            case 'G':
            case 'Q':
            case 'a':
            case 'k':
            case 'u':
                return 0;
            case 'I':
            case 'S':
            case 'b':
            case 'l':
            case 'v':
                return 1;
            case 'E':
            case 'O':
            case 'Y':
            case 'c':
            case 'm':
            case 'w':
                return 2;
            case 'F':
            case 'P':
            case 'Z':
            case 'd':
            case 'n':
            case 'x':
                return 3;
            case 'J':
            case 'T':
            case 'e':
            case 'o':
            case 'y':
                return 4;
            case 'D':
            case 'N':
            case 'X':
            case 'f':
            case 'p':
            case 'z':
                return 5;
            case 'A':
            case 'K':
            case 'U':
            case 'g':
            case 'q':
                return 6;
            case 'C':
            case 'M':
            case 'W':
            case 'h':
            case 'r':
                return 7;
            case 'B':
            case 'L':
            case 'V':
            case 'i':
            case 's':
                return 8;
            case 'H':
            case 'R':
            case 'j':
            case 't':
                return 9;
        }
    }
    return -1;
}

int main () { 
    int n, i, digitos;
    cin >> n;
    char frase[500];
    
    while (n--) {
        scanf(" %[^\n]", frase);

        i = 0;
        digitos = 0;
        while (frase[i] != '\0') {
            if (digitos == 12)
                break;
            if (getNum(frase[i]) != -1) {
                cout << getNum(frase[i]);
                digitos++;
            }
            i++;
        }
        cout << endl;
    }
   
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas