Вопрос по информатике:
Переделать из программы Pascal в C#
Задание: Шифр атбаш
const
s1='ABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; s2='ZYXWVUTSRQPONMLKJIHGFEDCBAяюэьыъщшчцхфутсрпонмлкйизжедгвба'; var
i,p:integer;
s:string;
begin
Write('Введите текст: '); Readln(s);
for i:=1 to Length(s) do
begin
p:=Pos(s[i],s1);
if p>0 then s[i]:=s2[p]
end;
Writeln('Результат: ',s)
end.
- 24.12.2017 00:34
- Информатика
- remove_red_eye 17665
- thumb_up 25
Ответы и объяснения 1
На самом деле, n - i — смещение относительно первой буквы, которое будет иметь i-тая в алфавите буква после шифровки. Для того, чтобы получить номер буквы, нужно прибавить к смещению порядковый номер первой буквы. В случае с обычным алфавитом — 1. (А ещё можно делать наоборот: искать отрицательное смещение и прибавлять номер последнего элемента)
С программой все чуть-чуть посложнее (но не так, чтобы сильно). Номер символа в ней определяется не положением в алфавите, а используемой кодировкой. Обычно, символы идут в таблице кодировки друг за другом, но есть и исключения. Например, буква "ё" обычно идет отдельно от остального алфавита.
Программа читает стандартный ввод (клавиатура) построчно.
Если буквы латинские, достаточно простой арифметики с кодами символов и перевод результата в символьных формат.
Для русских символов выделена переменная, содержащая алфавит в правильном порядке (хотя можно было бы извернуться и решить первым способом, но зачем?). Если символ подходит входит в один из двух алфавитов, то шифруется. Нет - выводится без изменений.
Программа будет работать до тех пор пока не будет введен символ с кодом 0 (Ctrl + @).
//////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Brainly {
class Program {
static void Main(string[] args) {
string buff,
alfa = "абвгдеёжзийклмнопрстуфхцчъыьэюя", //алфавит
key = new string(alfa.ToCharArray().Reverse().ToArray());//перевернутый алфавит
bool isEnd = false;
while (!isEnd) {
Console.Write("Введите текст: ");
buff = Console.ReadLine();
Console.Write("Результат: ");
for (int i = 0; i < buff.Length; ++i) buff[i] == 'ё')
Console.Write(key[alfa.IndexOf(buff[i])]);
else if (buff[i] >= 'А' && buff[i] <= 'Я'
Console.WriteLine(); Console.WriteLine();
}
}
}
}
- 25.12.2017 20:41
- thumb_up 38
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.