Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/43: Рейтинг темы: голосов - 43, средняя оценка - 4.84
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129

Объявление функции в отдельном файле (Code::Blocks)

24.06.2013, 00:00. Показов 10098. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разбираю объявление функций в отдельных файлах на примере задачи о проверке - является ли пятизначное число палиндромом, т.е. таким числом, которое читается слева направо и справо налево одинаково (12321, 23332 и т.д.)

В CodeBlocks создал три файла (см. рис.1 внизу):

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//главный файл проекта - main.cpp
#include <iostream>
#include "palendrom5.h"
using namespace std;
 
int main()
{
    int n;
    setlocale(LC_ALL,"Rus");
    cout << "Введите 5-значеное число" << endl;
    cin >> n;
 
    if(palendrom5(n))   //используем нашу функцию
                        //в зависимости от ее значения выводится сообщение
        cout << "Число " << n << " - палиндром" << endl;
    else
        cout << "Число не является палиндромом" << endl;
 
    cin.get();
    return 0;
}
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
//объявление функции в файле - palendrom5.cpp
#include <iostream>
#include "palendrom5.h"
 
//объявление функции нахождения истинности того, что число - палиндром
bool palendrom5(int numb)
{
    int a0,a1,a3,a4;    //переменные для хранения 0, 1, 3, 4 разрядов числа
    a0 = numb%10;       //находим цифру 0-го разряда
    numb=numb/10;
 
    a1 = numb%10;       //находим цифру 1-го разряда
    numb=numb/100;
 
    a3 = numb%10;       //находим цифру 3-го разряда
    numb=numb/10;
 
    a4 = numb%10;       //находим цифру 4-го разряда
 
    if((a0 == a4) && (a1 == a3))
        return true;
    else
        return false;
}
C
1
2
3
4
5
6
7
//файл заголовка - palendrom5.h
#ifndef PALENDROM5_H_INCLUDED
#define PALENDROM5_H_INCLUDED
 
bool palendrom5(int);
 
#endif // PALENDROM5_H_INCLUDED
Далее, установил в свойствах palendrom5.h флажки для Debug и Release как на рис.2.
При этом появляется сообщение, что проект еще не собран (рис 3), а после сборки появляется сообщения - рис 4.

ЧТО Я ДЕЛАЮ НЕ ТАК??? Нигде в интернете не могу найти ответ на этот вопрос... может что-то написано про visual studio, но как делается это в CodeBlocks?... Единственное отличие тут - это что создаются макроимена PALENDROM5_H_INCLUDED в заголовочном файле, а так - вроде все правильно...
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)   Объявление функции в отдельном файле (Code::Blocks)   Объявление функции в отдельном файле (Code::Blocks)  

Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2013, 00:00
Ответы с готовыми решениями:

Получение адреса функции (Дизассемблер Code::Blocks)
Привет всем! У меня вопрос. Работаю я в code::blocks 10.05 под minGW. Появилась нужда узнать адрес функции, начал дизассемблировать код,...

Перестали работать функции с переменным числом параметров в Code::Blocks
Например такая функция: double summa(int numb, double x, ...){ double*p=&amp;x; double sum=0; while(numb--&gt;0){ ...

Функции в отдельном файле
всем привет, помогите пожалуйста хочу написать набор геометрических функций в отдельном файле, но не очень втыкаю как это слать ...

30
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
24.06.2013, 01:33
Студворк — интернет-сервис помощи студентам
@xlxndr, да. Вон те две галочки надо снять.
1
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
24.06.2013, 01:36  [ТС]
теперь еще и отказывается удаляться тот файл gch
0
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
24.06.2013, 01:39  [ТС]
если убрать те галочки, то файл не прикрепляется к сборке, и пишется такая хрень:
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)  
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
24.06.2013, 01:40
как у меня на скриншоте сделайте, а на *.h.gch - забить
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)  
1
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
24.06.2013, 01:43
Цитата Сообщение от xlxndr Посмотреть сообщение
если убрать те галочки, то файл не прикрепляется к сборке, и пишется такая хрень:
Это уже лучше. Все файлы добавлены к проекту?
0
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
24.06.2013, 01:49  [ТС]
с той программой так и не получается... пишет

видимо там действительно черная магия виновата... а сейчас создал другую программу попроще, и все работает... в общем, принцип объявления функций в разных файлах отработан... вот этот другой пример...
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)  
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
24.06.2013, 01:54
хорошо, что отработан

во вложениях рабочий проект из первого поста
Вложения
Тип файла: rar 0000.rar (1.3 Кб, 5 просмотров)
1
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
24.06.2013, 02:01  [ТС]
Функция просто прибавляет к введенному вами числу число 2...

Проект имеет 3 файла: главный, файл, в котором объявлена функция, и файл заголовка:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//файл main.cpp
#include <iostream>
#include "fff.h"                    //прикрепляем файл заголовка
 
using namespace std;
 
int main()
{
    int n;
    setlocale(LC_ALL,"Rus");
 
    cout << "Введите число: " << endl;
    cin >> n;
 
    cout << fff(n) << endl;         //используем нашу функцию fff
 
    cin.get();
    return 0;
}
C
1
2
3
4
5
6
7
8
//файл нашей функции fff.cpp
#include <iostream>
#include "fff.h"        //прикрпеляем файл заголовка
 
int fff(int n)
{
    return n+2;
}
C
1
2
3
4
5
6
7
//файл заголовка fff.h
#ifndef FFF_H_INCLUDED
#define FFF_H_INCLUDED
 
int fff(int);   //пишем прототип функции
 
#endif // FFF_H_INCLUDED

И здесь все работает.... Видимо от экспериментов с предыдущей задачей остались какие-то хвосты, которые чудо-CodeBlocks-y не давали собрать проект... (((

Добавлено через 2 минуты
Всем спасибо за участие

Добавлено через 3 минуты
Цитата Сообщение от Olivеr Посмотреть сообщение
хорошо, что отработан

во вложениях рабочий проект из первого поста
Ха... ну вот этот распакованный архив работает!...
Видимо действительно слишком тонка душа у CodeBlocks-a...
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.06.2013, 02:11
Цитата Сообщение от MrGluck Посмотреть сообщение
Как разделить программу на модули в Dec C++
code::blocks не находит .h файл
мы игнорируем?
Выложу специально для вашего случая, все с точностью до мельчайших шагов
1. Выбираем File > New > Project (рис.1)

2. В открывшемся диалоговом окне вводим название проекта (рис. 2), выбираем язык С++

3. Выбираем компилятор GCC (стоит по дефолту), релиз и дебаг версии(также стоят по дефолту) (рис. 3). Можно просто нажать Next и пропустить этот этап

4. Открываем созданный автоматически файл main.cpp, копируем туда необходимое содержимое (рис. 4)

5. Выбираем File > New > Empty file (рис. 5) или же нажимаем комбинацию клавиш Ctrl + Shift + N

6. При выборе между добавлением файла к проекту и обычным созданием (рис. 6) выбираем первый вариант (Да)

7. В меню сохранения файла (рис. 7) указываем полностью имя и расширение (.cpp)

8. В созданный файл запихиваем необходимый исходный код .cpp файла реализации функции (рис. 8)

9. Повторяем процедуру из п.5, подтверждаем добавление нового файла к проекту (рис. 9)

10. При сохранении важно выбрать расширение All files (*.*) и полностью набрать необходимое название + .h (расширение для заголовочных файлов) (рис. 10)

11. Выбрать добавление в релиз и дебаг (рис. 11)

12. В созданный пустой файл добавляем необходимые объявления функции, не забыв обрамить их инклюд гвардами (рис. 12)

13. На панели сверху нажимаем на кнопку Rebuild (рис. 13) или набираем комбинацию Ctrl + F11. В открывшемся диалоговом окне нажимаем Yes.

14. Выбираем на панели Run или Build and run, или же пользуемся комбинациями F9 либо Ctrl + F10 соответственно. Результат - работа программы (рис. 14)
1
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
24.06.2013, 02:18  [ТС]
Нет, а я все правильно делал на самом то деле... это какие-то глюки были у CodeBlocks-a....
Вот, коллега Olivеr запустил точ в точ - и у него все работало тоже...
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.06.2013, 02:20
@xlxndr, у всех IDE так бывает. У VS правда чаще всего. Тотальный ребилд еще никому никогда не вредил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2013, 02:20

Code blocks, code completion, opengl
Подскажите пожалуйста можно ли как нибудь в code blocks к code completion подключить opengl из sfml?

Code::blocks code completion , sfml
Я использую sfml функция &quot;code completion&quot; работает со всеми частями sfml. Однако данная функция работает с opengl только в течение одной...

Объявление функции в файле
Здравствуйте! Помогите, пожалуйста! на сайте не работают некоторые модули, не отображаются... написала в техподдержку-вот что они мне...

Реализация кода функции в отдельном файле
У меня есть функция main в главном файле программы, в ней выполняется нужный код, я хочу как бы дополнить эту же функцию, но из другого .h...

Как реализовать свои функции в отдельном файле?
В голову пришла такая мысль, что если записать функции в отдельный файл, и когда придет время писать программу, просто указать ссылку на...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru