Results 1 to 2 of 2
Thread: Âúïðîñ îòíîñíî C++ çàäà÷à
Hybrid View
-
14th April 2014 22:46 #1Registered 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 { }
Áëàãîäàðÿ ïðåäâàðèòåëíî.
-
14th April 2014 22:59 #2Registered 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() è äà íàïèøåø êîìåíòàð //ïðèíòèðà




Reply With Quote
Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè