Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 17
#1

Не находит "stdafx.h", в чем ошибка? - C++

22.12.2014, 22:50. Просмотров 1288. Ответов 14
Метки нет (Все метки)

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
//---------------------------------------------------------------------------
//#include "stdafx.h"
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
 
#include <conio.h>
using namespace std;
 
void VivodSimvolov (FILE *stream, int *x);          //Вывод символов
long Pow(int a, int b);                             //Возведение в степень
long FileSize(FILE *stream);                        //Размер файла (в байтах)
int Zapros(FILE **a, FILE **b, FILE **log);         //Выбор режима работы
int NumbOfBloks(FILE *a, long size);                //Определение числа блоков
void ZapolnT(int *x);                               //Заполнение блока T символами из входного файла (fi)
void ZapolnB();                                     //Заполнение блока B
void ZapolnA();                                     //Заполнение блока A
void ZapolnK(int *t);                               //Заполнение блока K
void Sum232();                                      //Сумматор по модулю Pow(2,32)=2^32
void ZapolnN();                                     //Заполнение накопителя
void UzliZamen();                                   //Прохождение заполнителя через узлы замен
void ZapolnN1();                                    //Преобразование результатов функции UzliZamen() в накопитель N1
void Sdvig11();                                     //Сдвиг на 11 бит влево. Результат сдвига - результа функции Фейстеля F(Ai,Ki)
void XOR(int *t);                                   //Ai+1 = Bi XOR F(Ai,Ki)
void SohrBnext(int *t);                             //Bi+1 = Ai
void SkleivanieAB();                                //Склеивание блоков. T=AB
void ViviodTexta(int *x);                           //Преобразование блока T в символы и вывод этих символов в выходной файл (fo)
 
FILE *log;                                          //Файл лога.
FILE *fi;                                           //Файловая переменная с открытым/расшифрованным текстом
FILE *fo;                                           //Файловая переменная с зашифрованным/расшифрованным текстом
int T[64],c[8],A[32],B[32],C[32],K[32],SUM32[32];   //Блоки для обработки битов
int N[8]={0,0,0,0,0,0,0,0},N1[32],F[32];            //Вспомогательные блоки (накопители)
unsigned long KEY[8]=                               //Ключ
{
    123456,
    654321,
    162534,
    111111,
    222222,
    333333,
    444444,
    555555
};                      
unsigned char ch;                                   //Символьная переменная (для обработки символов)
int n;                                              //Вспомогательная переменная
int blokN;                                          //Число блоков
long size;                                          //Размер файла в байтах
bool nekratno=0;                                    //Логическая переменная: 0 - если число символов кратно 8, 1 - если не кратно
int rejim;                                          //Выбор режима работы (1 - шифрование, 2 -расшифрование)
 
int TABLE[8][16]=                                   //Таблица замен
{ 
  4, 10,  9,  2, 13,  8,  0, 14,  6, 11,  1, 12,  7, 15,  5,  3,
 14, 11,  4, 12,  6, 13, 15, 10,  2,  3,  8,  1,  0,  7,  5,  9,
  5,  8,  1, 13, 10,  3,  4,  2, 14, 15, 12,  7,  6,  0,  9, 11,
  7, 13, 10,  1,  0,  8,  9, 15, 14,  4,  6, 12, 11,  2,  5,  3,
  6, 12,  7,  1,  5, 15, 13,  8,  4, 10,  9, 14,  0,  3, 11,  2,
  4, 11, 10,  0,  7,  2,  1, 13,  3,  6,  8,  5,  9, 12, 15, 14,
 13, 11,  4,  1,  3, 15,  5,  9,  0, 10, 14,  7,  6,  8,  2, 12,
  1, 15, 13,  0,  5,  7, 10,  4,  9,  2,  3, 14,  6, 11,  8, 12
};
//************************************************************************************
int main()
{
    rejim=Zapros(&fi,&fo,&log);     //Выбор режима работы (шифрование или расшифрование)
    blokN=NumbOfBloks(fi,size);     //Определение числа блоков
    
    for(int p=0;p<blokN;p++)        //Заполнение всех блоков T:
    {
        VivodSimvolov(fi,&p);
        ZapolnT(&p);                //Заполнение (p+1)-ого блока Т
        ZapolnB();                  //Заполнение блока B
        ZapolnA();                  //Заполнение блока A
        
        for (int t=1;t<=32;t++)     //Начало основного цикла:
        {
            fprintf(log,"\n%-2d*************************************",t);
            ZapolnK(&t);            //Заполнение ключа K
 
                                    //Функция Фейстеля:
            Sum232();               //1) Сумматор по модулю 2^32
            ZapolnN();              //2) Заполнение накопителя
            UzliZamen();            //3) Проход через узлы замен
            ZapolnN1();             //4) Заполнение выходного накопителя
            Sdvig11();              //5) Сдвиг на 11 битов влево    
                                    //Конец функции Фейстеля.
 
            for(int i=0;i<32;i++)   //Сохраняем блок A в C
                C[i]=A[i];
            XOR(&t);                //Двоичное исключающее "или" для Bi и F. Результат сохраняем в At+1
            SohrBnext(&t);          //Сохраняем At в Bt+1
 
            
        }                           //Конец основного цикла.
                                    
        SkleivanieAB();             //Склеивание блоков A33+B33
        ViviodTexta(&p);            //Вывод зашифрованного текста в выходной файл
    }                               //Конец алгоритма.
 
    return 0;
}
//************************************************************************************
long Pow(int a, int b)              //Возведение в степень
{
    long rez=1;
    for(int k=1;k<=b;k++)
    {
        rez=rez*a;
    }
    return rez;
}
 
long FileSize(FILE *stream)         //Размер файла (в байтах)
{
    long curpos, length;
    curpos = ftell(stream);         //Сохраняем значение указателя на символ
    fseek(stream, 0L, SEEK_END);
    length = ftell(stream);
    fseek(stream, curpos, SEEK_SET);//Возвращяемся на исходное место
    return length;
}
 
void VivodSimvolov (FILE *stream,int *x)    //Вывод символов
{
    unsigned char cc;
    long curpos;
    int d;
 
    curpos = ftell(stream);         //Сохраняем значение указателя на символ
 
    fprintf(log,"      ");
    if ((*x==blokN-1)&&(nekratno==1)) 
        d=FileSize(stream)%8;
    else
        d=8;
    for (int i=0;i<d;i++)
    {   
        cc=fgetc(stream);
        fprintf(log,"%8c",cc);      
    }
    if ((*x==blokN-1)&&(nekratno==1)) 
        for (int i=d;i<8;i++)
            fprintf(log,"%8c",' ');     
    
    fprintf(log,"\n");
    fseek(stream, curpos, SEEK_SET);//Возвращяемся на исходное место
}
    
int Zapros(FILE **a, FILE **b, FILE **log)      //Выбор режима работы
{
    int vib;
    char c;
    printf("Shifrovanie ili Deshifrovanie? ('1' i '2' sootvetstvenno): ");
    c=getch();
    printf("%c",c);
    if (c == '1')                               //Режим шифрования
    {
        *a=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\1.txt","rb");
        *b=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\2.txt","wb");
        *log=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\LogShifr.txt","wb");
        vib=1;
    }
    if (c == '2')                               //Режим расшифрования
    {
        *a=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\2.txt","rb");
        *b=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\3.txt","wb");
        *log=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\LogRasshifr.txt","wb");
        vib=2;
    }
    return vib;
}
 
int NumbOfBloks(FILE *a, long size)             //Определение числа блоков
{
    int n;
    size=FileSize(a);
    n=size/8;                                   //Сохраняем число ПОЛНЫХ (8-символьных) блоков
    if(size%8!=0)                               //Если число символов в файле не кратно 8, то увеличивыем число блоков
    {
        n++;
        nekratno=1;
    }
    fprintf(log,"%d %d\n",size,n);
    return n;
}
 
void ZapolnT(int *x)                        //Заполнение блока T символами из входного файла (fi)
{
    int d=FileSize(fi)%8;
    if((*x==blokN-1)&&(nekratno==1))        //Если идёт последний блок и число символов в файле не кратно 8 то:
        {
            for(int i=0;i<d;i++)
            {
                ch=fgetc(fi);               //Берем символ
                n=ch;                       //Сохраняем его номер
                for(int j=0;j<8;j++)        //Заполняем блок битами символов (число символов N<8)
                {
                    if(n/Pow(2,7-j)>=1)
                    {
                        T[8*i+j]=1;
                        n=n-Pow(2,7-j);
                    }
                    else
                        T[8*i+j]=0;
                }
            }
            for(int i=8*(d%8);i<64;i++)     //Заполняем оставшуюся часть блока нулями.
                T[i]=0;
        }
    else                                    //Иначе
        {
            for(int i=0;i<8;i++)
            {
                ch=fgetc(fi);               //Берем символ
                n=ch;                       //Сохраняем его номер
                for(int j=0;j<8;j++)        //Заполняем блок битами символов (число символов N=8)
                {
                    if(n/Pow(2,7-j)>=1)
                    {
                        T[8*i+j]=1;
                        n=n-Pow(2,7-j);
                    }
                    else
                        T[8*i+j]=0;
                }
            }
        }
    //Вывод блока Т
        fprintf(log,"Tnach ");
        for(int i=0;i<64;i++)
            fprintf(log,"%d",T[i]);
}
 
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2014, 22:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не находит "stdafx.h", в чем ошибка? (C++):

не находит "stdafx.h"! в чем ошибка?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void...

Ошибка "E1696 не удается открыть источник файл stdafx.h"
написал вот такую программку для записи в файл #include &lt;iostream&gt;...

Ошибка "stdafx.h: No such file or directory"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace...

Ошибка с #include"stdafx.h"
На что ругается? fatal error: stdafx.h: No such file or directory| ...

Структуры "Студент" и "Дата": с чем связана данная ошибка?
С чем связана данная ошибка?...

Ошибка при "сборке" Cannot open include file: 'stdafx.h': No such file or directory
Я полный ноль в C++=( Вот код:#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

14
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 17
22.12.2014, 22:51  [ТС] #2
если убрать эту строку то ругается на 130 строку
C++
1
curpos = ftell(stream);         //Сохраняем значение указателя на символ
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
22.12.2014, 23:14 #3
Это в какой среде?
1
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.12.2014, 23:18 #4
MicroL, stdafx.h это заголовок из Visual Studio.
0
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 17
22.12.2014, 23:21  [ТС] #5
с++
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
22.12.2014, 23:24 #6
Цитата Сообщение от MicroL Посмотреть сообщение
с++
С++ - это не среда. Код в чём делаете? Билдер?
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.12.2014, 23:25 #7
Цитата Сообщение от MicroL Посмотреть сообщение
с++
Это не среда, это язык.
0
oxyfat
66 / 63 / 21
Регистрация: 01.05.2014
Сообщений: 247
22.12.2014, 23:35 #8
у меня VC 2005, компилится без проблем с этими хидерами:
C++
1
2
3
4
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
0
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 17
23.12.2014, 00:03  [ТС] #9
Да, билдер

Добавлено через 7 минут
компиляция то проходит, но после выбора пунка, выдается критическая ошибка на 130 строку
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
23.12.2014, 00:30 #10
Цитата Сообщение от MicroL Посмотреть сообщение
C++
1
*a=fopen("C:\Users\Delta\Desktop\Новая папка\Новая папка\1.txt","rb");
Ты в Zapros() открытие файла для чтения не проверяешь, а это всегда делать нужно (как, впрочем, и для записи). Не знаю как в Билдере, но в других средах, в путях к файлу, обратные слеши двойными должны быть, прямые - одинарные.
0
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 17
23.12.2014, 14:30  [ТС] #11
Visual Studio.

Добавлено через 30 минут
точнее так. программа создана в Visual Studio. Пытаюсь запустить в Builder c++

Добавлено через 3 часа 16 минут
ничего не изменилось. все так же ругается
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,248
23.12.2014, 15:46 #12
Цитата Сообщение от MicroL Посмотреть сообщение
программа создана в Visual Studio. Пытаюсь запустить в Builder c++
Во время создания проекта вы оставили галочку на "Использовать предкомпилированный заголовок".
Можете пересоздать проект, убрав галочку во время создания. Если нужно работать лишь в билдере - просто удалите строки, содержащие инклюд данного файла.
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
23.12.2014, 16:46 #13
Цитата Сообщение от MicroL Посмотреть сообщение
ничего не изменилось. все так же ругается
Исправленный код выложи.

Добавлено через 49 секунд
Цитата Сообщение от MrGluck Посмотреть сообщение
Во время создания проекта вы оставили галочку на "Использовать предкомпилированный заголовок".
...
Цитата Сообщение от MicroL Посмотреть сообщение
компиляция то проходит, но после выбора пунка, выдается критическая ошибка на 130 строку
0
zss
Модератор
Эксперт С++
6956 / 6518 / 4138
Регистрация: 18.12.2011
Сообщений: 17,208
Завершенные тесты: 1
23.12.2014, 17:29 #14
Лучший ответ Сообщение было отмечено MicroL как решение

Решение

Обратные слаши надо ЭКРАНИРОВАТЬ!
И проверять, открылись ли файлы!
C++
1
2
3
4
5
6
7
8
if (c == '1')                               //Режим шифрования
    {
        (*a)=fopen("C:\\Users\\Delta\\Desktop\\Новая папка\\Новая папка\\1.txt","rb");
        if(*a==NULL)
            cout<<"open file error";
        else
        {
                  ................
1
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
23.12.2014, 17:39 #15
Цитата Сообщение от zss Посмотреть сообщение
Обратные слаши надо ЭКРАНИРОВАТЬ!
И проверять, открылись ли файлы!
...
Цитата Сообщение от lss Посмотреть сообщение
Ты в Zapros() открытие файла для чтения не проверяешь, а это всегда делать нужно (как, впрочем, и для записи). Не знаю как в Билдере, но в других средах, в путях к файлу, обратные слеши двойными должны быть, прямые - одинарные.
0
23.12.2014, 17:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 17:39
Привет! Вот еще темы с решениями:

Ошибка с "stdafx.h"
#include &lt;stdafx.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt;...

Написать программу,которая находит все слова,в которых буква "а" встречается больше чем один раз.
Есть строка,которая состоит из слов,разделенных любым количеством...

Не открывается библиотека 'stdafx.h' и "char" не работает с параметром "char*"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить...


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

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

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