• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki wybrać fragment?

VPS Starter Arubacloud
0 głosów
208 wizyt
pytanie zadane 19 maja 2017 w C i C++ przez Ala123456 Użytkownik (760 p.)
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <ctime>
#include <cstdlib>
#include <map>
using namespace std;
using std::cout;
 
string doubleToStr(double var)
{
    ostringstream strs;
    strs << var;
    std::string str = strs.str();
    return str;
}
 
class PodKorzen
{
public:
    double value;
    PodKorzen *wieksze = NULL;
    PodKorzen *mniejsze = NULL;
 
    PodKorzen(double value)
    {
        this->value = value;
    }
 
    void Add(double wart)
    {
        if (mniejsze == NULL && wieksze == NULL)
            mniejsze = new PodKorzen(wart);
        else if (mniejsze != NULL && wieksze != NULL)
        {
            if (wart < mniejsze->value)
            {
                mniejsze->Add(wart);
            }
            else
            {
                wieksze->Add(wart);
            }
        }
        else // mniejsze jest wieksze niema(odwrotnie nie moze byc)
        {
            if (wart > mniejsze->value)
                wieksze = new PodKorzen(wart);
            else
            {
                wieksze = mniejsze;
                mniejsze = new PodKorzen(wart);
            }
        }
    }
    void show(int zagniezdzenie = 0, int lSpacji = 0, bool czyPierwsze = false)
    {
        if (!czyPierwsze)
        {
            for (int i = 0; i < lSpacji; i++)
            {
                cout << ' ';
            }
        }
        for (int i = 0; i < zagniezdzenie; i++)
        {
            cout << '-';
        }
        cout << value;
 
        if (mniejsze != NULL && wieksze != NULL)
        {
            mniejsze->show(zagniezdzenie + 1, lSpacji + doubleToStr(value).length() + zagniezdzenie, true);
            wieksze->show(zagniezdzenie + 1, lSpacji + doubleToStr(value).length() + zagniezdzenie);
        }
        else if (mniejsze != NULL)
            mniejsze->show(zagniezdzenie + 1, lSpacji + doubleToStr(value).length() + zagniezdzenie, true);
        else if (wieksze != NULL)
            wieksze->show(zagniezdzenie + 1, lSpacji + doubleToStr(value).length() + zagniezdzenie, true);
 
        if (mniejsze == NULL && wieksze == NULL) // aby nie robilo za duzo spacji
            cout << endl;
    }
    bool Search(double wart)
    {
        if (wart == value)
            return true;
        else if (mniejsze != NULL && wieksze != NULL)
        {
            if (wart < mniejsze->value)
                return mniejsze->Search(wart);
            else
                return wieksze->Search(wart);
        }
        else if (mniejsze != NULL) // mniejsze jest wiekszego nie ma
        {
            if (wart < mniejsze->value)
            {
                return mniejsze->Search(wart);
            }
            else // bo nie ma wiekszego a wartosc jest wieksza
                false;
        }
        else // bo jak nie ma mniejszego to i wiekszego
            false;
    }
    double Minimum()
    {
        if (mniejsze == NULL)
            return value;
        return mniejsze->Minimum();
    }
    double Maximum()
    {
        if (wieksze == NULL)
            return value;
        return wieksze->Maximum();
    }
};
class Korzen
{
public:
    map<int, PodKorzen*> podrzewa;
 
    void Insert(double x)
    {
        if (podrzewa[(int)x] == NULL)
            podrzewa[(int)x] = new PodKorzen(x);
        else
            podrzewa[(int)x]->Add(x);
    }
    void Show()
    {
        for (pair<int, PodKorzen *> p : podrzewa)
        {
            p.second->show();
        }
    }
    bool Search(double klucz)
    {
        if (podrzewa[(int)klucz] != NULL)
            return podrzewa[(int)klucz]->Search(klucz) == true;
        else
            return false;
    }
    double Minimum(double klucz)
    {
        if (podrzewa[(int)klucz] != NULL)
            return podrzewa[(int)klucz]->Minimum();
    //  else error podano zly klucz
    }
 
    double Maximum(double klucz)
    {
        if (podrzewa[(int)klucz] != NULL)
            return podrzewa[(int)klucz]->Maximum();
        //  else error podano zly klucz
    }
 
};
 
int main()
{
 
    // POMINĘ CZYSZCZENIE ZASOBÓW BO NIE O TO TU CHODZI I TYLKO ZAŚMIECAĆ KOD BĘDZIE
    srand(time(NULL));
 
    Korzen k;
    k.Insert(1.5);
    k.Insert(1.3);
    k.Insert(1.6);
    k.Insert(3.5);
    k.Insert(3.7);
    k.Insert(4.5);
    k.Insert(4.0);
    k.Insert(4.99);
    k.Insert(7.5);
    k.Insert(7.3);
    k.Insert(7.8);
    k.Insert(7.7);
    k.Insert(7.9);
    k.Insert(7.6);
    k.Insert(9.5);
    k.Insert(9.3);
 
    k.Show();
 
    cout << endl;
 
    cout << k.Maximum(7) << endl;
    cout << k.Minimum(7) << endl;
 
    // test 3
 
    std::clock_t start = std::clock();
    double duration;
 
    Korzen nowy;
    for (int i = 10; i <= 50; i++) //insertowanie
    {
        nowy.Insert(i / 10.0); // 990 insertow
    }
    nowy.Show();
 
    for (int i = 10; i <= 50; i++) //szukanie, min i max
    {
        nowy.Search(i / 10.0);
        nowy.Maximum(i / 10.0);
        nowy.Minimum(i / 10.0);
    }
 
    duration = (std::clock() - start) / (double)CLOCKS_PER_SEC;
 
    std::cout << "czas: " << duration << '\n';
 
    cin.get();
}

W tym kodzie potzrebuję wybrać fragment ok 16 linii który jest najważniejszy i uzasadnic dlaczego . Niestety wszytko wydaje mi się dosć istotne. Ktoś pomoże w wyborze byłbym bardzo wdzieczny.

1 odpowiedź

0 głosów
odpowiedź 19 maja 2017 przez j23 Mędrzec (195,220 p.)
Najważniejszy? Pod jakim względem?
komentarz 19 maja 2017 przez Ala123456 Użytkownik (760 p.)
Poprostu który fragment wydaje się najisotniejszy w tym programie

Podobne pytania

+1 głos
3 odpowiedzi 1,289 wizyt
pytanie zadane 8 sierpnia 2016 w Java przez niezalogowany
0 głosów
2 odpowiedzi 383 wizyt
pytanie zadane 23 września 2023 w C# przez sisOOO Obywatel (1,370 p.)
0 głosów
3 odpowiedzi 517 wizyt

92,960 zapytań

141,922 odpowiedzi

321,157 komentarzy

62,295 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...