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

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

Войти
Регистрация
Восстановить пароль
 
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
#1

Ошибка с "stdafx.h" - C++

01.02.2014, 02:34. Просмотров 1068. Ответов 8
Метки нет (Все метки)

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
#include <stdafx.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
int pole[7][7],q[7][7],a[7][7],u=0,p=0,w=0,e,sh=0,s=5,h,i,l=0,v,n=0,x,o,j,k,b,c,z=5;
srand(time_t(NULL));
for(i=1;i<6;i++)
for(j=1;j<6;j++)
q[i][j]=0;
for(k=0;z!=0;k++)
{
j=rand()%17-8;
i=rand()%17-8;
if(i>=1 && i<=5 && j>=1 && j<=5)
{
if(q[i][j]!=1)
{
q[i][j]=1;
z=z-1;
}
}
}
for(i=0;i<7;i++)
for(j=0;j<7;j++)
{
pole[i][j]=q[i][j];
}
printf ("\n");
 
for(i=1;i<6;i++)
{
for(j=1;j<6;j++)
printf ("%2i",a[i][j]);
 
printf ("\n");
}
for(k=0;k<999;k++)
{
printf ("KyDa BbICTPELITb?");
scanf_s ("%i",&i);
scanf_s ("%i",&j);
if(q[i][j]>=0 && i>=1 && i<=5 && j>=1 && j<=5)
{
p=i-1;
u=j-1;
if(q[i][j]==1)
{
printf ("BbI npourpaLu!\n");
for(i=1;i<6;i++)
{
for(j=1;j<6;j++)
printf ("%2i",pole[i][j]);
printf ("\n");
}
exit(0);
}
else
{
printf ("MuH HET!\n");
sh=sh+1;
if(sh==20)
printf ("BbI auea?aLu!");
exit(0);
}
q[i][j]=-1;
w=0;
for(i=p;i<p+3;i++)
for(j=u;j<u+3;j++)
//4*5
//678
if(q[i][j]==1)
w=w+1;
}
 
if(w==0)
w=-1;
a[p+1][u+1]=w;
for(i=1;i<6;i++)
{
for(j=1;j<6;j++)
printf ("%2i",a[i][j]);
printf ("\n");
}
printf ("\n"); 
}
printf ("OIIIu6KA!\n");
getch();
}



Вот то что у меня есть,ошибка с библиотекой stdafx.h,да и после моих манипуляций оно запустилось,но не работает так как надо.может кто помочь решить проблему,это сапер в консольном режиме.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 02:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка с "stdafx.h" (C++):

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

Не находит "stdafx.h", в чем ошибка? - C++
//--------------------------------------------------------------------------- //#include &quot;stdafx.h&quot; #include &lt;iostream.h&gt; #include...

Ошибка "stdafx.h: No such file or directory" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; char fun_zv(int _long) { return ('*'); } int...

не находит "stdafx.h"! в чем ошибка? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void Expectancy(); long MinK(); void SumUp(); void BuildBits();...

Ошибка с #include"stdafx.h" - C++
На что ругается? fatal error: stdafx.h: No such file or directory| #include&quot;stdafx.h&quot; #include&lt;stdio.h&gt; #include&lt;string.h&gt; ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
01.02.2014, 02:41 #2
ebywku, создай пустой проект и удали 1-ю строчку " #include <stdafx.h> ", навязанную студией, либо < > поменяй на " ", т.е.: #include "stdafx.h" - это пользовательский заголовочник, если мне не изменяет память (давно такого не видел (: ).
0
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
01.02.2014, 03:10 #3
если грубо, то мы видем
C++
1
2
3
4
5
6
7
8
9
10
#include <stdafx.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <string.h>
#include <conio.h>
срань господня...
дальше:
C++
1
printf ("\n");
зачем было
C++
1
using namespace std;
да что это вообще?
что за scanf_s ("%i",&i); ?
что за getch(); ?
да и весь этот бешенный набор инклудов, тут из С++ от силы 10% строчек, остальное бред собачи... ой, сишный

ну вот в чём по Вашему разница между time.h и ctime? а какое отношение к C++ имеет conio.h? да и про остальные *.h я молчу, их не должно быть вообще
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
01.02.2014, 03:20  [ТС] #4
простите,но на больше меня не хватило,потому к вам и обратился.

Добавлено через 1 минуту
я с удовольствием выслушаю всю вашу критику постараюсь исправить все
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
01.02.2014, 03:58 #5
abit, ты поворчать насчёт си зашёл? Все функции си поддерживаются и в плюсах и их стоит знать.
1
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
01.02.2014, 16:53 #6
abit, сам с такими мыслями код просматриваю, но все же - раздел соответствующий, поэтому так грубо критиковать не стоит, наверное
ebywku, я уже написал, что должно помочь. Это сапёр? С С++ неделю-две знакомы?
0
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
01.02.2014, 19:34 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ebywku, набросал свой вариант игры. Только он не завершенный:
- Нет проверки на наличие пустых соседних клеток при попадании в "0" клетку (т.е. клетку, рядом с которой нет мин).
- Нет проверки на победу в игре (принимается только поражение ).

Пример игры в действии - во вложенном файле.

Нет, мне не сложно её дописать - но тогда вам не интересно будет разбирать её исходный код. А поставив задачу - покопаетесь в коде, лучше освоитесь.

Кликните здесь для просмотра всего текста

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
#include <iostream> // подключаем для ввода-вывода инфорации
#include <clocale> // для поддержки русского языка
#include <cstdlib> // для генерации случайных чисел
#include <vector> // для работы с матрицами (игровое поле)
#include <ctime> // понадобится для генерации "семени" в srand()
#include <algorithm> // для работы с игровым полем
#include <cmath> // ну, понадобился мне модуль числа :)
#include <iomanip> // для форматированного ввода-вывода
 
typedef std::vector<std::vector<std::pair<int, bool>>> field; // тип игрового поля
struct POINT { int x, y; }; // точки попадания
 
// проверяем правильность введенных данных
bool check_pos(POINT pos, int size);
// Генерация игрового поля. Принимает размер и количество мин
field generate_game(int size, int count);
// Ожидание при завершении программы
void end_game();
// Вывод игрового поля
void print(field matrix, bool status = false);
// Основной цикл игры
void begin_game(field matrix);
 
// входная функция
int main()
{
    field matrix = generate_game(7, 10); // генерируем игровое поле (7х7, 10 мин)
    begin_game(matrix); // запускаем игровой цикл
    end_game(); // пауза перед завершением
    return 0;
}
 
// проверяем правильность введенных данных
bool check_pos(POINT pos, int size)
{
    if(pos.x>=0 && pos.x<size)
        if(pos.y>=0 && pos.y < size)
            return true;
    return false;
}
 
// Генерация игрового поля. Принимает размер и количество мин
// Возвращает, соответственно, игровое поле в виде двумерного массива (контейнера)
field generate_game(int size, int count)
{
    field matrix(size, std::vector<std::pair<int, bool>>(size, std::make_pair(0, false))); // игровое поле
    std::vector<std::pair<int, int>> mines; // координаты мин на игровом поле
    std::srand(static_cast<unsigned int>(std::time(NULL))); // задаём семя для генератора случайных чисел
 
    for(int i=0; i<count; ++i) { // произвольно располагаем мины
 
        int x = rand()%size;
        int y = rand()%size;
 
        if(matrix[x][y].first == 0) { // свободна ли клетка?
            matrix[x][y].first = -1; // -1 на игровом поле - мина
            mines.push_back(std::make_pair(x, y)); // добавляем координаты мины
        }
        else
            --i; // если клетка занята - повторяем итерацию цикла
    }
    
    // располагаем цифры на игровом поле, определяющие позиции мин
    for(int i=0; i<size; ++i)
        for(int j=0; j<size; ++j) {
            if(matrix[i][j].first ==-1) continue;
            int t = 0;
            for(auto p : mines) {
                if(std::abs(p.first-i)<2 && std::abs(p.second-j)<2)
                    ++t;
            }
            matrix[i][j].first = t;
        }
 
    return matrix; // возвращаем игровое поле
}
 
// Ожидание при завершении программы
void end_game()
{
    std::cout << std::endl;
    std::system("pause");
}
 
// Вывод игрового поля
void print(field matrix, bool status)
{
    using std::cout;
    cout << std::endl;
 
    std::for_each(matrix.begin(), matrix.end(), [=](std::vector<std::pair<int, bool>>& row)
    {
        std::for_each(row.begin(), row.end(), [=](std::pair<int, bool> value)
        {
            if(value.second || status) {
                if(value.first == -1)
                    cout << std::setw(3) << "*";
                else
                    cout << std::setw(3) << value.first;
            }
            else
                cout << std::setw(3) << "#";
        });
        cout << std::endl;
    });
}
 
// Основной цикл игры
void begin_game(field matrix)
{
    using std::cin; using std::cout; // Здесь их часто используем
 
    std::setlocale(LC_ALL, "rus");
    POINT pos;
    bool status = false;
 
    while(true)
    {
        print(matrix);
        cout << "--------" << std::endl;
        cout << "Координаты точки попадания (Пример: 2 3 ): ";
        cin >> pos.x >> pos.y;
        --pos.x; --pos.y;
        
        if(!check_pos(pos, matrix.size())) {
            cout << "Введены некорректные данные. Повторите ввод.";
            continue;
        }
 
        if(matrix[pos.x][pos.y].second) {
            cout << "Вы уже стреляли сюда. Повторите ввод.";
            continue;
        }
 
        if(matrix[pos.x][pos.y].first == -1) {
            cout << "Вы попали в мину!";
            print(matrix, true);
            break;
        }
 
        else matrix[pos.x][pos.y].second = true;
    }
 
    if(!status)
        cout << "Вы проиграли";
    else
        cout << "Вы выиграли";
 
}


У вас проблемы с подключением заголовочных файлов - не пожалел времени на комментирование, зачем подключаем тот или иной файл.

Логика программы:
- создаётся двумерный массив (игровое поле), каждая ячейка которого содержит 2 переменные: int и bool.
Первое значение int - содержит количество мин рядом с этой ячейкой (либо -1, если сама является миной).
Второе значение bool - содержит значение попадания по этой клетке (false - еще не попадали, true - попадали).

- запускается бесконечный цикл, который принимает от игрока координаты ячеек, фильтрует их и выдает результаты.


В общем, вроде всё. Будут вопросы - пишите )
P.s: код в истинном стиле C++ - не пугайтесь. Вроде бы
P.s.s: кстати, была мысль загнать весь функционал в свою область имен, но, передумал, решив, что и так код может показаться сложным для понимания.
1
Миниатюры
Ошибка с "stdafx.h"  
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
02.02.2014, 00:17  [ТС] #8
да месяц почти,до этого просто на С пытался,но так к успеху не дошел.Спасибо за код и за критику)

Добавлено через 4 часа 1 минуту
Простите,а в какой среде вы работаете?
Ибо мои билдеры выдают ошибки
0
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
02.02.2014, 09:15 #9
ebywku, код скомпилируется на любом компиляторе, поддерживающем стандарт С++11.
Например, этот код писал в 12-й студии. Если используете компилятор mingw или gcc, проверьте, используется ли флаг поддержки стандарта C++11.

Добавлено через 3 минуты
Аа.. у вас же студия. Создайте пустой проект и с ним уже работайте.
Либо в начале всех инклудов добавьте:
C++
1
#include "stdafx.h"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2014, 09:15
Привет! Вот еще темы с ответами:

Не открывается библиотека 'stdafx.h' и "char" не работает с параметром "char*" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cstring&gt; using namespace std; int one(char fam) //...

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

Не удается открыть источник файл "stdafx.h" и не только - C++
Вообщем ситуация: написал код в универе на visual studio 2008, пришел домой, скопировал этот же код в 2013 версию и получил следующие...

экспрес ругается на #include "stdafx.h". Что делать? - C++
запуская программу в ВС Экспресс 2008. выдает вот такую ошибку: что делать,расскажите пожалуйста) Добавлено через 4 минуты ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.02.2014, 09:15
Ответ Создать тему
Опции темы

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