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

C++ Program do organizowania dnia.

Object Storage Arubacloud
0 głosów
429 wizyt
pytanie zadane 23 września 2018 w C i C++ przez XezolPL Obywatel (1,530 p.)

Witam mam problem, próbuję napisać program do organizowania czasu dnia. Coś jak timetune w ramach nauki i ćwiczenia. Nie potrafię przejść dalej, gdyż nie wiem jak mogę napisać voida wyświetlającgo wszystkie eventy a pozniej jeszcze zainkludować do niego mechanizm sortowania. Proszę o pomoc. 

#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <conio.h>

using namespace std;
int i=0;
void wyswietl()
{
    for (;i>=0; i--);
    cout << e[i];
}


class Event
{
    string nazwa;
    int godzina, minuta;
    public:
    void dodaj()
    {
        cout<< endl << "Podaj nazwe wydarzenia: ";
        cin >> nazwa;
        cout << endl << "Podaj godzine: ";
        cin >> godzina;
        cout << endl << "Podaj minute: ";
        cin>> minuta;

        if (godzina<0 || godzina>24 || minuta<0 || minuta>60 || nazwa=="") cout <<"ERROR!";
        else
        {
          /*  if(godzina<=9)
            if(minuta<=9)
                if(godzina==24) godzina =0 */
        }
    } //dodaj()
//Event(string n="brak",int g=0,int=0);
    void pokaz()
    {
        cout << "  " << nazwa << " - ";
        if (godzina<10) cout << " 0";
        cout << godzina << ":";
        if(minuta<10 ) cout << "0";
        cout << minuta;
    }


};
Event e[100];
int main()
{

    cout << "Organizator czasu" << endl<<endl<<endl;
    Sleep(1500);
    system("cls");
    char wybor;

 while (wybor!=4 )
 {

    cout << "Menu glowne" << endl;
    cout << "1.Dodawanie wydarzenia" << endl;
    cout << "2.Zrob cos xD" << endl;
    cout << "3.O twory" << endl;
    cout << "4.Zakoncz program" << endl<<endl;
    cout<< "Wybor: ";
    cin >> wybor;
    switch (wybor)
    {

        case '1':
            {
                char wybor2;


                cout<<"1. Dodaj"<<endl;
                cout<<"2. Menu glowne"<<endl;
                cout <<endl<< "Wybor: ";



                cin>>wybor2;
                switch (wybor2)
                {
                    case '1':
                        {

                            e[i].dodaj();
                            e[i].pokaz();
                            i++;

                        }
                    case '2': break;
                }

        break;
            }



    }//switch
    Sleep(300);
system("cls");
 }//while




    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 23 września 2018 przez PanRik Gaduła (4,510 p.)
wybrane 23 września 2018 przez XezolPL
 
Najlepsza

Powinieneś zrobić sobie zmienną klasy bolowską 

bool wasEventCreated

;
Ustawiasz ją sobie w konstruktorze na false, a po wywołaniu funkcji: dodaj() na true.
W funkcji pokaz() robisz sobie

if( true == wasEventCreated )

do całej funkcji.

W tym momencie jeżeli w forze wyświetliłbys wszystkie eventy to wyświetlą się tylko te utworzone.
 
Edit: Do tego jak wyświetlasz, to powinieneś zrobić sobie jednego std::string z godziną i minutą. W klasie tworzysz sobie zmienną

std::string whatTime

 W funkcji dodaj robisz:

whatTime = godzina+":"+minuta+":"+"00";

Oczywiście jeżeli godzina jest np. 9 to dodajesz:

whatTime="0"+godzina+":" itd.

to samo z minutą.
Co do sortowania to w jaki sposób chcesz to sortować? Nazwami? Godzinowo?

komentarz 23 września 2018 przez niezalogowany
Metoda push_back() dodając nowy element do tablicy, dba o to, aby tablica była odpowiedniego rozmiaru. Za każdym razem, gdy brakuje miejsca, tablica jest powiększana - rezerwowana jest nowa, większa przestrzeń, stare elementy są kopiowane, aby do większej tablicy móc dodać dany element. Z reguły rezerwowana jest pamięć dwa razy większa od poprzedniej. W skrajnej sytuacji, może się zdarzyć, że zarezerwowana pamięć jest prawie dwa razy większa niż ilość elementów znajdujących się w niej! 

Tak, lecz zwróć uwagę na to, że będzie max dwa razy zarezerwowanej pamięci. Czyli przy np. 24 obiektach zaoszczędzisz połowę pamięci. A jeśli wiesz około ile ich będzie, możesz stworzyć vector o danej wielkości, a jeśli będzie potrzeba więcej to można dodać.

komentarz 23 września 2018 przez PanRik Gaduła (4,510 p.)
A co się stanie jeżeli pamięci nie uda się zaalokować?
Nie wiem w sumie czemu rozmawiamy o tak podniosłych problemach w tak prostym programie. Naprawdę tablica 60 czy 30 w przypadku zwykłego int`a to jakaś różnica w programie do nauki? Używanie STL`a proponowałbym w momencie kiedy rozumiemy działanie tablic i lokowania pamięci na stosie, nawet sami sobie napiszmy taki vector.

Kolega nie chciał vectorów, więc zaproponowałem takie rozwiązanie.
komentarz 23 września 2018 przez XezolPL Obywatel (1,530 p.)
Nie rozumiem nawet o co się kłucicie jestem początkujący, chciałem ten programik napisać już od 3msc w końcu mniej więcej działa... Tak może poza tematem ale polecicie jakieś darmowe formy kształcenia w c++ oprócz kursów zelenta i już właśnie te kursy zeby były o już truniejszych rzeczach a nie znowu powtarzanie tego samgo co w tym kursie?
komentarz 23 września 2018 przez PanRik Gaduła (4,510 p.)

Polecam Ci książkę: symfonia C++ dwa tomy.
A jeśli chodzi o STL`a czyli vectory i takie inne to: 

https://www.pluralsight.com/paths/c-plus-plus
"Beautiful C++: STL Algorithms"

Można zakombinować membera na 3 miesiące za darmo, nie powiem Ci jak ale łatwo można znaleźć :D

komentarz 24 września 2018 przez niezalogowany
Ja polecam Ci wziąć się za jakieś projekty, ewentualnie SPOJ i uczyć sie w trakcie z internetu, z najróżniejszych tutoriali. Np. Robisz grę w której potrzebujesz przesuwania kursora w konsoli. W internecie znajdujesz ncurses i tutorial do niej, uczysz się z niego i umiejętność plus :)

A co do książek to jak kolega wyżej Symfonia, ewentualnie później Szkoła programowania, ale bardziej jako zbiór wiedzy, a nie do nauki, wiem z doświadczenia :)
0 głosów
odpowiedź 23 września 2018 przez niezalogowany

Ja bym nie tworzył od razu 100 eventów, ale stworzył vector obiektów klasy event i do niego je dodawał. Wypisywać wtedy można za pomocą for'a. A sortowanie to tak samo w pętli. Ja bym zrobił tak godz. * min. i posortować. Jak? Np tak:

https://www.p-programowanie.pl/matura-z-informatyki/sortowanie-babelkowe-c/

komentarz 23 września 2018 przez XezolPL Obywatel (1,530 p.)
Kurde nie uczyłem się jeszcze vectorów a wiedziałem że prędzej czy później bd musiał :/ a nie da sie jakoś inaczej? a godzina x minuta tez nie zawsze bo patrz np jest 2:50 =2*50=100 a np 3:11=3*11=33 :C
komentarz 23 września 2018 przez XezolPL Obywatel (1,530 p.)

@Leonardo63, ooo a jakby zrobic int wynik=godziny*1000+minuty ? wtedy chyba w kazdym przypaku sorting będzie dobry

 

komentarz 23 września 2018 przez niezalogowany

Vectory są proste, a warto. Przykładowy kod:

#include <vector> 

class Class
{
public:
Class();
}

int main()
{
std::vector<Class> objects;

...

Class c1;

...

objects.push_back(c1);

..

return 0;
}

A co do sortowania mój błąd. Godz. * 60 + Min.

Podobne pytania

+2 głosów
0 odpowiedzi 411 wizyt
+8 głosów
1 odpowiedź 628 wizyt
+7 głosów
0 odpowiedzi 339 wizyt

92,576 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...