C++ ideia para resolver [RESOLVIDO]

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:

[code]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’;
}

    }
}[/code]

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

Obrigado.

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’.

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.

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.

[quote=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. [/quote]

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

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

Obrigado.