Cezar cipher in C# - (Error Unable to convert String to Char)

Asked

Viewed 260 times

1

Cezar cipher in C# - (Error Unable to convert String to Char)

Hello, I have a college exercise that Voce type a word and it plays the translation according to the displacement informed.

If you type AB and the offset is 3 then the translation is A+3 and B+3 from the letters of the alphabet, leaving translation: DE

For that I recorded the whole alphabet, and then I looked for the letter typed in the alphabet and I saw her Inudice in the alphabet, so I added her Inudice with the displacement, and I looked in the alphabet for the substitudes.

But besides not being able to finish the code correctly, it is giving an error of not possible to convert string to char type, and I do not know where rays the program is identifying a char type.

Someone can fix my mistake or code ?

Follow the code below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EXER03
{
    class Program
    {
        static void Main(string[] args) {
            //DECLARACAO DE VARIAVEIS
            string letra_substituta, letra, message, traducao;
            int z, indice, deslocamento;
            string[] alfabeto = new string[24];

            //CARREGA VETOR COM O ALFABETO
            biblioteca(alfabeto);

            do {
                //INICIO DO WHILE ONDE PERGUNTA O VALOR DO DESLOCAMENTO E A PALAVRA
                traducao = "";
                Console.WriteLine("Defina o numero de deslocamento:");
                deslocamento = Convert.ToInt16(Console.ReadLine());

                Console.Write("Digite a palavra: \n");
                message = Console.ReadLine();

                for (int i = 0; i < message.Length; i++) {
                    //ISSO EH PRA QUANDO ACABAR Z VOLTAR PARA A
                    if (i <= 24) {
                        indice = i;
                    } else {
                        indice = i - 24;
                    }
                    //CAPTURA LETRA A SUBSTITUIR
                    letra=message[i];

                    //FAZ PESQUISA NA BIBLIOTECA E RETORNA LETRA SUBSTITUTA DA LETRA DO LOOP ATUAL
                    letra_substituta = pesquisa(alfabeto, indice, deslocamento);

                    //CONCATENA A VARIAVEL COM AS LETRAS SUBSTITUITAS
                    traducao += letra_substituta;

                    //ESCREVE NA TELA DADOS ENCONTRADOS
                    for (z = 0; z < alfabeto.Length;z++ ) {
                        if (alfabeto[z] == letra) {
                            indice = z;
                        }
                    }
                    Console.WriteLine("O indice do caracter ({0}) é {1}: ", message[i], z);
                    Console.WriteLine("Sua letra no alfabeto é: ({0})", letra_substituta);
                    Console.WriteLine("-------------------------");
                }

                //ESCREVE NA TELA A TRADUCAO
                Console.WriteLine("-------------------------");
                Console.WriteLine("Traducao: {0}", traducao);
                Console.WriteLine("-------------------------");
            } while (deslocamento >= 0);
            Console.ReadKey();
        }

        //FUNCAO DE PESQUISA QUE RETORNA LETRA SUBSTITUTA
        static string pesquisa(string[] alfabeto, int indice, int deslocamento) {
            string r;
            int x;

            //ATRIBUI INDICE DA LETRA ATUAL COM A SOMA DO VALOR DO DESLOCAMENTO
            x = indice + deslocamento;
            r = alfabeto[x];
            return r;
        }

        //BIBLIOTECA ONDE CADASTRA O ALFABETO NO VETOR ALFABETO
        static void biblioteca(string[] alfabeto) {
            alfabeto[0] = "a";
            alfabeto[1] = "b";
            alfabeto[2] = "c";
            alfabeto[3] = "d";
            alfabeto[4] = "e";
            alfabeto[5] = "f";
            alfabeto[6] = "g";
            alfabeto[7] = "h";
            alfabeto[8] = "i";
            alfabeto[9] = "j";
            alfabeto[10] = "k";
            alfabeto[11] = "l";
            alfabeto[10] = "m";
            alfabeto[11] = "n";
            alfabeto[12] = "o";
            alfabeto[13] = "p";
            alfabeto[14] = "q";
            alfabeto[15] = "r";
            alfabeto[16] = "s";
            alfabeto[17] = "t";
            alfabeto[18] = "u";
            alfabeto[19] = "v";
            alfabeto[20] = "x";
            alfabeto[21] = "w";
            alfabeto[22] = "y";
            alfabeto[23] = "z";
        }

    }
}
  • I fixed it! letter = message[i]. Tostring();

  • André, Welcome. Please put this comment with the problem solution in an answer. And if possible explain better, so it can be useful to others who have similar problems.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.