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

Код Цезаря для кириллицы. Работа с файлами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выдать строку из которой удалены все слова равные по длине последнему слову строки http://www.cyberforum.ru/cpp-beginners/thread1123983.html
2)Ввести строку. На печать выдать строку из которой удалены все слова равные по длине последнему слову строки. P.S: добрые люди, помогите, пожалуйста.
C++ Звуковые сигналы с++. Получение 8-битных звуков Сегодня на паре на с++ был минус 8-ми битный Гимн РФ, подскажите или дайте ссылку, хочу разобраться с звуковыми сигналами.) http://www.cyberforum.ru/cpp-beginners/thread1123975.html
Почленно умножить первый коэффицент массива на все коэффиценты другого массива C++
Помогите с написанием: Почленно умножить первый коэффицент массива на все коэффиценты другого массива. A * B = A * B + A * B + A * B и тд
Найти в списке из 7 слов все слова, состоящие из заданного количества букв C++
Как решить такое в Borland C++? что использовать строки или символы? какую команду использовать для определения количества букв в одном слове? помогите с кодом, пожааалуйстааааааа
C++ Указатель на еще необьявленную структуру http://www.cyberforum.ru/cpp-beginners/thread1123959.html
struct spisok_i { string tip ; int i; spisok_i *next_i ; spisok_f *next_f ; }; struct spisok_f
C++ Ошибка R6010 при запуске отладки. VS2012 Добрый день. Запускаю отладку следующего кода: #include "opencv\cv.h" #include "opencv\highgui.h" #include <stdlib.h> #include <stdio.h> IplImage* image = 0; IplImage* templ = 0; подробнее

Показать сообщение отдельно
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
19.03.2014, 16:15     Код Цезаря для кириллицы. Работа с файлами
Эта программа работает по принципу Шифра Цезаря. Пожалуйста, помогите разобраться что она делает последовательно.

Мне нужно чтобы она зашифровывала и расшифровывала файлы, но при запуске и вводе всех параметров она выдает "ERROR: Opening file". Я не понимаю, как подключить файлы, чтобы она работала. Вообще я думал, она должна сама их создавать, но видимо я ошибаюсь.

Вот сам код:

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
#include <ctype.h> 
int CheckAlpha(char ch); 
FILE *infile, *outfile; 
char Infilename[23]; 
char Outfilename[23]; 
 
int CheckCH(int ch) 
{ 
 if (((ch>=192)&&(ch<=223))|| ((ch>=224)&&(ch<=255))) return 1; 
 return 0; 
} 
 
void CheckFile() 
{ 
 if (((infile=fopen(Infilename,"r"))==NULL)) 
                       { 
                        printf("ERROR: Opening file\n"); 
                        exit(-1); 
                       } 
 else if (((outfile=fopen(Outfilename,"w"))==NULL)) 
                       { 
                        printf("ERROR: Create files\n"); 
                        exit(-1); 
                       } 
} 
 
 
 
void EnterInfo(int &k, int &wish) 
{ 
 printf("The Cipher Program"); 
 printf("\nEnter Input Filename:"); 
 scanf("%s",Infilename); 
 printf("\nEnter Output Filename:"); 
 scanf("%s",Outfilename); 
 printf("\nEnter 1 if you wish to encode Russian Alphabet"); 
 printf("\nEnter 2 if you wish to decode Russian Alphabet"); 
 printf("\nEnter your choice here:"); 
 scanf("\n%d",&wish); 
 printf("Enter k: "); 
 scanf("\n%d",&k); 
} 
 
 
void Encode(int k,int firstCH,int endCH,int APower) 
{ 
 int ch, firstch=firstCH+APower;; 
 
  CheckFile(); 
  while((ch=getc(infile))!=EOF) 
 { 
  if (CheckCH(ch)) { 
            if ((ch>=firstCH)&&(ch<=endCH)) 
             { 
              ch=firstCH+((ch+k-firstCH)%APower); 
              fprintf(outfile,"%c",ch); 
             } 
            else { 
                    ch=firstch+((ch+k-firstch)%APower); 
                    fprintf(outfile,"%c",ch); 
                  } 
               } 
  else { 
    fprintf(outfile,"%c",ch); 
        } 
 } 
  fclose(outfile); 
  fclose(infile); 
} 
 
void Decode(int k,int firstCH,int endCH,int APower) 
{ 
 int ch, endch=endCH+APower; 
 
  CheckFile(); 
  while((ch=getc(infile))!=EOF) 
 { 
  if (CheckCH(ch)) { 
            if ((ch>=firstCH)&&(ch<=endCH)) 
             { 
              ch=endCH+((ch-k-endCH)%APower); 
              fprintf(outfile,"%c",ch); 
             } 
            else { 
                   ch=endch+((ch-k-endch)%APower); 
                   fprintf(outfile,"%c",ch); 
                  } 
               }  
  else { 
    fprintf(outfile,"%c",ch); 
       } 
 } 
  fclose(outfile); 
  fclose(infile); 
} 
 
void main() 
{ 
 int k,wish; 
 int firstCH, endCH, endch, firstch, APower; 
 EnterInfo(k,wish); 
 
   switch (wish) 
   { 
    case 1:firstCH=192; endCH=223; APower=32; 
        Encode(k,firstCH,endCH,APower); 
        break; 
    case 2:firstCH=192; endCH=223; APower=32; 
        Decode(k,firstCH,endCH,APower); 
        break; 
   } 
}

Что делают эти функции?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void CheckFile() 
{ 
 if (((infile=fopen(Infilename,"r"))==NULL)) 
                       { 
                        printf("ERROR: Opening file\n"); 
                        exit(-1); 
                       } 
 else if (((outfile=fopen(Outfilename,"w"))==NULL)) 
                       { 
                        printf("ERROR: Create files\n"); 
                        exit(-1); //         Почему не return 0;?
                       } 
}
Еще больше всего меня интересует конец.

C++
1
2
3
4
5
6
7
8
9
 switch (wish) 
   { 
    case 1:firstCH=192; endCH=223; APower=32; 
        Encode(k,firstCH,endCH,APower); 
        break; 
    case 2:firstCH=192; endCH=223; APower=32; 
        Decode(k,firstCH,endCH,APower); 
        break; 
   }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru