Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
1

Шифр Цезаря

26.10.2009, 17:51. Показов 7899. Ответов 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;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2009, 17:51
Ответы с готовыми решениями:

Шифр Цезаря
Здравствуйте. Написал программу, какая шифрует введенный текст сдвигом по алфавиту вправо, но она...

Шифр Цезаря С++
Уже долго сижу, мучаюсь. Не могу понять, что я делаю не так. Подскажите пожалуйста что неправильно,...

Шифр цезаря
Столкнулся с такой проблемой нужно &quot;Разработать прикладное приложение для шифрования текста с...

Шифр Цезаря
есть код программы для взлома Шыффра Цэзара но никак немогу доделать ее чтобы взломать строку ...

8
14 / 14 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 18:04 2
в файле text в конце строки стоит перенос на другую строку? Если нет, то возможно дело в том, что последним считанным символом из файла будет EOF, который в текущей итерации видимо запишется в виде пробела ( http://www.codenet.ru/progr/cp... etchar.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);
}
1
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
27.10.2009, 18:15  [ТС] 3
Вы были правы насчет EOF!!! Первый вариант работает как надо! Большое спасибо, завтра с чувством выполненого долга пойду сдавать эту лабу!!! Еще раз спасибо)
0
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
29.10.2009, 17:53  [ТС] 4
Как сделать так чтоб путь к файлам вводился пользователем через консоль!!!???

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

Введите путь к исходному тексту:
d:\\text.txt
0
14 / 14 / 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, поправьте меня
0
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??
0
14 / 14 / 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+");
1
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 11
29.10.2009, 18:28  [ТС] 8
Спасибо! Займусь внедрением... =) Отвечу позже!
0
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;
}
Не получилось!!! Не компилится чегото! Все таки дело наверное в адресах которые я через консоль хочу вводить!!! Может както не так??!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2009, 15:41

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

Шифр Цезаря
Здравствуйте. Помогите, пожалуйста. Необходимо сделать так, чтобы шифр не вылезал за рамки...

Шифр Цезаря
Створити програму, що реалізовує алгоритм дешифрування Цезаря, для латинського алфавіту з...

C++ Шифр Цезаря
Help нужно написать программу на С++, которая шифрует русские и английские слова. Делает запрос на...

Шифр Цезаря
Вот есть готовый код программы, может, кому понадобиться:) #include&lt;iostream&gt; #include&lt;conio.h&gt;...

Шифр Цезаря
Доброго времени суток всем Задача состоит в том,чтобы считать txt,и зашифровать его шифром...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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