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

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

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

Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает - C++

14.10.2012, 13:31. Просмотров 794. Ответов 12
Метки нет (Все метки)

Здравствуйте. Я новичок в деле программировании, так что, пожалуйста, относитесь ко мне к пониманию. Купил книгу "С++ Освой самостоятельно за 21 день" автора Либерти Джесс. Дошел до 8 раздела, в котором требовалось написать программу, выполняющее деление двух чисел, и возникла проблема. Вроде бы все правильно ввел, но не работает. Работаю в среде "Code::Blocks", может в нем проблема? Запускаю код и в "Buid messages" выводит это:
" In functin 'main':
35 undefined referense to 'SAMSErrorHandling::Initialize()'
48 undefined referense to 'SAMSErrorHandling::HandleNotANumberError()'
51 undefined referense to 'SAMSPrompt::PauseForUserAclnowledgement()'
Сам код:
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
#include <iostream>
 
#include "PromptModule.h"
#include "ErrorHandlingModule.h"
 
using namespace std;
 
float GetDividend(void)
{
    float Dividend = 0;
 
    cout << "Dividend: ";
    cin >> Dividend;
 
    return Dividend;
}
 
float GetDivisor(void)
{
    float Divisor = 1;
 
    cout << "Divisor: ";
    cin >> Divisor;
 
    return Divisor;
}
 
float Divide(const float theDividend, const float theDivisor)
{
    return (theDividend/theDivisor);
}
 
int main(int argc, char* argv[])
{
    SAMSErrorHandling::Initialize();
 
    float ReturnCode = 0;
 
    try
    {
        float Dividend = GetDividend();
        float Divisor = GetDivisor();
 
        cout << Divide(Dividend, Divisor) << endl;
    }
    catch (...)
    {
        ReturnCode = SAMSErrorHandling::HandleNotANumberError();
    };
 
    SAMSPrompt::PauseForUserAclnowledgement();
    return ReturnCode;
}
Пожалуйста, помогите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 13:31     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает
Посмотрите здесь:

Класс "дата", расчет дней недели C++
C++ Не работает код. В чём причина? Как "заставить" работать?
C++ Ошибка в книге Скиены "Олимпиадные задачи по програмированию"?!
Вопросы по книге С. Бобровского "Самоучитель программирования на языке С++" C++
C++ Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ")
Джесс Либерти. Можно изучать? C++
Задача "Дан номер года. Найти число дней в этом году." C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
14.10.2012, 13:38     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #2
а у вас есть файлы?
C++
1
2
#include "PromptModule.h"
#include "ErrorHandlingModule.h"
в них, скорее всего объявлены всё то, на что ругается компилятор...точнее он ругается на отсутствие функций
SAMSErrorHandling::Initialize()
SAMSErrorHandling::HandleNotANumberError()
SAMSPrompt::PauseForUserAclnowledgement()
Рольф
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
14.10.2012, 13:40  [ТС]     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #3
Есть.
PromptModule.h
C++
1
2
3
4
5
6
7
8
9
#ifndef PromptModuleH
#define PromptModuleH
 
namespace SAMSPrompt
{
    void PauseForUserAclnowledgement(void);
}
 
#endif // PROMPTMODULE_H_INCLUDED
ErrorHandlingModule.h
C++
1
2
3
4
5
6
7
8
9
10
#ifndef ErrorHandlingModuleH
#define ErrorHandlingModuleH
 
namespace SAMSErrorHandling
{
    void Initialize(void);
    int HandleNotANumberError(void);
}
 
#endif // ErrorHandlingModuleH
snw
10 / 10 / 0
Регистрация: 11.10.2012
Сообщений: 93
14.10.2012, 13:43     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #4
во-первых надо почитать про исключения (try catch throw).
поищите книгу Страуструпа C++ Программирование и практика использования.

Ругается на файлы, которых нету - скачайте их, либо без использования оных попробуйте прибегнуть к следующему:
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
#include <iostream>
 
using namespace std;
 
float GetDividend(void)
{
    float Dividend = 0;
 
    cout << "Dividend: ";
    cin >> Dividend;
 
    return Dividend;
}
 
float GetDivisor(void)
{
    float Divisor = 1;
 
    cout << "Divisor: ";
    cin >> Divisor;
 
    return Divisor;
}
 
float Divide(const float theDividend, const float theDivisor)
{
    return (theDividend/theDivisor);
}
 
int main(int argc, char* argv[])
{
   
 
    try
    {
        float Dividend = GetDividend();
        float Divisor = GetDivisor();
 
        cout << Divide(Dividend, Divisor) << endl;
    }
    catch (...)
    {
        cerr << "Not a number!"
    };
 
    system("pause");
    return 0;
}
не бейте меня если код коряв..
Рольф
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
14.10.2012, 13:49  [ТС]     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #5
Цитата Сообщение от snw Посмотреть сообщение
во-первых надо почитать про исключения (try catch throw).
поищите книгу Страуструпа C++ Программирование и практика использования.

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

не бейте меня если код коряв..
Так дело в том, что эти файлы есть у меня, я их создавал. Спасибо за ваш код, но мне нужно понять в чем дело в моей проблеме, так как автор книги строит обучение по плану, то есть этот код мне нужен, чтобы продвигаться дальше.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
14.10.2012, 13:58     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #6
Цитата Сообщение от Рольф Посмотреть сообщение
Так дело в том, что эти файлы есть у меня, я их создавал. Спасибо за ваш код, но мне нужно понять в чем дело в моей проблеме, так как автор книги строит обучение по плану, то есть этот код мне нужен, чтобы продвигаться дальше.
А соответствующие *cpp файлы есть, где имеется определения данных функций?

Добавлено через 6 минут
добавил к проекту фаил cpp с определениями и у меня все заработало (правда определения просто так напечатал, чтобы проверить)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include "PromptModule.h"
#include "ErrorHandlingModule.h"
 
void SAMSErrorHandling::Initialize(){
    std::cout<<"Initialize\n";
}
int SAMSErrorHandling::HandleNotANumberError(){
    std::cout<<"HandleNotANumberError\n"; return 0;
}
 
void SAMSPrompt::PauseForUserAclnowledgement(){
    std::cout<<"PauseForUserAclnowledgement\n";
}
Рольф
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
14.10.2012, 13:59  [ТС]     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #7
Цитата Сообщение от Croessmah Посмотреть сообщение
А соответствующие *cpp файлы есть, где имеется определения данных функций?
Извините, но я с трудом понимаю о чем вы - ведь все-таки я новичок и до этого не имел дел с программированию. ((
Есть вроде бы файл "main.cpp", а так больше ничего...
Есть скриншот среды разработки, на котором он ругается, и видны все файлы данного проекта (слева), может разберетесь?
http://s005.***********/i209/1210/8c/348c1c0785e7.jpg
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
14.10.2012, 14:01     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #8
У Вас есть файлы *h с объявлениями функций, но нет файла(ов) в которых имеются определения данных функций(собственно, самого кода этих функций у Вас нет).
Рольф
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
14.10.2012, 14:08  [ТС]     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #9
Цитата Сообщение от Croessmah Посмотреть сообщение
У Вас есть файлы *h с объявлениями функций, но нет файла(ов) в которых имеются определения данных функций(собственно, самого кода этих функций у Вас нет).
Добавил еще один файл срр, в котором внес ваш код. Все заработало. Но я перечитал книгу, там ничего не написано, что надо было создавать еще один файл. Странно.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
14.10.2012, 14:09     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #10
Цитата Сообщение от Рольф Посмотреть сообщение
Добавил еще один файл срр, в котором внес ваш код. Все заработало. Но я перечитал книгу, там ничего не написано, что надо было создавать еще один файл. Странно.
Это одна из причин, по которым я не стал дочитывать эту книгу =)
Поверьте, это не единичный случай в данной книге.
Рольф
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
14.10.2012, 14:11  [ТС]     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #11
Не по делу, конечно, но можно узнать какие книги по программированию лучше купить? С правильными объяснениями и правильным кодом. И спасибо большое за то, что помогли.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
14.10.2012, 14:22     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #12
Цитата Сообщение от Рольф Посмотреть сообщение
Не по делу, конечно, но можно узнать какие книги по программированию лучше купить? С правильными объяснениями и правильным кодом. И спасибо большое за то, что помогли.
Лично мне вот эта книга понравилась: Стефан Р. Дэвис - C++ Для чайников
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2012, 14:26     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает
Еще ссылки по теме:

C++ Версия CodeBlocks к книге Стефана Р.Дэфиса "C++ для Чайников"
C++ Сдающий карты. "cards_remaining--" одинаково работает и с "--", и без
Разобраться в примерх к книге Лафоре "Обьектно-ориентированое программирование в С++" C++
Пример из книги Джесс Либерти не работает(указатели) C++
C++ Стоит ли изучать C++ по книге "C++ за 21 день"?

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

Или воспользуйтесь поиском по форуму:
Рольф
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
14.10.2012, 14:26  [ТС]     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Лично мне вот эта книга понравилась: Стефан Р. Дэвис - C++ Для чайников
Спасибо.
Yandex
Объявления
14.10.2012, 14:26     Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает
Ответ Создать тему
Опции темы

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