Hírek

Hírek

2023. május 12.

Tájékoztató programozás demonstrátorságról az EET-n.

2022. szeptember 21.

Visual Studio-ban a fordító nem szereti a scanf-et. Írjuk be a program legelejére (a #include-ok ELÉ!), hogy:

#define _CRT_SECURE_NO_WARNINGS

2014. október 17.

A ZH, jelenlét, nagy házi adminisztrációs portálja a https://ttkprog.eet.bme.hu/adminlogin.php címen elérhető.

2013. október 18.

A fizikus nagy házi feladatok oldala itt található.

2013. október 1.

Visual C++-ban az M_PI és a többi matematikai konstans a math.h beszerkesztése elé beírt _USE_MATH_DEFINES makro definícióval történik, azaz pl.:

#include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>

int main(){
    double a = sin(M_PI/4.0);
    
    return 0;
}

2012. október 24.

A felhasználótól való adatbekéréssel kapcsolatos gyakorlati összefoglaló.

2011. október 28.

Adott a következő deklarációval megadott függvény:
double f(double);
(Ugyanúgy használhatjuk, mint pl. az sqrt(), vagy a sin() függvényt.)
Írj C programot, amely ε=10-6 pontossággal kiszámítja és kiírja az f(x)=0; egyenlet gyökét az x = [2,10] zárt intervallumban! Annyit biztosan tudunk f(x)-ről, hogy a [2,10] intervallumban folytonos, és pontosan egy gyöke van.

 

#include <stdio.h>

int main(){
    double also=2.0, felso=10.0, kozep;
    while( felso - also > 1e-6 ){
        kozep = ( also + felso ) / 2.0;
        if( f(kozep) * f(also) > 0.0 )  // az azonos előjelűt cseréljük
            also = kozep;
        else felso = kozep;
    }
    printf("gyok=%g\n", ( also + felso ) / 2.0 );
    return 0;
}

2011. március 2.

Egy házi feladathoz született az alábbi vélemény. Úgy gondolom, tanulságos lehet többeknek, ezért megosztom a társasággal:

 

A >> és << operátorokat nem tagfüggvényként, hanem globális függvényként kell megvalósítani.Úgy látom, nem egészen világos az operátor függvények értelme.

 

class Komplex{ double re,im; public: Komplex operator +(Komplex b){ Komplex sum; sum.re = re + b.re; sum.im = im + b.im; } };

itt pl. a sum.re = re + b.re; helyett lehet írni, hogy sum.re = this->re + b.re;

(Ha nem írjuk oda a this-t, akkor a fordíto teszi oda helyettünk.)

 

Használat:

Komplex a,b,c;

c = a + b;

 

Ugyanezt így is lehetett volna írni:

c = a.operator+(b);

A fordító is ezt helyettesíti.

 

Ha ide az ön megoldásában

 

(Komplex& operator+ (Komplex ado) {re= re + ado(re); im= im + ado(im);} ;)

 

szereplő operator + -t képzeljük, akkor az látszik, hogy a c= a+b; kifejezésben a értéke növelődne meg, pedig nem ezt várjuk egy ilyen kifejezéstől. A visszatérési érték is hiányzik, ami c-be kerülhetne. A + operátor nem adhat vissza referenciát, mert egy új eredmény keletkezik egy új változóban, amit lokális változóként hozunk létre.

 

Ahogy megvalósította a >> és << operátorokat, az a következő módon lenne használható:

a << b;

Nem így szoktuk használni ezeket, hanem

cout << a;

formában. Ha megnézi a + operátor függvényét, látja, hogy a c=a+b; kifejezésben a +-tól balra lévő változó + operátora hívódott meg. A << esetén ugyanez a helyzet, vagyis a cout nevű, ostream típusú változó << tagfüggvénye kéne hívódjon. Van neki ilyen? Nincs. És nem is illene nekünk belehekkelni egy ilyet. Szerencsére a C++ megengedi globális operátorfüggvények létrehozását. Ezek az operátortól balra és jobbra lévő változót is paraméterként kapják, és nem tagfüggvényei egyik osztálynak sem. A + operátor így valósítható meg globális függvényként:

 

Komplex operator +(const Komplex & a, const Komplex & b){ Komplex c; c.re = a.re + b.re; c.im = a.im + b.im; return c; }

Ez a függvény tehát nem a Komplex osztályba kerül beírásra, hanem azon kívül! A függvényt viszont friend-ként hozzá kell adni az osztályhoz, vagy az osztály lekérdező függvényeit (getRe, getIm) használni!

Ugyanennek egy trükkösebb megvalósítása:

 

Komplex operator +(const Komplex & a, const Komplex & b){ return Komplex(a.re + b.re, a.im + b.im); }

A << operátor megvalósítása globális függvénnyel:

 

ostream & operator<<(ostream & os, const Kompex & a){ os << a.re << showpos << a.im << 'j'; return os; } istream & operator >>(istream && is, Komplex & a){ is >> a.re >> a.im; is.ignore(); }

2011. február 15.

Egy dgb tutorial: http://www.cs.cmu.edu/~gilpin/tutorial/