Results 1 to 2 of 2

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date: Aug:2012
    Location: Òúðãîâèùå
    Posts: 297

    Âúïðîñ îòíîñíî C++ çàäà÷à

    Çäðàâåéòå, â÷åðà ñå ïîìú÷èõ äà ïðåñúçäàì ñòåê. Åñòåñòâåíî ñóïåð ïðèìèòèâíî. Ïî-äîëó ùå ïóñíà êîäà.
    Âúïðîñúò ìè å ìîæå ëè print-à, êîéòî å ðåêóðñèâåí äà ñå íàïðàâî ïî íåðåêóðñèâåí íà÷èí è ñúùî òàêà êàê ùå ñòàíå êîïèðàíåòî ( îò åäèí ñòåê åëåìåíòèòå äà ñå êîïèðàò â äðóã)? Print-à, êîéòî å ñ ðåêóðñèÿ ìèñëÿ, ÷å íå ñúì ãî íàïðàâèë ïî îñîáåíî äîáúð íà÷èí, òúé êàòî å â êëàñà Element, êîåòî íÿêàê ñè ìè å ìàëêî ñòðàííî - à âèå êàê ìèñëèòå? Çà êîïèðàíåòî èìàõ èäåÿ ñ ðåêóðñèÿè êàòî ñòèãíå äî ïîñëåäíèÿ åëåìåíò äà ïî÷íå äà äîáàâÿ åëåìåíòè â Ñòåêà, îáà÷å ïúê òîãàâà (àêî ãî íàïðàâÿ êàêâî print-a îñíîâíàòà ÷àñò äà å â Element) íÿìà äà èìà äîñòúï äî ñàìèÿ ñòåê. Èìåíàòà íà êëàñîâåòå è ñòðóêòóðàòà Element ñúì ãè âçåë îò åäíà êíèãà, à ìåòîäèòå ñúì ïèñàë ñàì. Ùå ñå ðàäâàì, àêî ìè ïîìîãíåòå îòêúì èäåè, äà êàæåòå êàêâè ñà íåäîñòàòúöèòå íà êîäà è êàê ìîãàò äà ñå îïðàâÿò,à àêî ïóñíåòå è íÿêîé äðóã êîä ùå å ñóïåð. Èíà÷å èäåÿòà íà êîäà å äà èìàì class Stack, êîéòî èìà óêàçàòåë êúì èíñòàíöèÿ îò Element, à ïúê òàçè èíñòàíöèÿ èìà íåéíà ñòîéíîñò è óêàçàòåë êúì äðóãà èíñòàíöèÿ íà Element è ò.í. Êàòî öÿëî òîâà, êîåòî ìè áåøå ñòðàííî áåøå òîâà, ÷å Element å ñòðóêòóðà(â êíèãàòà,à àç ãî íàïðàâèõ class ñ public äàííè). Ïî-ëîãè÷íî ìè ñå ñòðóâà äà å private äàííà íà

    Åòî ãî è êîäà:
    Code:
    class Element
    {
    public:
    	int value;
    	Element* previous;
    	void recursive_print_from_start_to_the_end() const;
    	
    };
    
    class Stack
    {
    public:
    	Stack() : last(NULL) {};
    
    	void copy_stack(const Stack&);
    	void add_element(int const &);
    	bool remove_last(int&);
    	int get_value() const;
    	void print_from_end_to_beginning() const;
    	void print_from_beginning_to_end_recursively() const;
    	void print_from_beginning_to_end() const;
    
    private:
    	Element* last; // should be private
    };
    
    
    
    void Element::recursive_print_from_start_to_the_end() const
    {
    	if (!previous)
    	{
    		cout << value;
    		return;
    	}
    
    	previous->recursive_print_from_start_to_the_end();
    	cout << value << endl;
    }
    
    
    
    void Stack::add_element(int const& number)
    {
    	Element* swap_pointer = last;
    	last = new Element;
    	last->value = number;
    	last->previous = swap_pointer;
    }
    
    bool Stack::remove_last(int& num)
    {
    	if (!last) return 0;
    
    	Element* del_pointer = last;
    	num = last->value;
    	last = last->previous;
    	delete del_pointer;
    	return 1;
    }
    
    int Stack::get_value() const
    {
    	return last->value;
    }
    
    void Stack::print_from_end_to_beginning() const
    {
    	Element* pointer = last;
    	while (pointer)
    	{
    		cout << pointer->value << endl;;
    		pointer = pointer->previous;
    	}
    }
    
    void Stack::print_from_beginning_to_end_recursively() const
    {
    	if (!last) cout << "The stack is empty!" << endl;
    
    	last->recursive_print_from_start_to_the_end();
    }
    
    void Stack::print_from_beginning_to_end() const
    {
    	
    }
    Ñðàâíèòåëíî íîâ ñúì â ÎÎÏ-òî è ëîøîòî å, ÷å êîãàòî òðúãíà äà ïðàâÿ íåùî íà ïðàêòèêà è âèæäàì, ÷å èëè íåùî íå ìè õàðåñâà è ìå ñúìíÿâà, ÷å ñúì ãî íàïðàâèë ïî ïðàâèëíèÿ íà÷èí èëè ïúê íå çíàì êàê äà ãî íàïðàâÿ.
    Áëàãîäàðÿ ïðåäâàðèòåëíî.

  2. #2
    Registered User
    Join Date: Jun:2012
    Location: Âàðíà / Ñîôèÿ
    Posts: 13,663
    Element *p = last;
    while(p != NULL)
    {
    cout << p->value << " ";
    p = p-> previous;
    }
    cout << endl;
    }

    òîâà ìåòîä íà ñòåêà. Êîïèðàø ïîñëåäíèÿò åëåìåíò â ïîèíòåðà p è èòåðàòèâíî ìèíàâàø ïî íåãî.

    ÏÏ: Òîçè êîìåíòàð ÷å òðÿáâà äà å private å áåçñìèñëåí. Âñè÷êè ÷ëåí äàííè òðÿáâà äà ñà è òîâà å ÿñíî íà âñåêè.
    Âñå åäíî äà èìàø ìåòîä print() è äà íàïèøåø êîìåíòàð //ïðèíòèðà

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Copyright © 1999-2011 Õàðäóåð ÁÃ. Âúçìîæíî å ñúäúðæàíèåòî íà òàçè ñòðàíèöà äà å îáåêò íà àâòîðñêè ïðàâà.
iskamPC.com | mobility.BG | Bloody's Techblog | Êðèïòîâàëóòè è ìàéíèíã | 3D Vision Blog | Ìàãàçèí çà åëåêòðîííè öèãàðè