fgv.hpp
#pragma once
#ifndef FGV_HPP
#define FGV_HPP
//Függvények prototípusa //.h fájlban a helyük
/// <summary>
/// Csere pointerrel
/// </summary>
/// <param name="a">egyik</param>
/// <param name="b">masik</param>
void csere(int *a, int *b);
/// <summary>
/// Csere referenciával
/// </summary>
/// <param name="a">egyik</param>
/// <param name="b">masik</param>
void csere(int & a, int & b);
// saját névterület
namespace oop
{
extern int sajatvaltozo;
void kiir();
}
#endif // !FGV_HPP
fgv.cpp
#include "fgv.h"
#include <iostream>
void csere(int * a, int * b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void csere(int & a, int & b)
{
int tmp = a; a = b; b = tmp;
}
int oop::sajatvaltozo = 10;
void oop::kiir()
{
std::cout << "sajat valtozo = " << sajatvaltozo << std::endl;
}
main.cpp
#include <iostream>
#include <ctime>
//saját modul betöltése
#include "fgv.hpp"
#include <string>
#include <cmath>
using namespace std;
//tömb átlaga
double tatlag(double *, int);
//alapértelmezett érték
double polinom(double x, double a=3, double b=2, double c=1);
//sablon
template <typename T>
T osszeg(T a, T b);
//rekurzív fgv
unsigned long long factorial(unsigned long long n);
//fgv. pointer
typedef double fgv(double x);
fgv negyzet;
fgv * matek;
int main()
{
int a = 10, b = 20;
csere(&a,&b);
std::cout << "a = " << a << " b = " << b << std::endl;
csere(a, b);
std::cout << "a = " << a << " b = " << b << std::endl;
oop::kiir();
oop::sajatvaltozo += 20;
using namespace oop;
kiir();
int db = 10;
double * tadat = new double[db];
srand(unsigned int(time(NULL)));
for (int i = 0; i < db; i++)
tadat[i] = double(rand()) / RAND_MAX * 10;
std::cout << "Atlag: " << tatlag(tadat,db) << std::endl;
delete[] tadat;
//HF tatlag int adattípusú tömbbel is!!!
cout << "Polinom" << endl;
cout << "3.2 5 6 7" << polinom(3.2, 5, 6, 7) << endl;
cout << "3.2 5 6 1" << polinom(3.2, 5, 6) << endl;
cout << "3.2 5 2 1" << polinom(3.2, 5) << endl;
cout << "3.2 3 2 1" << polinom(3.2) << endl;
cout << "Template" << endl;
cout << osszeg(a, b) << endl;
double c = 3.2, d = 5.4;
cout << osszeg<double>(a, c) << endl;
cout << osszeg<int>(c, d) << endl;
cout << "char : " << osszeg('1', '0') << endl;
cout << "char : " << osszeg<int>('1', '0') << endl;
cout << "szoveg :" << osszeg<string>("Ez", " mukodik") << endl;
for (int i = 0; i < 30; i++)
cout << i << "! = " << factorial(i) << endl;
cout << negyzet << endl;
cout << negyzet(2) << endl;
matek = negyzet;
cout << matek(2) << endl;
matek = abs;
cout << matek(-2343) << endl;
matek = sin;
cout << matek(2141) << endl;
return 0;
}
double tatlag(double *t, int n)
{
double sum = 0;
for (int i = 0; i < n; i++)
sum += t[i];
return sum / n;
}
double polinom(double x, double a, double b, double c)
{
return a + b*x + c*x*x;
}
unsigned long long factorial(unsigned long long n)
{
if (n > 0)
return n* factorial(n - 1);
else
return 1;
//return (n > 0) ? n * factorial(n - 1) : 1;
}
template<typename T>
T osszeg(T a, T b)
{
return a + b;
}
double negyzet(double x)
{
return x * x;
}