Keresés

Új hozzászólás Aktív témák

  • sko

    csendes tag

    válasz bandi0000 #3673 üzenetére

    A problémára két egyszerű megoldás létezik.

    1. tegyél egy cin >> ws; -t a cin.getline() elé.

    2. használj a második, azaz a szám beolvasásához is getline() -t.

    A lényeg, hogy a getline egy adott delimiterig olvas és azt el kell tüntetni az input buffer-ből, mielőtt a második ciklus eljut a getline()-ig. Azaz egy további "retro" megoldás lehet

    3. tegyél egy getchar() -t a cin.getline() elé.

    A getline delimiterét egyébként megadhatod neki harmadik paraméterként. A default értéke '\n'.

  • sko

    csendes tag

    válasz KREE #3715 üzenetére

    KREE, a C++-ban (OOP-ban) való programozás egyik alaptulajdonsága, hogy nem jó a később majd megszépítjük módszer, már az alapokat is jól kell lerakni. A te feladatod központi problémája két pont távolságának kiszámítása. Először ezt kell C++-ban leprogramozni. Íme itt egy lehetséges implementáció. Remélem minden tiszta benne, ha nem kérdezz nyugodtan! Ha tiszta, akkor innen kell továbblépni a pontok konténerekbe tárolásával és távolságuk kiszámításával.

    #include <iostream>
    #include <cmath>

    using namespace std;

    class Point
    //If you need to calculate the distances of points, always start with creating a point object type.
    {
    int x = 0;
    int y = 0;

    public:

    Point(): x(0), y(0) {}
    Point(int X, int Y): x(X), y(Y) {}

    float operator - (const Point&);
    //Overloaded minus operator to calculate the distance of two points.
    //This will enormously simplify your work later.
    };

    float Point::operator - (const Point& other)
    {
    int X = x - other.x;
    int Y = y - other.y;
    //No abs() necessary, because we will square the coordinates anyway.
    float distance = sqrt(X*X + Y*Y);
    //Could be double, long double, whatever you like.
    return distance;
    //There is no real need for this variable, you could return the result of sqrt() directly. Whatever you like.
    }

    int main()
    {
    Point middlepoint(8,-6);
    Point endpoint(-5,10);

    float dist = middlepoint - endpoint;
    //Calculate the distance of these points. It's just that simple.
    cout << dist << endl;

    return 0;
    }

  • sko

    csendes tag

    válasz dobragab #3718 üzenetére

    Szívesen!

    Nem ismerem a feladat részleteit, de a jó megoldás valószínűleg pont, kör, szakasz, stb. osztályokból állhat össze. A kör/szakasz képes lesz legalább az előre ismert pontjait tartalmazni (középpont, végpontok), esetleg adott pillanatban még ismeretleneket kiszámolni. Egy objektum másiktól való távolsága pedig a pontokon keresztül kerül meghatározásra.

    Ha a feladatleírásban olyan jól behatárolható objektumok vannak, mint pont/kör/szakasz, akkor a programban is hasznos lehet leképezni azokat. A program törzse ezeken az objektumokon dolgozik, a háttérmunkát pedig az objektumokhoz rendelt "képességek" végzik el.

    Jó kódolást!

  • sko

    csendes tag

    válasz semij9699 #3740 üzenetére

    Ha a feladatleírás tényleg csak annyi, hogy "Készítsen alkalmazást gőzgép modellezésre! Tárolja el fájljba az aktuális dátumot, időt, fordulatszámot!", akkor a bemeneted lehet a fűtés mértéke, ami némi késleltetéssel kiváltja a fordulatszám változását. Alapállapotban melegítés nincs, vízhőfok a környezetével megegyező, gőznyomás nincs, fordulatszám 0. A legegyszerűbb, ha a gép aktuális állapotát kizárólag a fordulatszámmal írod le.
    Ha a fűtés intenzitása nő, később a fordulatszám is emelkedni kezd, amíg el nem éri az adott fűtési fokhoz tartozó fordulatszámot. Ha a fordulatszám elérte a maximumot, akkor további melegítés hatására már nem nő (tegyük fel, kinyit egy biztonsági szelep). Ha a fűtés alábbhagy, a fordulatszám is csökkenni fog.
    Nehéz így kitalálni, de a megoldás állhat abból, hogy van valamilyen mód a fűtés fokának változtatására a form-on, ugyanott megjelenik az éppen aktuális fordulatszám, illetve azt kiírod egy fájlba a datetime-mal együtt.

Új hozzászólás Aktív témák