繼承人的頭文件http://pastebin.com/g0z7LkeN 繼承人的實現文件http://pastebin.com/USHbjbYC爲什麼我的打印功能吐出垃圾和我目前的功能無法正常工作?
,這裏是測試調試程序文件(不應該改變它)
// FILE: sequence_test.cpp
// An interactive test program for the new sequence class
#include <cctype> // Provides toupper
#include <iostream> // Provides cout and cin
#include <cstdlib> // Provides EXIT_SUCCESS
#include "sequence2.h" // With value_type defined as double
using namespace std;
using namespace CISP430_A2;
// PROTOTYPES for functions used by this test program:
void print_menu();
// Postcondition: A menu of choices for this program has been written to cout.
char get_user_command();
// Postcondition: The user has been prompted to enter a one character command.
// The next character has been read (skipping blanks and newline characters),
// and this character has been returned.
void show_sequence(sequence display);
// Postcondition: The items on display have been printed to cout (one per line).
double get_number();
// Postcondition: The user has been prompted to enter a real number. The
// number has been read, echoed to the screen, and returned by the function.
int main()
{
sequence test; // A sequence that we’ll perform tests on
char choice; // A command character entered by the user
cout << "I have initialized an empty sequence of real numbers." << endl;
do
{
print_menu();
choice = toupper(get_user_command());
switch (choice)
{
case '!': test.start();
break;
case '+': test.advance();
break;
case '?': if (test.is_item())
cout << "There is an item." << endl;
else
cout << "There is no current item." << endl;
break;
case 'C': if (test.is_item())
cout << "Current item is: " << test.current() << endl;
else
cout << "There is no current item." << endl;
break;
case 'P': show_sequence(test);
break;
case 'S': cout << "Size is " << test.size() << '.' << endl;
break;
case 'I': test.insert(get_number());
break;
case 'A': test.attach(get_number());
break;
case 'R': test.remove_current();
cout << "The current item has been removed." << endl;
break;
case 'Q': cout << "Ridicule is the best test of truth." << endl;
break;
default: cout << choice << " is invalid." << endl;
}
}
while ((choice != 'Q'));
return EXIT_SUCCESS;
}
void print_menu()
// Library facilities used: iostream.h
{
cout << endl; // Print blank line before the menu
cout << "The following choices are available: " << endl;
cout << " ! Activate the start() function" << endl;
cout << " + Activate the advance() function" << endl;
cout << " ? Print the result from the is_item() function" << endl;
cout << " C Print the result from the current() function" << endl;
cout << " P Print a copy of the entire sequence" << endl;
cout << " S Print the result from the size() function" << endl;
cout << " I Insert a new number with the insert(...) function" << endl;
cout << " A Attach a new number with the attach(...) function" << endl;
cout << " R Activate the remove_current() function" << endl;
cout << " Q Quit this test program" << endl;
}
char get_user_command()
// Library facilities used: iostream
{
char command;
cout << "Enter choice: ";
cin >> command; // Input of characters skips blanks and newline character
return command;
}
void show_sequence(sequence display)
// Library facilities used: iostream
{
for (display.start(); display.is_item(); display.advance())
cout << display.current() << endl;
}
double get_number()
// Library facilities used: iostream
{
double result;
cout << "Please enter a real number for the sequence: ";
cin >> result;
cout << result << " has been read." << endl;
return result;
}
當我點擊選項P在debuger打印整個序列它永遠不會正常工作,並經常吐出垃圾,當我在調試器菜單中點擊c後,或在附加2個數字後,它似乎無法正常工作。我analized我的算法,我不明白爲什麼他們arent工作的權利..
你到目前爲止嘗試過什麼?你認爲問題在哪裏?調試器指出哪些具體問題? – templatetypedef 2012-02-13 06:58:29
我試圖在插入函數的數據下標中加1,並嘗試減1,但那些沒有奏效,我不知道問題出在哪裏,實際上當我點擊附件後當前工作正常,但是當我點擊開始或提前時無論做什麼或打印出垃圾,打印功能都會在每次點擊時打印出垃圾。 – user1080889 2012-02-13 07:08:19
您是否曾嘗試在調試器中運行它,逐步完成相關功能並檢查變量? – 2012-02-13 07:12:24