Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.87
Salamnov
4 / 4 / 0
Регистрация: 29.03.2009
Сообщений: 37
#1

дешифратор цезаря - C++

18.06.2009, 02:37. Просмотров 3853. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
 
main(){
char abc[69]="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя.,\0",*strnew,*strold;
int i=0,j=0,n=69,k,len;
FILE *f1,*f2;
 
//clrscr();
printf("введите ключ k"); scanf("%i",&k); //ввод ключа
f1=fopen("C:\borlandc\f1.txt","r"); strold=fgetc(f1); //чтение из файла f1
len=strlen(char strold);//вычисление количества символов
for(j=0;j<len;j++){
     while(strold[j]!=abc[i]){i++;}  //i-poisk mesta v alf
         strnew[j]=abc[abs((j-k) mod n)]; //formula !!
     i=0;
}
        f2=fopen("c:\borlandc\f2.txt","w"); // создание файла f2
        fprintf(f2,"%s",strnew); //запись в файл
}----------------------------------------------------
пишу в borlandc

проблемы :

1) как организовать вычисление вычисления количества симовлов.
2) strnew[j]=abc[abs((j-k) mod n)]; //formula !! почему ругается???? как записать по другому
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2009, 02:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос дешифратор цезаря (C++):

Шифратор/Дешифратор шифра цезаря - C++
Не так уж и давно мне было необходимо создать шифратор в шифр цезаря(сори за тавтологию). Однако мне не удалось найти НИ ОДИН рабочий...

Дешифратор - C++
Здравствуйте, не могли бы вы мне помочь с данной программой в объяснении её где какие операции она совершает. Писал её я не сам, т.к. знаю...

Шифратор и дешифратор - C++
Помогите пожалуйста написать программу, которая зашифровывает файл и расшифровывает, заранее благодарю!

Дешифратор кода картинки.. - C++
Здраствуйте. Как то я вводил гдето код з картинки и мне стукнуло в голову. А почему би не написать програму которая бы розшыфровывала б...

Написать шифратор\дешифратор на С++ - C++
Напишите программу, выполняющую следующие действия (в начале программы выводится запрос о том, какое из действий необходимо выполнить): ...

Шифратор и дешифратор текста не работает - C++
Здравствуйте уважаемые форумчане, подскажите мне, не изучал С++ совсем, однако попросили написать программу. На этом форуме вроде нашёл...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
18.06.2009, 07:51 #2
Код
2) strnew[j]=abc[abs((j-k) mod n)]; //formula !! почему ругается???? как записать по другому
mod - это что такое? Если ругается, пиши, что конкретно пишет.
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
18.06.2009, 08:07 #3
может несовпадение типов
0
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
18.06.2009, 08:08 #4
Цитата Сообщение от Salamnov Посмотреть сообщение
for(j=0;j<len;j++){
while(strold[j]!=abc[i]){i++;} //i-poisk mesta v alf
strnew[j]=abc[abs((j-k) mod n)]; //formula !!
i=0;
}
ты уверен, что формула такая?
что здесь делает переменная i, если она в расшифровке не учавствует?
это, типа, задержка так организована??
0
Salamnov
4 / 4 / 0
Регистрация: 29.03.2009
Сообщений: 37
18.06.2009, 10:31  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
 
main(){
char abc[69]="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя.,\0",*strnew,*strold;
int i=0,j=0,n=69,k,len;
FILE *f1,*f2;
 
//clrscr();
printf("введите ключ k"); scanf("%i",&k); //ввод ключа
f1=fopen("C:\borlandc\f1.txt","r");[B] strold=fgetc(f1); //
len=strlen(strold);//вычисление количества символов
for(j=0;j<len;j++){
     while(strold[j]!=abc[i]){i++;}  //i-poisk mesta v alf
         [B]strnew[j]=abc[(j-k)%n][/B]; //formula !! здесь я исправил, я тут просто напутал, сделал как в паскале
     i=0;
}
        f2=fopen("c:\borlandc\f2.txt","w"); // создание файла f2
        fprintf(f2,"%s",strnew); //запись в файл
}----------------------------------------------------------------

Шифратор Цезаря. Разработать программу, которая кодирует вводимый с клавиатуры или из файла исходный текст f1 и сохраняет его в выходном файле f2. В шифре Цезаря каждая i-я буква алфавита в исходном тексте заменяется на i+k-ю, где k – смещение. Коды букв алфавита идут кругу, после буквы “я” идет буква “а”, таким образом, букву “я”, при k=2, будем кодировать буквой “б”. Шифрованный файл легко декодируется при известном k (программой в. 45.)
Дешифратор Цезаря. Разработать программу, которая при известном смещении k декодирует созданный предыдущей программой исходный текстовый файл f1 и сохраняет его в другом выходном файле f2.
0
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
18.06.2009, 14:21 #6
Код
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <conio.h>
 
int main()
{
 char *abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 int len=strlen(abc);
 char ch=0;
 int k=0;
 int i=0;
 int j=0;
 FILE *f1=0, *f2=0;
 
 printf("Enter key k: ");
 scanf("%i", &k);
 f1 = fopen("c:\\borlandc\\f1.txt", "r");
 f2 = fopen("c:\\borlandc\\f2.txt", "w");
 if (!f1 || !f2) 
 {
  printf("Open files fail.\n");
  return 0;
 }
 while (true)
 {
  ch=fgetc(f1);
  if (feof(f1)) break;
  for (i=0; i<len; i++)
  {
   if (ch == abc[i]) break;
  }
  if (i != len)
  {
   // Для шифратора
   j=(i+k)%len;
   if (j >= len) j-=len;
   // Для дешифратора
   //j=(i-k)%len;
   //if (j < 0) j+=len;
   ch=abc[j];
  }
  fputc(ch, f2);
 }
 return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2009, 14:21
Привет! Вот еще темы с ответами:

Шифратор/дешифратор, методом квадрата Виженера - C++
Необходимо написать программу шифратора и дешифратора с ключом, метод квадрат Виженера. Помогите, пожалуйста.

Не могу сделать дешифратор, есть код шифратора - C++
Здравствуйте, помогите плиз сделать дешифратор для этого кода, а то пробую но не выходит. #include &lt;stdio.h&gt; #include...

Шифр Цезаря - C++
Объясните пожалуйста есть формула для шифра Цезаря :En(x) = (x +n)mod26 почему в коде надо еще отнять 65, а потом прибавить. 65- это код...

Шифр Цезаря - C++
Ребята , помогите решить задачку, битый час сижу, не могу понять . Надо чтобы введенная буква алфавита сдвигалась на 3 буквы вперед...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.06.2009, 14:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru