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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
tennisru
13 / 13 / 1
Регистрация: 10.09.2011
Сообщений: 179
#1

#include "StdAfx.h" и проблема цикал в компиляторе - C++

27.09.2011, 00:23. Просмотров 2224. Ответов 18
Метки нет (Все метки)

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
#include "StdAfx.h"
#include <iostream>
#include <fstream>
 
 
 
 
using namespace std;
int main()
{ 
        int x;
        int a[1000];
        ifstream in;
        ofstream out;
  in.open ("input.txt");
  out.open("output.txt");
  in >> x;
 
  out << x+x;
 
  in.close();
  out.close();
 
  return 0;
}
16): fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник.
вот что выдает но это же есть...
Еще что если простой цикл вызывает ошибку. например
C++
1
2
3
 j=8
for (int i=1 ,i<=j;i++);
 cin >> a[i];
этот цикл компилируется и после вызова ввести что нибудь выдает ошибку примерно через 2 секунды.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 00:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос #include "StdAfx.h" и проблема цикал в компиляторе (C++):

Что можно сказать об этом #include "stdafx.h" - C++
За что оно отвечает и где его можно использовать?! Много раз встречал но так и не понял зачем оно! #include &quot;stdafx.h&quot;

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

#include "stdafx.h" не видит - C++
мне нужно написать параллельную программу с очень большимы вычисления и я использую #include &quot;stdafx.h&quot; что бы было быстрее но вот что...

Ошибка с #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 ...

#include "stdafx.h" - C++
В моем самоучителе по С++ автор пишет, что можно #include &lt;iostream&gt; int main() { int integer1, integer2, sum;, а работает только...

18
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
27.09.2011, 00:55 #2
Это вообще не нужно #include "StdAfx.h". Уберите это.
Если у вас Visual Studio, то попробуйте Построение -> Построить решение или Построение -> Перестроить решение. Что-то должно помочь.
В других компиляторах найдите что-то подобное.
C++
1
2
3
j=8
for (int i=1 ,i<=j;i++);
 cin >> a[i];
А сколько в массиве элементов?
0
tennisru
13 / 13 / 1
Регистрация: 10.09.2011
Сообщений: 179
27.09.2011, 15:36  [ТС] #3
это имеет значение?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 16:02 #4
Цитата Сообщение от tennisru Посмотреть сообщение
for (int i=1 ,i<=j;i++);
Этот код не может компилироваться, т.к. содержит ошибку.
Если (вдруг, каким-то непостижимым образом) он скомпилировался, то ; в конце лишняя.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
27.09.2011, 18:23 #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Этот код не может компилироваться, т.к. содержит ошибку.
Если (вдруг, каким-то непостижимым образом) он скомпилировался, то ; в конце лишняя.
Вообще-то это работает. Никакая это не синтаксическая ошибка. Логическая - да, но не синтаксическая.
tennisru
Вам удалась запустить программу?

Вам надо убрать ; после цикла, ибо цикл срабатывает, а потом только один раз вводится элемент массива.
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 18:28 #6
У оператора for есть чёткая сигнатура:
for( инициализация ; условие ; инкремент ) тело.
Вариант for (int i=1 , i<=j; i++) не соответствует сигнатуре.
Следовательно, код нужно выкладывать копипастом, а не переписыванием, чтобы не искали ошибок, которых нет.

Добавлено через 2 минуты
Когда цикл завершается, i = 9. Соответственно, если массив а меньше 10, то программа имеет право на тебя обидеться.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
27.09.2011, 18:31 #7
.....
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 18:32 #8
Тело есть всегда. Двоеточие после скобки это тоже тело, оно заменяется на оператор noop и удаляется в процессе оптимизации.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
27.09.2011, 18:33 #9
Цитата Сообщение от Deviaphan Посмотреть сообщение
Когда цикл завершается, i = 9. Соответственно, если массив а меньше 10, то программа имеет право на тебя обидеться.
Ну и что с этого? Не вводится же cin >> a[9]. Последним элементом вводится a[8]
Только, конечно, надо заполнять с 0 элемента, а не с 1, но если у него массив размером в 9 элементов, то все это будет работать.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 18:35 #10
Цитата Сообщение от Chelioss Посмотреть сообщение
Последним элементом вводится a[8]
Это ты только так думаешь. А вводится а[9].
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
27.09.2011, 18:38 #11
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тело есть всегда. Двоеточие после скобки это тоже тело, оно заменяется на оператор noop и удаляется в процессе оптимизации.
Я о том, что это не синтаксическая ошибка, поэтому должно работать.

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это ты только так думаешь. А вводится а[9].
C++
1
2
3
4
5
6
//i = 7
++i
i<=8? true
//i= 8
++i
i<=8? false
Где вы тут 9 видите?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 18:40 #12
Я и не говорил, что это синтаксическая ошибка. Синтаксическая ошибка раньше.
Чуть выше я её подробно описал.

Добавлено через 48 секунд
Цитата Сообщение от Chelioss Посмотреть сообщение
Где вы тут 9 видите?
Сперва инкремент, потом сравнение. Цикл завершится только тогда, когда I будет больше 8. Т.е. 9.

Добавлено через 1 минуту
Кстати! Этот код вообще не должен компилироваться, т.к. i определена в цикле, а вывод вне его. Я вообще туплю.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
27.09.2011, 18:45 #13
Цитата Сообщение от Deviaphan Посмотреть сообщение
Я и не говорил, что это синтаксическая ошибка. Синтаксическая ошибка раньше.
Чуть выше я её подробно описал.
Это не синтаксическая ошибка. Если есть выход за границу массива, то это ошибка времени выполнения.
А если у него 8 элементов в массиве, то выход за границы не будет.

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
Сперва инкремент, потом сравнение.
В очередной итерации i = 8. Итерация закончилась. 8 стала 9 и сразу цикл выходит по условию и дальше итерации не будет, т.е. не будет cin >> a[9]

Добавлено через 13 секунд
Цитата Сообщение от Deviaphan Посмотреть сообщение
Кстати! Этот код вообще не должен компилироваться, т.к. i определена в цикле, а вывод вне его.
Это да.

Добавлено через 2 минуты
Рабочий код:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main()
{
    int mas[9] = {1,2,3,4,5,6,7,8,9}; 
    for( int i = 0; i<=8; ++i )
        std::cout << mas[i];
           std::cout << std::endl;
    system( "pause");
    return 0;
}
0
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
27.09.2011, 18:45 #14
Цитата Сообщение от Chelioss Посмотреть сообщение
Это не синтаксическая ошибка. Если есть выход за границу массива, то это ошибка времени выполнения.
и по этому
Цитата Сообщение от Deviaphan Посмотреть сообщение
программа имеет право на тебя обидеться.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 18:46 #15
Цитата Сообщение от Chelioss Посмотреть сообщение
Это не синтаксическая ошибка.
Там запятая вместо двоеточия. В строке 2. А это синтаксическая ошибка.
1
27.09.2011, 18:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 18:46
Привет! Вот еще темы с ответами:

#include "stdafx.h" ? - C++
В vc++ Когда создаешь консольное приложение, нужно вначале написать заголовок &quot;#include &quot;stdafx.h&quot;. Для чего он нужен?)

#include "Sales_item.h" - ошибка "включаемый файл включает самого себя" - C++
Пишу в файле Sales_item.h следующее: #include &quot;Sales_item.h&quot; #include &lt;iostream&gt; void main() { Sales_item book; //тут...

Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include - C++
Привет. Вступление. Имею небольшой опыт в программировании. Сейчас мне дали разобрать один проект, как пример работы HGE и Box2D. ...

Не открывается библиотека '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) //...


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

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

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