C++ ideia para resolver [RESOLVIDO]

5 respostas
J

Boa tarde, estou precisando de uma ideia para resolver o meu problema.

Preciso comparar uma matriz que cada numero dela é comparado com a ordem alfabetica, se matriz conter um valor 1 em alguma das posições entao a matriz de letras recebe a letra A, se for 2 a matriz letra recebe B e assim por diante, olha como ficou:

for (int i =0; i < 3; i++)
    {
        for (int j =0; j < 3; j++)
        {
            if (matrizResultante[i][j] == 0)
            {
                matrizResultanteLetra[i][j] = '-';
            }
            if (matrizResultante[i][j] == 1)
            {
                matrizResultanteLetra[i][j] = 'A';
            }
            if (matrizResultante[i][j] == 2)
            {
                matrizResultanteLetra[i][j] = 'B';
            }
            if (matrizResultante[i][j] == 3)
            {
                matrizResultanteLetra[i][j] = 'C';
            }
            if (matrizResultante[i][j] == 4)
            {
                matrizResultanteLetra[i][j] = 'D';
            }
            if (matrizResultante[i][j] == 5)
            {
                matrizResultanteLetra[i][j] = 'E';
            }
            if (matrizResultante[i][j] == 6)
            {
                matrizResultanteLetra[i][j] = 'F';
            }
            if (matrizResultante[i][j] == 7)
            {
                matrizResultanteLetra[i][j] = 'G';
            }
            if (matrizResultante[i][j] == 8)
            {
                matrizResultanteLetra[i][j] = 'H';
            }
            if (matrizResultante[i][j] == 9)
            {
                matrizResultanteLetra[i][j] = 'I';
            }
            if (matrizResultante[i][j] == 10)
            {
                matrizResultanteLetra[i][j] = 'J';
            }
            if (matrizResultante[i][j] == 11)
            {
                matrizResultanteLetra[i][j] = 'K';
            }
            if (matrizResultante[i][j] == 12)
            {
                matrizResultanteLetra[i][j] = 'L';
            }
            if (matrizResultante[i][j] == 13)
            {
                matrizResultanteLetra[i][j] = 'M';
            }
            if (matrizResultante[i][j] == 14)
            {
                matrizResultanteLetra[i][j] = 'N';
            }
            if (matrizResultante[i][j] == 15)
            {
                matrizResultanteLetra[i][j] = 'O';
            }
            if (matrizResultante[i][j] == 16)
            {
                matrizResultanteLetra[i][j] = 'P';
            }
            if (matrizResultante[i][j] == 17)
            {
                matrizResultanteLetra[i][j] = 'Q';
            }
            if (matrizResultante[i][j] == 18)
            {
                matrizResultanteLetra[i][j] = 'R';
            }
            if (matrizResultante[i][j] == 19)
            {
                matrizResultanteLetra[i][j] = 'S';
            }
            if (matrizResultante[i][j] == 20)
            {
                matrizResultanteLetra[i][j] = 'T';
            }
            if (matrizResultante[i][j] == 21)
            {
                matrizResultanteLetra[i][j] = 'U';
            }
            if (matrizResultante[i][j] == 22)
            {
                matrizResultanteLetra[i][j] = 'V';
            }
            if (matrizResultante[i][j] == 23)
            {
                matrizResultanteLetra[i][j] = 'W';
            }
            if (matrizResultante[i][j] == 24)
            {
                matrizResultanteLetra[i][j] = 'X';
            }
            if (matrizResultante[i][j] == 25)
            {
                matrizResultanteLetra[i][j] = 'Y';
            }
            if (matrizResultante[i][j] == 26)
            {
                matrizResultanteLetra[i][j] = 'Z';
            }

        }
    }

Alguem tem uma ideia de resolver a isso, sem tanta repetição de codigo, e tantas verificações?

Obrigado.

5 Respostas

E

Crie um array de caracteres de 27 posições, contendo os caracteres de “-” até “Z”. A seguir, pegue a letra correspondente. Por exemplo, se o valor de matrizResultante[i][j] é 7, então a posição 7 desse array contém o caracter ‘G’.

J

Mas se eu crio um array com todos os caracteres, minhas comparações serão as mesmas, pois eu terei que verificar cada numero de 1 ate 27 e atribuir o valor do array á matriz de letras.

E

Eu não disse para você fazer isso. Eu disse para fazer o seguinte:

char letras[] = "-ABCDEFGHIJKLMNOPQRSTUVWXYZ";

 for (int i =0; i < 3; i++)  
{  
    for (int j =0; j < 3; j++)  
    {  
        int valor = matrizResultante [i][j];
        if (valor >= 0 && valor <= 26)
        {
            matrizResultante[i][j] = letras [valor];
        }
    }
}

Fica por sua conta entender o truque.

x111

entanglement:
Eu não disse para você fazer isso. Eu disse para fazer o seguinte:

char letras[] = "-ABCDEFGHIJKLMNOPQRSTUVWXYZ";

 for (int i =0; i < 3; i++)  
{  
    for (int j =0; j < 3; j++)  
    {  
        int valor = matrizResultante [i][j];
        if (valor >= 0 && valor <= 26)
        {
            matrizResultante[i][j] = letras [valor];
        }
    }
}

Fica por sua conta entender o truque.

É isso ai, 115 linhas reduzidas para 13. :smiley:

J

Vlw cara, vocês são bons.
Ou eu que tenho preguiça de pensar DKOASd.

Obrigado.

Criado 2 de setembro de 2011
Ultima resposta 2 de set. de 2011
Respostas 5
Participantes 3