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

Код по уроку из книги - C++

Восстановить пароль Регистрация
 
dezmondsmetall
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 31
16.02.2013, 19:37     Код по уроку из книги #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int main()
{
    int x;
    x = 5;
    int y;
    y = 7;
    cout << "\n";
    cout << x+y << "\n" << x*y;
    cout << "\n";
    getchar;
    return 0;
}
что здесь не правильно ?
студия ошибок не выводит но при компиляции в запуске ошибки. подскажите в чем мой косяк ..гуглил ничего толкового не нашел.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 720
16.02.2013, 19:47     Код по уроку из книги #2
может быть getchar() ?
и вообще,уж лучше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int main()
{
    int x = 5, y = 7;
    cout << endl;
    cout << x+y << endl << x*y;
    cout << endl;
    getchar();
    return 0;
}
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1237 / 986 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
16.02.2013, 19:47     Код по уроку из книги #3
1. #include <cstdio> в начале забыли. И iostream тоже в угловых скобках.
2. Внимательно сверьте с книгой четырнадцатую строку. Если в книге в этой строке не будет скобок, то дальше читайте книгу с предельной осторожностью и критичностью мышления, подумывая над возможностью анального наказания издателя. Это вполне допустимая строка, но уж очень похожа на опечатку. А учитывая кавычки вместо угловых скобок...
AndreyD93
17 / 17 / 1
Регистрация: 13.11.2012
Сообщений: 154
16.02.2013, 19:49     Код по уроку из книги #4
dezmondsmetall, Возможно не хватает библиотеки
C++
1
#include <math.h>
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
16.02.2013, 20:26     Код по уроку из книги #5
Цитата Сообщение от AndreyD93 Посмотреть сообщение
dezmondsmetall, Возможно не хватает библиотеки
C++
1
#include <math.h>
Нет. Зачем?
dezmondsmetall
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 31
16.02.2013, 20:59  [ТС]     Код по уроку из книги #6
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
1. #include <cstdio> в начале забыли. И iostream тоже в угловых скобках.
2. Внимательно сверьте с книгой четырнадцатую строку. Если в книге в этой строке не будет скобок, то дальше читайте книгу с предельной осторожностью и критичностью мышления, подумывая над возможностью анального наказания издателя. Это вполне допустимая строка, но уж очень похожа на опечатку. А учитывая кавычки вместо угловых скобок...
дело в том что в книге она очень старая 96 года и там
C++
1
#include "iostream"
пишется вот так:
C++
1
#include <iostream.h>
что для моей визуал студии 2012 никак не подходит устаревшее поэтому каждый приведенный код приходится перебирать и заново переписывать.

Добавлено через 2 минуты
немного поковырявшись друг помог вот что получилось запустить.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int main()
{
 int x=5,y=7;
 int a=x+y;
 int b=x*y;
 cout<<a<<" "<<b<<endl;
 system("pause");
 return 0;
}
и да getchar() в этом коде не проходит.

спасибо всем кто откликнулся)
XiloManX
 Аватар для XiloManX
641 / 145 / 31
Регистрация: 11.02.2013
Сообщений: 274
16.02.2013, 21:39     Код по уроку из книги #7
В Visual Studio 2012 используются новые стандарты 2011 года, поэтому примеры из старой книги компилироваться там не будут, потому что они не соответствуют новым стандартам. Чтобы твои примеры из старой книги компилировались, нужна старая версия Visual Studio, со старым компилятором.

Держи, переделаный мной пример, под новый стандарт:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
    int x = 5, y = 7;
    cout << endl;
    cout << x + y << endl << x * y;
    cout << endl;
    cin.get();
    return 0;
}
По новому стандарту в C++, нужно ипользовать "<>", для подключения стандартой библиотеки (без расширения).Вместо "\n", надо писать "endl". Хотя "\n", исользовать ещё можно, и это не вызовет ошибки.
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
16.02.2013, 22:33     Код по уроку из книги #8
Для ожидания реакции пользователя удобнее использовать функцию _getch(). Вообще эта функция просто ожидает нажатия любой клавиши и сохраняет код этой клавиши в переменную. То есть в этом случае программа завершится всего лишь после нажатия любой клавиши.
Для этого следует ещё прописать:
C++
1
#include <conio.h>
dezmondsmetall
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 31
17.02.2013, 01:33  [ТС]     Код по уроку из книги #9
Цитата Сообщение от XiloManX Посмотреть сообщение
В Visual Studio 2012 используются новые стандарты 2011 года, поэтому примеры из старой книги компилироваться там не будут, потому что они не соответствуют новым стандартам. Чтобы твои примеры из старой книги компилировались, нужна старая версия Visual Studio, со старым компилятором.

Держи, переделаный мной пример, под новый стандарт:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
    int x = 5, y = 7;
    cout << endl;
    cout << x + y << endl << x * y;
    cout << endl;
    cin.get();
    return 0;
}
По новому стандарту в C++, нужно ипользовать "<>", для подключения стандартой библиотеки (без расширения).Вместо "\n", надо писать "endl". Хотя "\n", исользовать ещё можно, и это не вызовет ошибки.
спасибо твой вариант довольно простой надо будет уловить мысль)) а уроки я делаю по книге :Либерти.C++ за 21 день неплохое объяснение но вот жаль что коды приходится переделывать хотя в этом тоже есть плюс.
Kins
 Аватар для Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
17.02.2013, 01:51     Код по уроку из книги #10
для _getchar() нужно #include <conio.h>

Добавлено через 7 минут
а не проще заместо этой фигни с гетче использовать просто system("pause"); ?
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
17.02.2013, 01:59     Код по уроку из книги #11
Я могу дополнить,если не будет лишним.

<> Для стандартных библиотек,а " " ищит в самом проекте.

Так же работая в VS часто выдает предупреждение такие допустим как,заменить printf на _printf

Но я не понимаю зачем,если на линуксе этого нету,после компиляции выдает ошибку естественно и приходится возвращать обратно с _printf на printf,но это я компилировал .dll
ValeryS
Модератор
6402 / 4868 / 447
Регистрация: 14.02.2011
Сообщений: 16,156
17.02.2013, 02:17     Код по уроку из книги #12
Цитата Сообщение от XiloManX Посмотреть сообщение
По новому стандарту в C++, нужно ипользовать "<>", для подключения стандартой библиотеки
всю жизнь так было
<> ищет в папках компилятора " " сначала в папке проекта
обрати внимание
было
Цитата Сообщение от dezmondsmetall Посмотреть сообщение
#include <iostream.h>
исправил на

Цитата Сообщение от dezmondsmetall Посмотреть сообщение
#include "iostream"
не только выкинул расширение но и скобки поменял
Цитата Сообщение от dezmondsmetall Посмотреть сообщение
студия ошибок не выводит но при компиляции в запуске ошибки.
эту фразу вообще не понял
запускается exe шник и работает непрвильно?
или не может создать? тогда внизу у студии список ошибок

первое окошко при нажатии F5 "код устарел желаете перекомпилировать"
жмем Да
второе окошко появляется при ошибках( которое чаще всего не читают) " не возможно создать файл, желаете запустить предыдущий вариант"
не надо здесь жать "Да" надо нажать "нет" и разобраться с ошибками

И вообще тщательней читать что пишет студия
а то можно написать (реальный случай)
C++
1
if(a==5);
наплевать на предупреждение а потом долго удивляться, что программа не правильно работает

Добавлено через 2 минуты
Цитата Сообщение от pEntity Посмотреть сообщение
Так же работая в VS часто выдает предупреждение такие допустим как,заменить printf на _printf
только не на printf а на scanf(не проверяет длину введенной строки, возможен взлом)
они по моему где то отключаются
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
17.02.2013, 10:44     Код по уроку из книги #13
Цитата Сообщение от ValeryS Посмотреть сообщение
Только не на printf а на scanf(не проверяет длину введенной строки, возможен взлом)
они по моему где то отключаются
Вроде как эти предупреждения исчезнут при изменении уровня предупреждений. По умолчанию стоит третий или четвёртый, который ОЧЕНЬ ревностно следит за возможными допущениями программиста. Однако все предупреждения, выдаваемые им, указывают на некие ошибки, которые могут возникнуть в некоторых случаях. Тот же взлом при переполнении scanf - одна из таких ошибок.
dezmondsmetall
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 31
17.02.2013, 10:59  [ТС]     Код по уроку из книги #14
как говорил мой друг любую задачу можно решить 1001 способом, даже книга есть где то такая. так что это уже на любителя какую библиотеку подключать и какую паузу ставить, если не надо использовать ANSI стандарт.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
эту фразу вообще не понял
запускается exe шник и работает непрвильно?
или не может создать? тогда внизу у студии список ошибок
в коде не подсвечивает ошибок ... а при компиляции у меня окно просто либо запускалось и пропадало и в листе отладки писало что не могло dll найти либо вообще не запускалось.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 11:13     Код по уроку из книги
Еще ссылки по теме:

Простой пример из книги. Объяснить, почему код выдает такие результаты C++
Книги по си++ C++
не работает код из книги класс C++
Почему не работает следующий код из книги Страуструпа (конструктор значений по умолчанию) C++
C++ Объяснить код из книги Страуструпа

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6402 / 4868 / 447
Регистрация: 14.02.2011
Сообщений: 16,156
17.02.2013, 11:13     Код по уроку из книги #15
Цитата Сообщение от dezmondsmetall Посмотреть сообщение
в коде не подсвечивает ошибок ...
Visual Studio не подсвечивает ошибки( по крайней мере, я про это не знаю)
Yandex
Объявления
17.02.2013, 11:13     Код по уроку из книги
Ответ Создать тему
Опции темы

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