Đề bài là “Một tờ giấy có độ dày 0.1mm thì cần gấp bao nhiêu lần để tờ giấy có độ dày 1m”
mình đã hiểu được hướng giải quyết nhưng chạy ra cứ báo lỗi như hình dưới và đây là đoạn code
#include<stdio.h>
#include<conio.h>
main()
{
int i;
float t=0.1;
printf("Mot to giay co do day 0.1mm thi phai gap to giay ");
for(i=1;i<=10000;i++)
{
t=t*2;
if(t==10000)
printf("%d",i);
}
printf(" lan de co do day 1m");
getch();
}

float t=0.1; // thay bằng float t=0.1f; xem sao ?
không được lun
à ngoài xuất hiện thông báo lỗi đó nó còn tô đen cái dòng if(t==10000) của mình nữa?!
[QUOTE=keens0n;97308]không được lun
à ngoài xuất hiện thông báo lỗi đó nó còn tô đen cái dòng if(t==10000) của mình nữa?![/QUOTE]
T chạy bằng VS 2010 thì giải quyết dc cái lỗi trong hình mà không show ra kết quả nha @@
Bạn thử thay float t=0.1 bằng double t=0.1 xem.
Cứ gấp làm đôi nên không ra số 10000 đâu nên vòng lập cứ chạy hoài.
ừm mình cũng nghĩ v. tại vì 0,1 cấp số nhân lên thì dễ gì = 10k chắc mánh khóe của bài này chỉ cần hơn 1 mét là đc 
chạy vòng lập 10000 lần à…!!!
dùng while đi…với lại bạn đâu có in kết quả ra đâu…
#include<stdio.h>
#include<conio.h>
void main()
{
int i = 0;
float t = 0.1f;
printf("Mot to giay co do day 0.1mm thi phai gap to giay ");
while (t < 1000.0f)
{
i++;
t = t * 2;
}
printf("%d lan de co do day 1m", i);
getch();
}
[QUOTE=keens0n;97301]Đề bài là “Một tờ giấy có độ dày 0.1mm thì cần gấp bao nhiêu lần để tờ giấy có độ dày 1m”
mình đã hiểu được hướng giải quyết nhưng chạy ra cứ báo lỗi như hình dưới và đây là đoạn code
#include<stdio.h>
#include<conio.h>
main()
{
int i;
float t=0.1;
printf("Mot to giay co do day 0.1mm thi phai gap to giay ");
for(i=1;i<=10000;i++)
{
t=t*2;
if(t==10000)
printf("%d",i);
}
printf(" lan de co do day 1m");
getch();
}
[/QUOTE]
kiểu float không đủ để lưu trữ số số có giá trị 0.1x2^10000, bạn nên sửa lại thuật toán đi, bạn nên dựa vào cái thông báo lỗi (ở đây là overflow) để mà sửa