Изменение регистра введенных букв - C#
Формулировка задачи:
Добрый день. Есть задание:
Числовые значения символов нижнего регистра в коде ASCII отличаются
от значении символов верхнего регистра на величину 32. Следовательно,
для конвертирования символа нижнего регистра и символ верхнего
регистра необходимо вычесть из его значения число 32. Используя
эту информацию, напишите программу, которая читает символы, вводимые
с клавиатуры. Программа должна конвертировать все символы
нижнего регистра в символы верхнего регистра и наоборот, выводя на
экран результат. При этом все остальные символы остаются неизменными.
Программа должна прекращать работу, когда пользователь вводит
символ точки (.). В завершение работы программа должна вывести
информацию о количестве измененных символов.
Такой код я навоял:
Не могу понять в чем ошибка. почему при вводе символа цикл делает по три прохода? Счетчик соответственно утраивается.
using System;
class BigLetter
{
public static void Main()
{
int e, count = 0;
char i;
for (; ;)
{
Console.WriteLine("Введите символ");
e = Console.Read();
if (e >= 65 && e <= 90)
{
e += 32;
i = (char)e;
Console.WriteLine(i);
}
else if (e >= 97 && e <= 122)
{
e -= 32;
i = (char)e;
Console.WriteLine(i);
}
else if (e == 46)
{
break;
}
else
{
i = (char)e;
Console.WriteLine(i);
}
count++;
}
Console.WriteLine("Всего введено " + count + " символов");
}
}Решение задачи: «Изменение регистра введенных букв»
textual
Листинг программы
using System;
class BigLetter
{
public static void Main()
{
int e, count = 0;
char i;
do
{
Console.WriteLine("Введите символ");
do
{
e = Console.Read();
i = (char)e;
} while (i == '\n' | i == '\r');
if (e >= 65 && e <= 90)
{
e += 32;
i = (char)e;
Console.WriteLine(i);
count++;
}
else if (e >= 97 && e <= 122)
{
e -= 32;
i = (char)e;
Console.WriteLine(i);
count++;
}
else if (e == 46)
{
break;
}
else
{
i = (char)e;
Console.WriteLine(i);
}
} while (e != 46);
Console.WriteLine("Всего введено " + count + " символов");
}
}