Ai rành giúp mình giải thích đoạn nhỏ C++ này với

PhamHongViEHG

Junior
Joined
Jun 15, 2014
Messages
281
Reactions
269
MR
0.028
tiếp tục edit nhá.. mỗi ngày úp chục bài vừa để hỉu vừa ứng phó luôn...hihi 30 câu thôi
bài toán đổi thập phân qua nhị phân... ai giải thích giúp mình phần thuật toán phần void doi10qua2 với... ko phải ngại heehe so với congdongcviet thì bên này mình thấy giải thích nhanh hơn về mặt time nè :P
Code:
void nhap(int &n)
{
    cout<<"Nhap n: ";cin>>n;
}
void doi10qua2(int n)
{
    int a[10],i;
    cout<<"\n- Doi "<<n<<" qua nhi phan la: ";
    for(i=0;i<8;i++)
    a[i]=0;
    while (n>0)
    {
          a[--i]=n%2;
          n=n/2;
    }
    for(i=0;i<8;i++)
    cout<<a[i];
}
void main()
{
    int n;
    nhap(n);
    doi10qua2(n);
}
 
Last edited:

boykocodon

Senior
Joined
Apr 22, 2013
Messages
488
Reactions
112
MR
0.530
Kiểm tra số i nhé
t = i/10 tức là lấy chữ số đầu tiên. Vd 47/10 = 4, 73/10=7 là chữ số đầu tiên
k = i%10 là lấy chữ số thứ 2. Vd 47%10=7, 49%10=9, 53%10 = 3 là chữ số thứ 2
Đó là 2 chữ số đầu và cuối.
Kiểm tra tổng 2 chữ số đầu cuối này = 5 là đoạn t+k ==5.
Nếu đúng thì tăng biến dem lên 1
Nhw vậy cuối cùng là ra được có bao nhiêu số nằm giữa a và b mà tổng của 2 chữ số = 5
 

dinhbuu144

Banned
Joined
Jan 3, 2012
Messages
2,127
Reactions
1,867
MR
0.000
biến i chạy từng số nằm giữa 2 số đó
t=i/10 -> lấy giá trị hàng chục (ví dụ i=65 thì i/10=6) => lấy số hàng chục
k=i%10 ->chia 10 lấy dư (ví dụ 65/10 = 5) => lấy số hàng đơn vị
tổng t+k = 6+5 = 11 # 5
 

ncxn

Hero
Joined
Feb 15, 2012
Messages
2,666
Reactions
2,244
MR
0.000
void nhap(int &a,int &b)
{
cout<<"nhap so a co 2 chu so: ";cin>>a;
cout<<"nhap so b co 2 chu so: ";cin>>b;
}
void cau6(int a,int b)
{
int t,k,dem=0;
for(int i=a+1;i<b;i++)
{
t=i/10;
k=i%10;
if(t+k==5)
{
dem++;
}

}
cout<<"- Co "<<dem<< " so > "<<a<<" < "<<b<<" co tong cac chu so bang 5"<<endl;
}
void main()
{
int a,b;
nhap(a,b);
cau6(a,b);
}
ai giải thích rõ ràng tường tận đoạn màu đỏ với ạ. ..đề bài là nhập 2 số a b ... kiểm tra xem có bao nhiêu số nằm giữa a và mà tổng của số đó là 5..
vd a=46 b=52 các số giữa là 47,48,49,50,51
vậy có 1 số có tổng là bằng 5
t là hàng chục nên chia cho 10 ,
k là hàng đơn vị nên lấy số dư của số đó chia cho 10
 
Kiểm tra số i nhé
t = i/10 tức là lấy chữ số đầu tiên. Vd 47/10 = 4, 73/10=7 là chữ số đầu tiên
k = i%10 là lấy chữ số thứ 2. Vd 47%10=7, 49%10=9, 53%10 = 3 là chữ số thứ 2
Đó là 2 chữ số đầu và cuối.
Kiểm tra tổng 2 chữ số đầu cuối này = 5 là đoạn t+k ==5.
Nếu đúng thì tăng biến dem lên 1
Nhw vậy cuối cùng là ra được có bao nhiêu số nằm giữa a và b mà tổng của 2 chữ số = 5
giải thích giùm e cái chỗ tăng biến dem lên 1 với..... mục đích làm chi ta... cái này mơ mơ hồ
 
con cái phần mà tăng dem=dem+1 (dem++) nghĩa là sao ta.... cái kia e hiểu rồi tks
nó tăng lên phần tử thôi mà
ngoài vòng for nó để = 0, trong vòng for nếu thỏa mãn thì tăng thêm 1

Kết quả nó mới biết có bao nhiêu vòng for thỏa mãn hoặc bao nhiêu số thỏa mãn điều kiện
 
con cái phần mà tăng dem=dem+1 (dem++) nghĩa là sao ta.... cái kia e hiểu rồi tks
Thì đề bài là đếm xem có bao nhiêu số thoả mãn tổng 2 chữ số = 5
Thì lúc đầu mình đặt biến dem = 0
Mỗi khi tìm thấy 1 số thỏa mãn thì tăng biến dem lên 1
Thì gặp bao nhiêu số thỏa mãn tổng 2 chữ số = 5 thì biến dem sẽ tăng lên bấy nhiêu.
Thì cuối cùng biến dem chính là kết quả bao nhiêu số thỏa mãn
 
int n,i,kq,vitri ;// các biến là số nguyên
//float can ;
cout<<"nhap so nguyen n:= " ;
cin>>n ;
while ( n<2 )
{
cout<<"n nho hon 2 xin nhap lai\nnhap so nguyen n:= " ;//n là số nguyên >2
cin>>n ;
}
vitri=n/2;kq=1 ; // định nghĩa biến vitri kq
for (i=2; i<=vitri; i++) // định nghĩa i bắt đầu chạy từ số 2 đến giá trị n/2 =vitri
if (n%i==0) // nếu n chia hết cho i , nói cách khác nếu n chia hết cho bất kỳ số nào từ 2 đến n/2 thì nó không phải là số nguyên tố, được gán biến kq = 0
{
kq=0 ; //kết quả trả về là 0, không phải là số nguyên tố
break ;
}
if (kq==0)
cout<<n<<" ko phai so nguyen to";
else
cout<<n<<" la so nguyen to" ;
---------------------------------------------------------------
 
int n,i,kq,vitri ;// các biến là số nguyên
//float can ;
cout<<"nhap so nguyen n:= " ;
cin>>n ;
while ( n<2 )
{
cout<<"n nho hon 2 xin nhap lai\nnhap so nguyen n:= " ;//n là số nguyên >2
cin>>n ;
}
vitri=n/2;kq=1 ; // định nghĩa biến vitri kq
for (i=2; i<=vitri; i++) // định nghĩa i bắt đầu chạy từ số 2 đến giá trị n/2 =vitri
if (n%i==0) // nếu n chia hết cho i , nói cách khác nếu n chia hết cho bất kỳ số nào từ 2 đến n/2 thì nó không phải là số nguyên tố, được gán biến kq = 0
{
kq=0 ; //kết quả trả về là 0, không phải là số nguyên tố
break ;
}
if (kq==0)
cout<<n<<" ko phai so nguyen to";
else
cout<<n<<" la so nguyen to" ;
---------------------------------------------------------------
//mình ko gán kq=1 được không nhỉ... thấy nó chả tác dụng gì ta...
n chia i lấy dư là 0 thì kq=0... nếu kq=0 thì không phải số nguyên tố và ngược lại

cái kq gán =1 làm chi vậy ta
 

Announcements

Forum statistics

Threads
426,353
Messages
7,175,881
Members
178,802
Latest member
dayngheeac

Most viewed of week

Most viewed of week

Back
Top Bottom