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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.88
Roger7
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
#1

Шифр Цезаря - C++

26.10.2009, 17:51. Просмотров 5909. Ответов 8
Метки нет (Все метки)

text - исходный
code - закодированный
decode - дешифрованный

после компиляции в файл code в конец ложится пробел, откуда он берется!?! Соответственно и при декодировании пробел превращяетс в нечто ненужное !! Рудз


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// ================ Coding and decoding "Cesaer" ==========================
 
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{
 
   int key;
   char s;
 
   FILE *text, *code, *decode;
 
   text = fopen("d:\\text.txt", "r");
   code = fopen("d:\\code.txt", "w+");
   decode = fopen("d:\\decode.txt", "w+");
 
   cout << "Enter the key: ";
   cin >> key;                  // key of coding
 
//======================= Coding =================================
 
   while(!feof(text))
      {
                 s = getc(text);
         s += key;
         putc(s,code);
      }
 
   fclose(text);
   fclose(code);
 
//======================= Decoding  ==============================
 
   code = fopen("d:\\code.txt", "r");
 
 
   while(!feof(code))
        {
 
         s = getc(code);
         s -= key;
         putc(s,decode);
        }
 
   fclose(code);
   fclose(decode);
 
   cout << "Coding..." << endl;
   cout << "Decoging..." << endl;
   cout << "Coding and decoging done!";
 
   getch ();
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2009, 17:51     Шифр Цезаря
Посмотрите здесь:

Шифр цезаря. Кодировка - C++
Народ подскажите пожалуйста как сделать так что бы при букве &quot;z&quot; он кодировал в букву &quot;a&quot; при заданном шаге +1 например :( Программа...

Шифр цезаря на кириллице - C++
Собственно нужно написать программу, которая из текстового файла берет текст, и шифром цезаря (путем сдвига символов) шифрует текст. С...

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

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

Кириллица. Шифр Цезаря - C++
В общем, аналогичный код с латинскими буквами отлично работает, а с кириллицей выдает полную ахинею(читал, что символы кириллицы...

Шифр сдвига (Цезаря) - C++
скажите как сделать шифр в кольце 26(для латиницы), т.е. чтобы последняя буква в первую переходила int main() { ...

Шифр Цезаря (пароль) - C++
Помогите сделать, пожалуйста. Чтобы пароль заменялся звездочками. П.5.18 Правил Запрещено размещать задания и решения в виде картинок...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 18:04     Шифр Цезаря #2
в файле text в конце строки стоит перенос на другую строку? Если нет, то возможно дело в том, что последним считанным символом из файла будет EOF, который в текущей итерации видимо запишется в виде пробела ( http://www.codenet.ru/progr/cpp/spru/getc_-_getchar.php ). попробуй добавить условие
C
1
2
3
4
5
6
while(!feof(code))
{
s = getc(code);
s -= key;
if (!feof(code)) putc(s,decode);
}
или второй вариант - добавить в условия циклов
C
1
2
3
4
5
while ((s = getc(code)) != EOF)
{
s -= key;
putc(s,decode);
}
Roger7
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
27.10.2009, 18:15  [ТС]     Шифр Цезаря #3
Вы были правы насчет EOF!!! Первый вариант работает как надо! Большое спасибо, завтра с чувством выполненого долга пойду сдавать эту лабу!!! Еще раз спасибо)
Roger7
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
29.10.2009, 17:53  [ТС]     Шифр Цезаря #4
Как сделать так чтоб путь к файлам вводился пользователем через консоль!!!???

Пример(консоль):

Введите путь к исходному тексту:
d:\\text.txt
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
29.10.2009, 17:56     Шифр Цезаря #5
самый простой способ
C
1
2
3
char filepath[256];
printf("Введите путь к исходному тексту:\n");
scanf("%s",&filepath);
но тут ограничение в 256 символов на путь, если есть другой способ или через string, поправьте меня
Roger7
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
29.10.2009, 18:10  [ТС]     Шифр Цезаря #6
Вот так было:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int key;
   char s;
 
   FILE *text, *code, *decode;
 
   text = fopen("d:\\text.txt", "r");
   code = fopen("d:\\code.txt", "w+");
   decode = fopen("d:\\decode.txt", "w+");
 
   cout << "Enter the key: ";
   cin >> key;                  // key of coding
 
//======================= Coding =================================
 
   while(!feof(text))
      {
         s = getc(text);
         s += key;
         if (!feof(code)) putc(s,code);
      }
 
   fclose(text);
   fclose(code);
А с тем что я хочу так???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int key;
   char s, fileTEXT[256], fileCODE[256], fileDECODE[256];
 
   printf("Введите путь к исходному тексту:\n");
   scanf("%s",&fileTEXT);
 
   printf("путь к файлу с закодированным текстом\n");
   scanf("%s",&fileCODE);
 
  printf("путь к файлу с декодированным текстом\n");
   scanf("%s",&fileDECODE);
  
 
 cout << "Enter the key: ";
   cin >> key;                  // key of coding
 
//======================= Coding =================================
while(!feof( )) Вот тут как прописать с чем работать??? &fileTEXT??
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
29.10.2009, 18:16     Шифр Цезаря #7
ну вот как-то так, в цикле в функции feof должен быть указатель, т.е. остается как есть.
C
1
2
3
4
5
6
7
8
9
10
11
12
   char s;
   char s, fileTEXT[256], fileCODE[256], fileDECODE[256];
   printf("Введите путь к исходному тексту:\n");
   scanf("%s",&fileTEXT);
   printf("путь к файлу с закодированным текстом\n");
   scanf("%s",&fileCODE);
   printf("путь к файлу с декодированным текстом\n");
   scanf("%s",&fileDECODE);
    FILE *text, *code, *decode;
    text = fopen(fileTEXT, "r");
   code = fopen(fileCODE, "w+");
   decode = fopen(fileDECODE, "w+");
Roger7
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
29.10.2009, 18:28  [ТС]     Шифр Цезаря #8
Спасибо! Займусь внедрением... =) Отвечу позже!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2009, 15:41     Шифр Цезаря
Еще ссылки по теме:

шифр Цезаря с русским алфавитом - C++
Всем добрый вечер... мне не очень удобно просить, но у меня появилась одна поблемка... есть программа написанная на C# на Visual 2010, а...

Шифр замены(код Цезаря) - C++
Привет всем!!! Шифр замены(код Цезаря) Занумеровать алфавит исходного сообщения. Пусть m-длина алфавита сообщения; n,k-целые числа и...

Помогите реализовать шифр цезаря - C++
Помогите написать графическую программу, которая шифрует слова шифром Цезаря.Шифр Цезаря — один из древнейших шифров. При шифровании...

Шифр Цезаря. Чтение из файла - C++
Задача заключается в том, что нужно из определенного файла достать текст и расшифровать его или зашифровать шифром Цезаря. Текст написан на...

Шифрование/дешифрование текста: шифр Цезаря - C++
8. Написать программу, которая позволяет зашифровывать и расшифровывать с помощью «шифра Цезаря» сообщение, написанное на русском языке....


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

Или воспользуйтесь поиском по форуму:
Roger7
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
30.10.2009, 15:41  [ТС]     Шифр Цезаря #9
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// ================ Coding and decoding "Cesaer" ==========================
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{
 
   int key;
   char a, fileTEXT[256], fileCODE[256], fileDECODE[256];
 
   printf("Adress of text: \n");
   scanf("%s", &fileTEXT);
 
   printf("Adress of code: \n");
   scanf("%s", &fileTEXT);
 
   printf("Adress of decode: \n");
   scanf("%s", &fileTEXT);
 
 
   FILE *text, *code, *decode;
 
   text = fopen(fileTEXT, "r");
   code = fopen(fileCODE, "w+");
   decode = fopen(fileDECODE, "w+");
 
   cout << "Enter the key: ";
   cin >> key;                            // key of coding
 
//======================= Coding =================================
 
   cout << "Coding..." << endl;
 
   while(!feof(text))
      {
                 a = fgetc(text);
         a += key;
           if (!feof(text))     fputc(a,code);
      }
 
   fclose(text);
   fclose(code);
 
//======================= Decoding  ==============================
 
   cout << "Decoging..." << endl;
 
   code = fopen(fileCODE, "r");
 
   while(!feof(code))
           {
                 a = fgetc(code);
         a -= key;
        if (!feof(code)) fputc(a,decode);
        }
 
   fclose(code);
   fclose(decode);
 
   cout << "Coding and decoging done!";
 
   getch ();
   return 0;
}
Не получилось!!! Не компилится чегото! Все таки дело наверное в адресах которые я через консоль хочу вводить!!! Может както не так??!!!
Yandex
Объявления
30.10.2009, 15:41     Шифр Цезаря
Ответ Создать тему
Опции темы

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