Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: vòng lặp

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    16

    Mặc định vòng lặp

    Code:
    #include <math.h> 
    #include <iostream> 
    
    using namespace std;
    
    void instruction();
    int calculator (char);
    void divide_by_zero ();
    float do_next_op (char, float, float);
    
    int main()
    { 
    	//input
    	char input;
    	float accum,num;
    
    	// instructions ();
    	void intruction();
    	accum = 0 ;
    
    	do
    	{ 
    		//get input 
    		cout<< " : " ;
    		cin >> input;
    		cin >> num;
    		cin.ignore();
    		// Do op
    		accum = do_next_op (input, num, accum);
    		//display result
    		cout << " Result so far : " << accum << endl;
    
    		cout << "  "<< endl      ;
    	} // end not quit
    	while (input != 'Q' && input != 'q' && input != '=');
    
    	cout << "Final result : " ;
    	system ("pause") ;  
    	return 0 ;
    }
    
    //instruct user 
    void instruction()
    { 
    	cout <<" This program models a simple calculator which can add, subtract,multiply,divide, power" << endl;
    	cout << " the calculator accumulate value after each operation " << endl;
    	cout << " press Q to quit the program " << endl;
    	cout << " Have fun with my program " << endl<< endl;
    }
    
    float do_next_op (char op, float num, float total)
    {
    	switch (op)
    	{
    		case '+' :
    			total += num;
    			break;
    
    		case '-':
    			total -= num;
    			break;
    
    		case '*':
    			total *= num;
    			break;
    
    		case '/': 
    			total /= num;
    			break;
    
    		case '^':
    			total = pow (total,num);
    			break ;
    
    		default :
    			cout << " syntax error"	<< endl;
    	}
    
    	return total;
    }
    
    void divide_by_zero ()
    {
    }
    cho em hỏi chương trình chạy good rồi nhưng ,nếu chia cho 0 hay nhap + a, -b,-c vào thì nó chạy infinite loop luôn. mấy anh sửa dùm em nha. gấp lắm
    thanks pro meoconlongvang da sua dum 1 phần .....

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Code cậu không handle hết thì nó lặp vô tận là đúng rồi, "num" là integer không phải string, cậu nhập vào -a, -b thì bảo sao nó không lặp vô tận ?
    - Trường hợp chia cho 0 cậu có handle đâu ?
    - void instruction() bỏ trong main thế à ? Lần sau chưa run code mà bảo đúng là chít với tui đó !!!
    - Tui thêm vào 1 cách handle input đơn giản, còn cậu muốn advance thì vào box Hướng dẫn C++, tui có 2 bài viết trong đó về phần này
    C++ Code:
    1. #include <math.h>
    2. #include <iostream>
    3. #include <limits>
    4.  
    5. using namespace std;
    6.  
    7. void  instruction();
    8. int   calculator( char );
    9. void  divide_by_zero();
    10. float do_next_op( char, float, float );
    11.  
    12. int main()
    13. {
    14.     char input;
    15.     float accum, num;
    16.  
    17.     instruction();
    18.     accum = 0 ;
    19.  
    20.     do {
    21.         bool goodflag = false;
    22.         cout << " \n Enter an operation : " ;
    23.         cin >> input;
    24.  
    25.         while( !goodflag ) {
    26.             cout << " Enter a number for do operation with operator " << input << "\n";
    27.             cin >> num;
    28.             if( cin.eof() || cin.bad() ) {
    29.                 break;
    30.             }
    31.             else if( cin.fail() ) {
    32.                 cout << "\n....( error detected ) you must input an integer. Try again !\n";
    33.                 cin.clear();
    34.                 cin.ignore( numeric_limits< int >::max(), '\n');
    35.                 continue;
    36.             }
    37.             else {
    38.                 goodflag = true;
    39.             }
    40.         }
    41.         cin.ignore( numeric_limits< int >::max(), '\n');
    42.  
    43.         if( input == '/' && num == 0 ) {
    44.             divide_by_zero();
    45.         }
    46.         else {
    47.             accum = do_next_op( input, num, accum );
    48.         }
    49.  
    50.         cout << " Result so far : " << accum << endl;
    51.         cout << "  " << endl;
    52.     }
    53.     while( input != 'Q' && input != 'q' && input != '=' );
    54.  
    55.     cout << "Final result : " ;
    56.  
    57.     return 0 ;
    58. }
    59.  
    60. //instruct user
    61. void instruction()
    62. {
    63.     cout << " This program models a simple calculator which can add, subtract,multiply,divide, power" << endl;
    64.     cout << " the calculator accumulate value after each operation " << endl;
    65.     cout << " press Q to quit the program " << endl;
    66.     cout << " Have fun with my program " << endl << endl;
    67. }
    68.  
    69. float do_next_op( char op, float num, float total )
    70. {
    71.     switch( op )
    72.     {
    73.         case '+' :
    74.             total += num;
    75.             break;
    76.  
    77.         case '-':
    78.             total -= num;
    79.             break;
    80.  
    81.         case '*':
    82.             total *= num;
    83.             break;
    84.  
    85.         case '/':
    86.             total /= num;
    87.             break;
    88.  
    89.         case '^':
    90.             total = pow (total,num);
    91.             break ;
    92.  
    93.         default :
    94.             cout << " syntax error" << endl;
    95.     }
    96.  
    97.     return total;
    98. }
    99.  
    100. void divide_by_zero()
    101. {
    102.     cout << "\n...Undefined behavior.\n";
    103. }

Các đề tài tương tự

  1. Kỹ thuật C++ Nhập và gán 1 kí tự trong vòng lặp sao cho khi không nhập kí tự thì vòng lặp lại chạy tiếp.
    Gửi bởi note194 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 12-08-2013, 09:11 PM
  2. Lập trình C++ giá trị của xâu trong vòng lặp và ngoài vòng lặp khác nhau
    Gửi bởi virus93ttll trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 14-05-2011, 02:43 PM
  3. Code cài đặt DSLK đơn vòng và kép vòng trên C++. Thêm 1 phần tử sau 1 phần tử trong DSLK đơn/kép
    Gửi bởi hoanghieu.fit.hcmus trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 09-04-2011, 02:54 PM
  4. Tìm max (Sử dụng vòng lặp)
    Gửi bởi cr9 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 13
    Bài viết cuối: 08-05-2010, 10:53 AM
  5. Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?
    Gửi bởi bk7million trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 29-04-2009, 07:46 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn