30/09/2018, 16:28
Tìm số chính phương nhỏ nhất trong mảng 1 chiều
Đây là 2 hàm e làm để tìm số chính phương nhỏ nhất , nhưng không ra
//ham kiem tra scp
static bool ktscp(int n)
{
if (n==(int) Math.Sqrt(n) * (int) Math.Sqrt(n))
return true;
else
return false ;
}
//ham tim scp nho nhat
public int sochinhphuong(int[] MangMC, int n)
{
int min=0,dem=0;
for(int i=0;i<n;i++)
{
if (ktscp(MangMC[i]) == true)
{
dem++;
}
}
if (dem == 0)
{
Console.WriteLine("Mang khong co so chinh phuong nao");
return -1;
}
else
{
for (int i = 0; i < n; i++)
{
if (ktscp(MangMC[i]) == true)
{
if (min > MangMC[i])
min = MangMC[i];
}
}
}
return min;
}
kết quả như ý .
Bạn nào giúp mình với
Bài liên quan
code khó nhìn quá @@ mà nhìn sơ qua chắc là sai chỗ min = 0. a nghĩ là min = MangMC[0] :))
cũng không được anh ơi . Em đã sửa lại như anh nói . Hàm tìm số chính phương em đã test đúng , nhưng lại tìm số chính phương nhỏ nhất không ra .
Ngay từ đầu em gắn
min=0
thì sao điều kiện dưới đúng được.Nên gán min bằng một số chính phương nào đấy trước.
ý anh là gán min cho một số chính phương thực hả anh .
Nếu trong mảng
MangMC
có số chính phương nhỏ nhất là số 4. Mà min của em bằng 0. Thì lấy gì điều kiện này đúng được.Đã thấy cái
min = 0
rồi mà còn bảomin = MangMC[0]
. Phải là một số chính phương có thật chứ,MangMC[0]
đâu chắc chắn là số chính phương đâu.à quên, :)) duyệt tìm 1 số chính phương trước rồi lấy vị trí nó @@ xong gán min = MangMC[vitri].
em đã làm lại như thế này , nhưng kết quả vẫn ko đúng , sai chỗ này xin anh chỉ giáo
public int sochinhphuong(int[] MangMC, int n)
{
int min=0,a=0;
int dem = 0;
for(int i=0;i<n;i++)
{
if(ktscp(MangMC[i])== true)
{
dem++;
min = MangMC[i];
a = i;
break;
}
}
if (dem == 0)
return -1;
for(int i=a + 1; i< n;i++)
{
if( (ktscp(MangMC[i]) == true )&& (min > MangMC[i]))
min = MangMC[i];
}
return min;
}
Sửa lại một chút của cái code đầu tiên là được mà
e cam on . Em sai khi truyền tham biến . Chứ ko phải hàm sai . Chắc phải coi lại tham biến thôi .
P/S : mới học c# dc 1 tuần
This topic was automatically closed after 24 hours. New replies are no longer allowed.