Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2014, 02:01   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию QT, вызов и сохранение своих функций (консоль)

Здравствуйте! ПРактикуюсь в написании программных функций на языке СИ, вот пример (не знаю правильный ли), дак вот, у меня вопрос, как сохранить функцию в check.h-файле и "заставить" ее работать?

Код:

Float my_check(int x,int y,int z);
{
return(x+y+z);
}

Вот основная программа

Код:

#include <stdio.h>
#include <Check.h>

int main()

{

int xx,yy,zz;
scanf("%d,%d,%d",&xx,&yy,&zz);

my_check (xx,yy,zz) &&
my_check (yy,xx,zz) &&
my_check (zz,xx,yy)!
printf("Yes");
else
printf("No");
return 0;
}
з.ы. не по теме, но играет ли роль здесь наличие cin>>z?


Код:
#include <QCoreApplication>
#include <stdio.h>
#include <qmath.h>
#include <QTime>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    const int n=5;
    int a1[n][n];
    int z;


    for (int i=0;i<n;i++)
        for (int j=0; j<n;j++)
            a1[i][j]=rand()%50;
    printf("---------------------------------\n");
    for (int i=0 ;i<n;i++)
    {
        for (int j=0 ;j<n;j++)
        {
            printf("%d \t",a1[i][j]);
        }
       printf("\n");
    }
printf("-----------------------------\n");
cin>>z;
    return a.exec();
}
from dark to light)

Последний раз редактировалось Алексей_2012; 04.11.2014 в 02:16.
Алексей_2012 вне форума Ответить с цитированием
Старый 04.11.2014, 07:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А разве в .h файлах хранят функцию? Я всегда думал что там только описания функций и пр., а сами тебя в .cpp файлах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2014, 08:35   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Да, возможно, это сам изучить пытаюсь, с чего начать?)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 04.11.2014, 09:45   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Обычно в h-файле хранят прототип функции, а в cpp-файле - реализацию функции

Для того чтобы можно было вызвать функцию мы сначала подключаем её прототип:

Код:
#include "MyFunctions.h"
Нужно не забыть прототип написать внутри такой конструкции, чтобы не было включений объявлений несколько раз:
Код:
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H

// Объявления

#endif // MYFUNCTIONS_H
В боевых условиях программа выглядит примерно так:

main.cpp
Код:
#include <iostream>         // std::cout std::cin
#include <string>           // std::string
#include "MyFunctions.h"

int main()
{
    // Get name
    std::cout << "Enter your name:\n> ";
    std::string name;
    std::cin >> name;

    // Say Hello
    sayHello( name );

    return 0;
}
MyFunctions.h
Код:
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H

#include <iostream>         // std::cout
#include <string>           // std::string

void sayHello( const std::string &name );

#endif // MYFUNCTIONS_H
MyFunctions.cpp
Код:
#include "MyFunctions.h"

void sayHello( const std::string &name )
{
    std::cout << "Hello " << name << std::endl;
}

Последний раз редактировалось 8Observer8; 04.11.2014 в 14:47.
8Observer8 вне форума Ответить с цитированием
Старый 04.11.2014, 09:51   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
А разве в .h файлах хранят функцию?
Можно и хранить.

Должно работать. Только В С/С++ все регистрозависимо (float).

А cin >> z (или scanf) там чтобы программа сразу не закрывалась (например, при запуске просто ехе из папки, без IDE)
Можно вместо него например system("pause") на Windows.

И если вы не используете ничего Qt-шного, то не обязательно создавать QCoreApplication и т.п. Используйте шаблон Plain C Project в Non-Qt project

Цитата:
внутри такой конструкции
Или #pragma once
Вроде уже везде поддерживается.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.11.2014 в 09:58.
Alex11223 вне форума Ответить с цитированием
Старый 04.11.2014, 10:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно и хранить.
Ясно. Я на Си не пишу серьезно, так что так не делаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2014, 10:43   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Если вы хотите использовать QTimer в "main.cpp", то вот вам пример:

Примечание. Если получите при компиляции ошибку: error: undefined reference to `vtable for ...`, то кликните по проекту правой кнопкой мыши -> Clean -> Run qmake -> Build

main.cpp
Код:
#include <iostream>             // std::cout std::cin
#include <string>               // std::string
#include <QCoreApplication>
#include <QTimer>

class Shower : public QObject
{
    Q_OBJECT

public slots:
    void slotShow()
    {
        std::cout << "Hello" << std::endl;
    }
};

int main( int argc, char *argv[] )
{
    QCoreApplication app( argc, argv );

    QTimer timer;
    Shower shower;

    QObject::connect( &timer, SIGNAL( timeout() ),
                      &shower, SLOT( slotShow() ) );

    timer.start( 500 );

    return app.exec();
}

#include "main.moc";
8Observer8 вне форума Ответить с цитированием
Старый 04.11.2014, 10:46   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С чего вы взяли, что он хочет QTimer?оО
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.11.2014, 10:49   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

А я прочитал неверно, там QTime написано:

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Код:
#include <QCoreApplication>
#include <stdio.h>
#include <qmath.h>
#include <QTime>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
8Observer8 вне форума Ответить с цитированием
Старый 09.11.2014, 18:18   #10
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят, спасибо) а вот как создать

Myfile.h
myfile.cpp
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функций из Dll Mik92 Общие вопросы Delphi 2 19.09.2014 19:00
Определение и вызов функций в C++ Джин-ТоНиК Помощь студентам 1 01.12.2012 10:34
Вызов функций на Ассемблере в программе на С++ РагнаР Общие вопросы C/C++ 1 30.05.2011 16:15
объявление функций и вызов SnOoPKa Общие вопросы C/C++ 3 30.01.2011 01:53
Повторный вызов функций Roman Общие вопросы C/C++ 1 10.06.2009 14:48