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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.87
Salamnov
4 / 4 / 0
Регистрация: 29.03.2009
Сообщений: 37
18.06.2009, 02:37     дешифратор цезаря #1
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 !! почему ругается???? как записать по другому
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2009, 02:37     дешифратор цезаря
Посмотрите здесь:

Дешифратор кода картинки.. C++
Дешифратор C++
C++ Шифратор и дешифратор
Шифр цезаря C++
Написать шифратор\дешифратор на С++ C++
Шифратор и дешифратор текста не работает 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 - это что такое? Если ругается, пиши, что конкретно пишет.
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,614
18.06.2009, 08:07     дешифратор цезаря #3
может несовпадение типов
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, если она в расшифровке не учавствует?
это, типа, задержка так организована??
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.
Шерсть-На-Носу
 Аватар для Шерсть-На-Носу
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;
}
Yandex
Объявления
18.06.2009, 14:21     дешифратор цезаря
Ответ Создать тему
Опции темы

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