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

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

Войти
Регистрация
Восстановить пароль
 
 
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 842
Записей в блоге: 1
#1

Два файла .cpp в проекте - C++

19.09.2013, 17:29. Просмотров 1157. Ответов 16
Метки нет (Все метки)

Файлы DayOfWeek и main(откуда вызываются методы из DayOfWeek).
Пишет ошибку на скрине,что не так?
И что такое #include <stdexcept>?
DayOfWeek.cpp
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
#include <iostream>
#include <stdexcept>
#include <locale>
 
using std::cout;
using std::cin;
using std::endl;
 
enum DayOfWeek {MON=1,TUE,WED,THU,FRI,SAT,SUN} ;
 
void printDayOfWeek(DayOfWeek dayOfWeek) {
    switch(dayOfWeek) {
    case 1: cout<<"Monday "<<endl;
        break;
    case 2: cout<<"Tuesday "<<endl;
        break;
    case 3: cout<<"Wednesday "<<endl;
        break;
    case 4: cout<<"Thursday "<<endl;
        break;
    case 5: cout<<"Friday "<<endl;
        break;
    case 6: cout<<"Saturday"<<endl;
        break;
    case 7: cout<<"Sunday "<<endl;
        break;
 
    }
}
 
DayOfWeek readDayOfWeek() {
    int day;
    cin >> day;
    if ( (day<1)||(day>7) ) {
        throw std::range_error("number of day should be in a range [1, 7]");
    }
    return static_cast<DayOfWeek>(day); // cast: int -> DayOfWeek
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <locale>
 
using namespace std;
 
enum DayOfWeek {};
void printDayOfWeek();
DayOfWeek readDayOfWeek();
 
int main() {
    std::locale::global(std::locale(""));
    cout<<"Введите день недели 1-7 "<<endl;
    DayOfWeek dow=readDayOfWeek();
    printDayOfWeek(dow);
    system("pause");
    return 0;
}
0
Миниатюры
Два файла .cpp в проекте  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 17:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Два файла .cpp в проекте (C++):

Как связать два cpp файла в одном проекте (visual studio 2010) - C++
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. создает файл #include &lt;iostream&gt; ...

в проекте - надо в проекте win32api вынести все в другой *cpp* а не получаеться - C++
определил функцию в другом спп и в основном ругается компилятор

Разбить на два файла .h и .cpp - C++
Ребят, подскажите, как правильно разбить эту программу на два файла .h и .cpp #include &lt;math.h&gt; #include &lt;iostream&gt; class...

Использование функции cpp в проекте c - C++
Есть сишный проект, понадобилось прикрепить к нему один готовый плюсовый модуль. Схематичный вид этого модуля: //module.cpp ...

Несколько *.cpp в одном проекте - C++
Добрый день! В приложении требуется несколько *.cpp как выполнить код каждой *.cpp ?

Несколько cpp файлов в проекте - C++
Доброго времени суток ! Есть проект и в нем 2 cpp файла: Main.cpp и BinaryNumber.cpp В последнем файле создан класс и его методы....

16
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 17:40 #2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
C++
1
void printDayOfWeek();
У тебя прототип функции объявлен без параметра. 7-я строка в последнем листинге.
1
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 842
Записей в блоге: 1
19.09.2013, 17:43  [ТС] #3
Цитата Сообщение от castaway Посмотреть сообщение
У тебя прототип функции объявлен без параметра.
Только что исправил,спасибо!Достаточно тип указать!?

Остались два вопроса:
1.Что такое #include <stdexcept>?
2.Ниже код исключения как я понимаю,если пользователь вводит число не от 1 до 7 то должно вывести соответствующее сообщение в кавычках!?Но выводит то что на скрине ниже...
C++
1
2
3
if ( (day<1)||(day>7) ) {
        throw std::range_error("number of day should be in a range [1, 7]");
    }
0
Миниатюры
Два файла .cpp в проекте  
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 17:45 #4
Цитата Сообщение от DmitryM5 Посмотреть сообщение
1.Что такое #include <stdexcept>?
Это заголовочный файл, который определяет стандартные исключения. Второй вопрос как раз с ними и связан.
Возможно я бы смог ответить на твой вопрос, если бы видел весть код и смог его запустить..
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 842
Записей в блоге: 1
19.09.2013, 17:48  [ТС] #5
Цитата Сообщение от castaway Посмотреть сообщение
Это заголовочный файл, который определяет стандартные исключения. Второй вопрос как раз с ними и связан.
Так так и должно вывести исключение?
Где надпись "number of day should be in a range [1, 7]" ???
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 17:50 #6
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Так так и должно вывести исключение?
Где надпись "number of day should be in a range [1, 7]" ???
Не могу сказать точно. Я в MSVS не работаю, возможно у тебя не включены исключения.. Код целиком дать можешь?
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 842
Записей в блоге: 1
19.09.2013, 17:53  [ТС] #7
Цитата Сообщение от castaway Посмотреть сообщение
Не могу сказать точно. Я в MSVS не работаю, возможно у тебя не включены исключения.. Код целиком дать можешь?
Но вон он же в самом верху, DayOfWeek.cpp
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 17:54 #8
Да, понял.
В консольном приложении (компилятор GCC) у меня выводится:
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::range_error'
what(): number of day should be in a range [1, 7]
1
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 842
Записей в блоге: 1
19.09.2013, 17:56  [ТС] #9
Цитата Сообщение от castaway Посмотреть сообщение
Да, понял.
В консольном приложении (компилятор GCC) у меня выводится:
т.е. скорее всего что-то у меня в другом не так,а строка исключения верна?)
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 17:59 #10
Цитата Сообщение от DmitryM5 Посмотреть сообщение
т.е. скорее всего что-то у меня в другом не так,а строка исключения верна?)
Бросаешь исключение ты правильно, так же правильно подключаешь заголовок stdexcept, а вот почему у тебя происходит "не то", я сказать, к сожалению, не могу..
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 842
Записей в блоге: 1
19.09.2013, 18:05  [ТС] #11
Цитата Сообщение от castaway Посмотреть сообщение
Бросаешь исключение ты правильно, так же правильно подключаешь заголовок stdexcept, а вот почему у тебя происходит "не то", я сказать, к сожалению, не могу..
Окей,спасибо и на этом.
Вот еще один вопросик про Заголовочные файлы:
Вот мой заголовочный файл к предыдущим заданиям:
Почему в первых двух строках я могу писать нижние подчеркивание сколько хочу и где хочу?(Day_O_f_W_eek_h)
Это же имя файла по идее,который привязан как то к DayOfWeek.cpp Так получается совсем другое имя файла..?

C++
1
2
3
4
5
6
7
8
9
10
#ifndef Day_Of_Week_h
#define Day_Of_Week_h
 
enum DayOfWeek {MON = 1, TUE, WED, THU, FRI, SAT, SUN};
 
void printDayOfWeek(DayOfWeek dayOfWeek);
DayOfWeek readDayOfWeek() ;
 
 
#endif /*Day_Of_W
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 18:08 #12
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Почему в первых двух строках я могу писать нижние подчеркивание сколько хочу и где хочу?(Day_O_f_W_eek_h)
Это же имя файла по идее,который привязан как то к DayOfWeek.cpp Так получается совсем другое имя файла..?
Это не имя файла, это макроопределение, ты можешь его назвать как хочешь, но имя должно быть уникальным в одном проекте.
Тут ключевые слова: #ifndef, #define и #endif - которые обезопасят тебя от включения одного заголовка дважды.
1
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 18:13 #13
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Где надпись "number of day should be in a range [1, 7]" ???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main() {
    std::locale::global(std::locale(""));
    cout<<"Введите день недели 1-7 "<<endl;
    DayOfWeek dow;
    try
    {
        dow = readDayOfWeek();
    }
    catch(exception &e)
    {
        cout << e.what() << endl;
        system("pause");
        return 0;
    }
    printDayOfWeek(dow);
    system("pause");
    return 0;
}
2
Миниатюры
Два файла .cpp в проекте  
castaway
19.09.2013, 18:18
  #14

Не по теме:

alsav22, слона то я и не заметил...

0
alsav22
19.09.2013, 18:19     Два файла .cpp в проекте
  #15

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
alsav22, слона то я и не заметил...
Бывает...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2013, 18:19
Привет! Вот еще темы с ответами:

Подключение в проекте .hpp и .cpp файлов - C++
Добрый день! Среда разработки Code Blocks 13.12 Компилятор GNU GCC В проекте существует 3 файла в проекте - main.cpp, SW229.cpp и...

Не удаётся связать два файла timer.h и timer.cpp - C++
Добрый вечер, у меня есть класс и библиотеки которые нужно использовать в нескольких программах, по этому я хочу сделать отдельный файл...

Компиляция файла cpp - C++
Ситуация: среды visual studio нет и не будет. Имеется файл с расширением cpp. Как его скомпилировать через командную строку? С cs все...

Создание файла .h и файла .cpp - C++
Написать программу, которая состоит из следующих действий: 1. Создание заголовочного файла (с расширением .h). В файле описывается: *-...


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

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

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