Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
Файлы 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;
}
Миниатюры
Два файла .cpp в проекте  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2013, 17:29
Ответы с готовыми решениями:

Как связать два cpp файла в одном проекте (visual studio 2010)
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. ...

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

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

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

16
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.09.2013, 17:40 2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
C++
1
void printDayOfWeek();
У тебя прототип функции объявлен без параметра. 7-я строка в последнем листинге.
1
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 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]");
    }
Миниатюры
Два файла .cpp в проекте  
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.09.2013, 17:45 4
Цитата Сообщение от DmitryM5 Посмотреть сообщение
1.Что такое #include <stdexcept>?
Это заголовочный файл, который определяет стандартные исключения. Второй вопрос как раз с ними и связан.
Возможно я бы смог ответить на твой вопрос, если бы видел весть код и смог его запустить..
0
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
19.09.2013, 17:48  [ТС] 5
Цитата Сообщение от castaway Посмотреть сообщение
Это заголовочный файл, который определяет стандартные исключения. Второй вопрос как раз с ними и связан.
Так так и должно вывести исключение?
Где надпись "number of day should be in a range [1, 7]" ???
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.09.2013, 17:50 6
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Так так и должно вывести исключение?
Где надпись "number of day should be in a range [1, 7]" ???
Не могу сказать точно. Я в MSVS не работаю, возможно у тебя не включены исключения.. Код целиком дать можешь?
0
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
19.09.2013, 17:53  [ТС] 7
Цитата Сообщение от castaway Посмотреть сообщение
Не могу сказать точно. Я в MSVS не работаю, возможно у тебя не включены исключения.. Код целиком дать можешь?
Но вон он же в самом верху, DayOfWeek.cpp
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
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
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
19.09.2013, 17:56  [ТС] 9
Цитата Сообщение от castaway Посмотреть сообщение
Да, понял.
В консольном приложении (компилятор GCC) у меня выводится:
т.е. скорее всего что-то у меня в другом не так,а строка исключения верна?)
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.09.2013, 17:59 10
Цитата Сообщение от DmitryM5 Посмотреть сообщение
т.е. скорее всего что-то у меня в другом не так,а строка исключения верна?)
Бросаешь исключение ты правильно, так же правильно подключаешь заголовок stdexcept, а вот почему у тебя происходит "не то", я сказать, к сожалению, не могу..
0
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 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
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.09.2013, 18:08 12
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Почему в первых двух строках я могу писать нижние подчеркивание сколько хочу и где хочу?(Day_O_f_W_eek_h)
Это же имя файла по идее,который привязан как то к DayOfWeek.cpp Так получается совсем другое имя файла..?
Это не имя файла, это макроопределение, ты можешь его назвать как хочешь, но имя должно быть уникальным в одном проекте.
Тут ключевые слова: #ifndef, #define и #endif - которые обезопасят тебя от включения одного заголовка дважды.
1
5498 / 4893 / 831
Регистрация: 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;
}
Миниатюры
Два файла .cpp в проекте  
2
castaway
19.09.2013, 18:18
  #14

Не по теме:

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

0
alsav22
19.09.2013, 18:19
  #15

Не по теме:

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

0
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
19.09.2013, 18:21  [ТС] 16
Цитата Сообщение от castaway Посмотреть сообщение
Это не имя файла, это макроопределение, ты можешь его назвать как хочешь, но имя должно быть уникальным в одном проекте.
Тут ключевые слова: #ifndef, #define и #endif - которые обезопасят тебя от включения одного заголовка дважды.
Вроде бы понял,но как заголовок понимает,что он принадлежит именно тому файлу спп?))
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.09.2013, 18:26 17
Цитата Сообщение от DmitryM5 Посмотреть сообщение
но как заголовок понимает,что он принадлежит именно тому файлу спп?
Макроопределение не является локальным для файла. Препроцессор собирает все файлы (*.h, *.cpp и т.п. последовательно), т.е. после включения заголовочного файла DayOfWeek.h, макроопределение, объявленное в этом файле, будет объявлено и в последующих.
Я думаю для этого вопроса следует создать отдельную тему.
1
19.09.2013, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2013, 18:26
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru