30/09/2018, 19:44

Xem hộ e chương trình này sai ở đâu?

E muốn viết chương trình như sau: nhập một số nguyên dương, hãy viết ra màn hình số lượng các chữ số cần để viết từ số 1 đến số đó.
VD: n=12 kết quả in ra là 15 ( từ số 1 đến số 9 là 9 chữ số, từ số 10 đến số 12 cần 2 chữ số để viết)
E viết chương trình thế này nhưng kết quả ra sai mà chưa biết sai ở đâu

#include <iostream>
using namespace std;

int main() 
{
	int n;
	cin>>n;
	int a =0;
	int i=0;
	for (i<=n; i++;)
		{if (i<10) 
			{a=a+1;
			}
	
		if ((i>=10) &&(i<=99)) 
			{a=a+2;
			}
		}
	
	cout <<a;
	return a;
}
Ngô Doãn Tuấn viết 21:53 ngày 30/09/2018

{if (i<10)
{a=a+1;
}

	if ((i&gt;=10) &&(i&lt;=99)) 
		{a=a+2;
		}

Đoạn nay cần xử lí lại

Gió viết 21:55 ngày 30/09/2018

Kết quả luôn = 0
Vòng for có vấn đề xét i=0 code trong for bị bỏ qua

Văn Dương viết 21:48 ngày 30/09/2018

Đoạn này là như thế nào ?

int i=0;
for(i<=n;i++;)

Sao lại không viết rõ ra như thế này :

for(int i=0;i<=n;i++)
viết 22:01 ngày 30/09/2018

Vòng for cần sửa thành

for(; i<=n; i++)

hoặc

for(i=0; i<=n; i++)

Bạn nên xem lại cả coding style và thụt lùi đầu dòng cho chuẩn nữa

Hoa Vo Van viết 21:45 ngày 30/09/2018
int i=0;

sửa lại i chạy từ 1

Tú Anh Hoàng viết 21:44 ngày 30/09/2018
1. int i=0;
	for (i<=n; i++;) => for(int i=0;i<=n;i++)
2. xử lí với n <100 :stuck_out_tongue:
 tham khảo 

    #include <iostream>
    #include <sstream>
    #include <cmath>
    using namespace std;

    int main() 
    {
    	int n;
    	cin>>n;
    	
    			
    	string strInp;
    	ostringstream convert;
    	convert << n;
    	strInp = convert.str();
    	
    	int strlen= strInp.size();
    	int res=0;
    	
    	while(n>0){
    		strlen--;
    		res+=(n-pow(10,strlen)+1)*(strlen+1);
    		n=pow(10,strlen)-1;
    	}	
    	cout<<res;
    	return res;
    }
Bài liên quan
0