Algorytm Rot13 - czy ktoś mógłby sprawdzić napisany kod?

0

Cześć, prosiłbym o sprawdzenie Rot13:
Wynik na koniec przekazuję do labela2.Niestety nie chce się kompilować:

private void button1_Click_1(object sender, EventArgs e)
        {
            string str;
            str = textBox1.Text;
            char[] Array = str.ToCharArray();
            

            for(int i = 0; i < Array.Length; i++){
                if (str.Length >= 'a' && str.Length <= 'm' || str.Length >= 'A' && str.Length <= 'M')
                {
                    str += 13;
                }
               else if (str.Length >= 'm' && str.Length <= 'z' || str.Length >= 'M' && str.Length <= 'Z')
                {
                    str -= 13;
                }
                
                str = Convert.ToString(Array.Length);
            
            }

            label2.Text = str;
        }
1

Pomyśl sobie jakiś tekst. Teraz pomyśl sobie dowolną liczbę naturalną większą od 0. Jak już masz odejmij sobie od tekstu liczbę. Następnie pomyśl co jest nie tak w:
str -= 13;
Na przyszłość włącz sobie okienko Error List w VS i czytaj błędy i zamieszczaj je na forum. Właściwe formatowanie kodu to też fajna sprawa.
PS
Zamiast Convert.ToString(...) gdy masz typ prosty możesz użyć np. str.Length.ToString();

1
char[] Array = str.ToCharArray();

Dlaczego nazwę zmiennej lokalnej zaczynasz wielką literą, na dodatek nazywasz ją tak, jak istniejąca klasa? To może trochę utrudniać pisanie kodu.

if (str.Length >= 'a' && str.Length <= 'm' || str.Length >= 'A' && str.Length <= 'M')

Co chciałeś osiągnąć tym kodem? Czemu porównujesz długość napisu do znaku?

str = Convert.ToString(Array.Length);

Serio chcesz zamienić długość tablicy (która jest oczywiście liczbą) w napis?

1

Nie sprawdzane:

char[] array = textBox1.Text.ToCharArray();

for(int i = 0; i < array.Length; i++)
{
    if (array[i] >= 'a' && array[i] <= 'm' || array[i] >= 'A' && array[i] <= 'M')
    {
        array[i] += 13;
    }
    else if (array[i] >= 'n' && array[i] <= 'z' || array[i] >= 'N' && array[i] <= 'Z')
    {
        array[i] -= 13;
    }
}

label2.Text = Convert.ToString(array);
0

Dzieki za konstruktywne uwagi. Problem rozwiązany:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1