Code tính tổng dãy số bị sai kết quả

Mn kiểm tra giúp e kết quả bài này với ạ! Cái chỗ tổng nó lại không ra đúng kết quả :((

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	int dem,tong,x;
	dem=0;
	tong=0;
	do 
	{
		cout<<"nhap so thu "<<(dem+1)<<":";
		cin>>x;
		dem++;
		tong=tong+x;
	}
	while(x!=-1);
	dem=dem-1;
	cout<<"Co "<<dem<<" so trong day so"<<endl;
	cout<<"tong cac chu so la: "<<tong;
	return 0;
}

Về mặt nguyên tắc, có x xong rồi bạn phải check ngay, nhưng hãy thử suy nghĩ xem nếu bạn có -1 thì làm sao lấy ra :slight_smile:

4 Likes

Khi x = -1

  • Đúng: tong, dem giữ nguyên giá trị, thoát chương trình nhập -> in ra kết quả
  • Sai (của bạn): thay đổi giá trị của tổng.

Cách khắc phục:
Cách 1:

Cách 2:
Kiểm tra

if(x != -1){
    dem++;
    tong += x;
    //k khuyến khích
}

Cách 3:
Thay đổi giá trị khởi tạo ban đầu và bỏ luôn dòng code

dem = -1;
tong= 1;

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?