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
thì bỏ thử biết liền à
bỏ nó ra rồi nó sai.. ko bik nó có tác dụng gì.,. nhìu bài làm cái này cứ bị lỗi.. nhìu khi cái đơn đơn lạiko bik cứ mơ hồ =))
 

doansan

Junior
Joined
Jul 13, 2010
Messages
170
Reactions
63
MR
0.000
câu 1: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
úp thêm câu 2:
void main()
{
int n,i,kq,vitri ;
//float can ;
cout<<"nhap so nguyen n:= " ;
cin>>n ;
while ( n<2 )
{
cout<<"n nho hon 2 xin nhap lai\nnhap so nguyen n:= " ;
cin>>n ;
}
vitri=n/2;kq=1 ;
for (i=2; i<=vitri; i++)
if (n%i==0)
{
kq=0 ;
break ;
}
if (kq==0)
cout<<n<<" ko phai so nguyen to";
else
cout<<n<<" la so nguyen to" ;

getch() ;
}

ai chỉ mình đoạn bôi đỏ với... ngồi mò không bằng mỗi ng góp mỗi ý sẽ nhanh hơn tks ^^


Bài toán tìm số nguyên tố.
Số nguyên tố là số chỉ chia hết cho 1 và chính nó.
Do số nhập vào là bất kỳ nên người giải bài này đã lấy vitri= n/2 làm miền xét giá trị.
Xét từ 2 đến vitri nếu n chia hết (% tức là phần dư sẽ = 0) => số vừa nhập vào chia hết cho >=3 số => không phải số nguyên tố.

kq là một biến sử dụng làm cờ kiểm tra xem sau khi duyệt từ 2 đến vitri có tồn tại số mà n chia hết hay ko.
nếu có tức kq = 0 => số n ko phải là số nguyên tố
break là lệnh nhảy nếu tồn tại sô i trong khoảng 2 đến vitri mà n chia hết thì sẽ thoát khỏi vòng lặp for
 
nếu ko gán thì nó trả về null chứ không phải kiểu dữ liệu nữa, vì khi kq= 0 thì nó break; rồi
cũng ko muốn hỏi nữa nhưng để cho chắc chắn a cho hỏi câu cuối .. NULL là gì, gán kq=0 và kq=1 vì sao nó lại khác nhau?
xong cấu này là close topic dc hihi
 

daosythui79

Banned
Verified
Joined
Jul 9, 2011
Messages
1,445
Reactions
1,140
MR
0.000
cũng ko muốn hỏi nữa nhưng để cho chắc chắn a cho hỏi câu cuối .. NULL là gì, gán kq=0 và kq=1 vì sao nó lại khác nhau?
xong cấu này là close topic dc hihi
NULL là giá trị sai, còn thằng kq = 0 là nó thoát rồi nên phải gán kq = 1
 

faluyt

Senior
Verified
Pre-verified
Joined
Sep 15, 2014
Messages
342
Reactions
168
MR
0.580
$500.00
Services
Follow me on Facebook
1. Bạn nên viết đề bài ra rồi mới đến code. Câu này (thời điểm 10h50 ) là kiểm tra 1 số có phải là giai thừa của 1 số khác hay ko
2. Tại sao là a mà ko phải là n: Là gì cũng đc. Ở trên là khai báo hàm, nó nhận vào là 1 biến, sau biến đó được dùng như thế nào là việc của gọi hàm chứ không phải của hàm đó nữa. Giống như toán học, bạn viết y = f(x) thì x có thể là a, b, c ,1, 2,3...
3. Đoạn code tính giai thừa thì nó cứ cho biến i chạy từ 1 đến n rồi tính giai thừa của i thôi. Nếu có tồn tại i mà i! = n thì in ra, ko thì báo ko tìm được. Tuy nhiên thực tế chả ai làm thế này cả. Độ phức tạp của tính toán quá lớn.
 
1. Bạn nên viết đề bài ra rồi mới đến code. Câu này (thời điểm 10h50 ) là kiểm tra 1 số có phải là giai thừa của 1 số khác hay ko
2. Tại sao là a mà ko phải là n: Là gì cũng đc. Ở trên là khai báo hàm, nó nhận vào là 1 biến, sau biến đó được dùng như thế nào là việc của gọi hàm chứ không phải của hàm đó nữa. Giống như toán học, bạn viết y = f(x) thì x có thể là a, b, c ,1, 2,3...
3. Đoạn code tính giai thừa thì nó cứ cho biến i chạy từ 1 đến n rồi tính giai thừa của i thôi. Nếu có tồn tại i mà i! = n thì in ra, ko thì báo ko tìm được. Tuy nhiên thực tế chả ai làm thế này cả. Độ phức tạp của tính toán quá lớn.
ôi giải thích này mình càng rối thêm... mình cũng hỉu nhưng kiểu mơ hồ... bạn có thể copy đoạn code màu đỏ xong giải thích sau mỗi câu // cho mình dễ hỉu ko

đề đúng như bạn nói là: là kiểm tra 1 số có phải là giai thừa của 1 số khác hay ko,in ra
 

emyeusss7

Legendary
Joined
Dec 26, 2010
Messages
2,636
Reactions
1,910
MR
40.465
$587.00
Call me! Call me! Chat with me via Yahoo Messenger Follow me on Facebook Chat with me via Skype

trylife

Banned
Joined
Sep 7, 2014
Messages
70
Reactions
160
MR
0.000
Nào ai rảnh lại tiếp tục giúp đỡ C++ nhá
giải thích giúp e đoạn màu đỏ.... và đoạn tính gia thừa... sao lại là a nhỉ,cái đó e nghĩ là n chứ ta.

#include<iostream.h>
#include<conio.h>
#include<math.h>

long giaithua(int a)
{
int gt=1;
if(a==0 || a==1)
return 1;
for(int i=2;i<=a;i++)
gt=gt*i;
return gt;
}

void kiemtra(int n)
{
int i=0;
while(giaithua(i)<=n)
{
if(giaithua(i)==n)
{
cout<<n<<"="<<i<<"!";
}

i++;

}
else
{cout<<"Khong co giai thua"<<endl;}
cout<<endl;
}


void main()
{
int n;
cout<<"\nNhap vao so can kiem tra ";
cin>>n;
kiemtra(n);
//getch();
}

- Sặc! a ở trên là hàm cậu định nghĩa, khai báo ở trên nó độc lập chứ liên quan gì tới n. Cậu khai báo nó là gì mà chẳng được.
- n là biến nhập vào, i là biến khởi tạo để tăng dần tới n. Khởi tạo biến i =0. Chừng nào mà giai thừa của i còn < n thì ta tiếp tục tăng biến i lên (i++)để xét, cho tới khi...
 
Nào ai rảnh lại tiếp tục giúp đỡ C++ nhá
giải thích giúp e đoạn màu đỏ.... và đoạn tính gia thừa... sao lại là a nhỉ,cái đó e nghĩ là n chứ ta.

#include<iostream.h>
#include<conio.h>
#include<math.h>
// định nghĩa hàm tính giai thừa với biến a, muốn biến gì cũng được, nó làm hàm độc lập dùng để phục vụ cho hàm kiemtra()
long giaithua(int a)
{
int gt=1; // lấy giá trị = 1
if(a==0 || a==1) nếu biến là 0 hoặc 1 thì gt trả về là 1
return 1;
for(int i=2;i<=a;i++) // lấy biến từ 2 đến a thì i tăng 1 mỗi lần lặp
gt=gt*i; // thì giá trị là chính nó nhân với i , ví dụ: tính giai thừ của 3! = 1.2.3
return gt;
}

void kiemtra(int n) // hàm kiểm tra số n có là giai thừa của hàm trên kia hay không, nghĩa là n có bằng giaithua(x) hay không
{
int i=0; // cho i chạy từ 0
while(giaithua(i)<=n) / lặp tính giai thừa của i , sao cho kết quả giai thừa chạy đến n
{
if(giaithua(i)==n) // nếu giai thừa của i = n
{
cout<<n<<"="<<i<<"!"; /// in thông báo n = i!
}

i++; // nếu giai thừa i nhỏ hơn n thì tăng i lên 1 đơn vị , số nguyên nên i = i +1

}
else
{cout<<"Khong co giai thua"<<endl;} // ngược lại thì n không phải là giai thừa của i
cout<<endl;
}


void main()
{
int n;
cout<<"\nNhap vao so can kiem tra ";
cin>>n;
kiemtra(n);
//getch();
}
 
?? giúp e cái đoạn màu // vẫn không hỉu :(
copy code giải thích // từng ý ý... thế nó cũng còn mơ hồ lắm
catdogpool24a.gif
 

vipphuong

Banned
Verified
Scammer
Joined
Apr 30, 2013
Messages
651
Reactions
431
MR
0.421
Call me! Call me! Chat with me via Yahoo Messenger Chat with me via Skype
?? giúp e cái đoạn màu // vẫn không hỉu :(
copy code giải thích // từng ý ý... thế nó cũng còn mơ hồ lắm
catdogpool24a.gif

cách trình bày code của bạn làm cho người đọc rối mắt. bạn viết code phải "thụt ra thụt vô" cho nó hợp lý.
 
Nào ai rảnh lại tiếp tục giúp đỡ C++ nhá
giải thích giúp e đoạn màu đỏ.... và đoạn tính gia thừa... sao lại là a nhỉ,cái đó e nghĩ là n chứ ta.

#include<iostream.h>
#include<conio.h>
#include<math.h>

long giaithua(int a)
{
int gt=1;
if(a==0 || a==1)
return 1;
for(int i=2;i<=a;i++)
gt=gt*i;
return gt;
}

void kiemtra(int n)
{
int i=0;
while(giaithua(i)<=n)
{
if(giaithua(i)==n)
{
cout<<n<<"="<<i<<"!";
}

i++;

}
else
{cout<<"Khong co giai thua"<<endl;}
cout<<endl;
}


void main()
{
int n;
cout<<"\nNhap vao so can kiem tra ";
cin>>n;
kiemtra(n);
//getch();
}
cách trình bày code của bạn làm cho người đọc rối mắt. bạn viết code phải "thụt ra thụt vô" cho nó hợp lý.
 

Announcements

Forum statistics

Threads
426,355
Messages
7,175,958
Members
178,807
Latest member
8livecool1

Most viewed of week

Most viewed of week

Back
Top Bottom