Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 19.02.2008, 16:09   #1
Hakman
Пользователь
 
Регистрация: 19.02.2008
Сообщений: 13
Стрелка Операции с массивами

Приветствую. Нужен пример кода для следующего случая:
Есть массивы char mass[100] и mass2[100]. Забиваю туда строку через gets. Нужен код который сконвертирует эту строку в числовой массив, т.е. необходимо каждой букве поставить в соответствие определенную цифру. Потом я эти 2 массива сложу и получится у меня mass3[i]=mass[1]+mass2[i]. Затем нужно сконвертить наоборот, третий массив в буквы, т.е. если в массиве есть число 2, то это буква "А", 3- "B" и тд. Помогите пожалуйсто, а то слабоват я.
P.S.: вобщем шифр Виженера реализую.
Да, и еще, как сохранить значения массива в файл/взять из файла?
Заранее спасибо.
Hakman вне форума Ответить с цитированием
Старый 19.02.2008, 16:49   #2
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 129
По умолчанию

Может лучше record использовать? Сразу данные будут и символ и его числовое значение.

type TMyMas = record
ch: char;
num: integer;
end;
var MyArray: array [0..10] of TMyMas;
knight вне форума Ответить с цитированием
Старый 19.02.2008, 16:56   #3
Hakman
Пользователь
 
Регистрация: 19.02.2008
Сообщений: 13
По умолчанию

забыл сказать, язык Borland C++ 3.1

Последний раз редактировалось Hakman; 19.02.2008 в 17:44.
Hakman вне форума Ответить с цитированием
Старый 19.02.2008, 17:31   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Hakman, не забывайте, что "буквы" - это тоже числа и, например, запись
Код:
char cLetter = 'A' - 63;
в C вполне правомерна и дает в результате 2. Ну а если линейной зависимости у Вас там не наблюдается, то вполне можно просто объявить некий массив
Код:
long nCode[256];
и заполнить его по принципу:
Код:
nCode[0] = 0;
nCode['A'] = 2;
nCode['B'] = 3;
//........
nCode['Z'] = 88;
B_N вне форума Ответить с цитированием
Старый 19.02.2008, 17:41   #5
Hakman
Пользователь
 
Регистрация: 19.02.2008
Сообщений: 13
По умолчанию

Код:
nCode[0] = 0;
nCode['A'] = 2;
nCode['B'] = 3;
//........
nCode['Z'] = 88;
[/QUOTE]

Хмм... не совсем понял, поясните пожалуйста как этим можно воспользоваться, чтобы перевести тот текст что я ввел руками в цифры? Просто не пойму как прочесть эту запись.
ЗЫ: ASCII использовать не надо, т.к. у Виженера другой алфавит. В дальнейшем нужно будет криптоанализом заняться этого метода, а с алфавитом 156 символов это будет гораздо сложнее нежели 24 =)

Последний раз редактировалось Hakman; 19.02.2008 в 17:43.
Hakman вне форума Ответить с цитированием
Старый 19.02.2008, 17:50   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Вы написали:
Цитата:
Нужен код который сконвертирует эту строку в числовой массив
, а я Вам пишу, что "текст" - это уже числа, над которыми можно производить арифметические действия. А какой там алфавит - не так уж и важно (насколько я помню, это видоизмененный шифр Цезаря).
B_N вне форума Ответить с цитированием
Старый 19.02.2008, 18:08   #7
Hakman
Пользователь
 
Регистрация: 19.02.2008
Сообщений: 13
По умолчанию

я не понял кода вашего на самом деле, вы что, создали масиив, забили туда алфавит и поставили в соответствие новое число? Мне просто не понятно, извините что возможно элементарные для вас вещи стпрашиваю.
Hakman вне форума Ответить с цитированием
Старый 19.02.2008, 18:15   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Hakman Посмотреть сообщение
я не понял кода вашего на самом деле, вы что, создали масиив, забили туда алфавит и поставили в соответствие новое число? Мне просто не понятно, извините что возможно элементарные для вас вещи стпрашиваю.
Ну да. В качестве примера. Вы же хотите отобразить числа на буквы и наоборот - чем не вариант - таблица перекодировки одного в другое. Но это, опять же, если нет четкой зависимости, которую и так можно вычислить (отнимая, прибавляя и т.п. числа и символы между собой), а здесь она кажется есть, я просто не помню точно Виженеровский алгоритм, а смотреть сейчас не хочется.
B_N вне форума Ответить с цитированием
Старый 19.02.2008, 18:38   #9
Hakman
Пользователь
 
Регистрация: 19.02.2008
Сообщений: 13
По умолчанию

Я могу ввести теперь туда любую фразу и она при сложении с таким же масивом даст в сумме нужное число?
т.е. массив mass1[abc] = mass1[123]?
если 'a'=1, 'b'=2 и тд. но мне нужно потом два таких массива сложить и получившиеся суммарные значения перевести совсем в другой алфавит.
Hakman вне форума Ответить с цитированием
Старый 19.02.2008, 18:53   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
массив mass1[abc] = mass1[123]
Так, конечно, нельзя, а вот так:
Код:
char i;
for(i = 'a'; i <= 'c'; i++) mass3[i]=mass[1]+mass2[i]; // взято из первого поста
Прочитайте еще раз, с чего Вы начали:
Цитата:
необходимо каждой букве поставить в соответствие определенную цифру
Ну так и поставьте каждой букве в соответствие число (если я правильно понимаю, а не цифру). Забейте, скажем в виде массива, как я писал в четвертом посте, таблицу перекодировки букв в числа, и выбирайте потом посимвольно строку и берите соответствующий этому символу элемент массива. Вы бы привели свой код, а то, кажется, мы друг друга не понимаем.
B_N вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ветвления (условные конструкции) и операции с массивами! Leizar Microsoft Office Excel 2 23.05.2008 09:25
операции увеличения в с++ JOFRIF Помощь студентам 8 26.04.2008 20:25
Операции с массивами Stelix Помощь студентам 3 26.03.2008 23:11
Битовые операции LEX.darnica Помощь студентам 14 23.12.2007 20:40
Операции над данными yulia БД в Delphi 24 21.05.2007 01:18


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS