Windows Việt

Cộng Đồng Công Nghệ Thông Tin Việt

Trang ChínhTrang Chính  Sự kiện  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 
 Giải thử bài thi KTLT 01-09-2010
Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
quyamty2007
Member

quyamty2007
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 49
Coins Coins : 107
Thanked Thanked : 20
Giải thử bài thi KTLT 01-09-2010 Empty

Câu 1: Tìm số CP gần x nhất (>= x)
Cách bình thường:
Code:

int ktChinhPhuong(int so)
{
   //So am  --> 0
   if(so < 0)
   {
      return 0;   
   }
   
   //Tim 1 so nguyen ma binh phuong == so
   for(int i = 0;i<= so ;i++ )
   {
      if(i*i == so)
      {
         return 1;
      }
   }
      
   //Ko tim thay
   return 0;
}


int timCP_GanNhatNM(int so)
{
   //Neu  nhap am ==> 0 la so CP gan nhat
   if(so < 0)
   {
      return 0;   
   }
   
   //Tim nhung so tiep theo --> tim ra CP thi return
   while(1)
   {
      if(ktChinhPhuong(so) == 1)
      {
         return so;
      }
      
      so++;
   }
}

____________________________________________________________________________
Cách khác thường Razz


Code:
  int timCP_GanNhatKT(int so)
{
   //Neu  nhap am ==> 0 la so CP gan nhat
   if(so < 0)
   {
      return 0;   
   }
   
   float canbacHai = sqrt(so);
   int NguyenCanBacHai = (int) canbacHai;
   
   if(canbacHai == NguyenCanBacHai)
   {
      return so;
   }
   
   return (NguyenCanBacHai+1)*(NguyenCanBacHai+1);
   
}



_______________________________________________________________________________
Bài 2: Kiểm tra mảng có 2 phàn tử bằng nhau hay ko?

Code bình thường thôi, cách khác thường chắc bị chém nếu đưa lên Razz

Code:

int kT_TT_BangNhauKT(int *a, int n)
{
   //Tim 1 cap bang nhau trong mang
   for(int i=0; i<n-1;i++)
   {
      for(int j=i+1; j<n;j++)
      {
         if(a[i] == a[j])
         {
            return 1;
         }
      }         
   }   
   
   return 0;
}

※ Bài viết cùng chuyên mục


Tác giảThông điệp
codoc12
Member

codoc12
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 588
Coins Coins : 1307
Thanked Thanked : 128
Giải thử bài thi KTLT 01-09-2010 Empty

Bài 1

Code:
int timSoCP(int n)
{
      printf("Nhap n:");
      scanf("%d",&n);
      for(int i = n; ; i++)
      {
            for(int j = 1; j < n; j++)
            {
                    if(j * j == i)
                    {
                          return i;
                          break;
                      }
              }
        }
}

Mình làm thế có đúng hok nhỉ


[You must be registered and logged in to see this link.]
___________________________________________________


Được sửa bởi codoc12 ngày Thu 02 Sep 2010, 17:09; sửa lần 1.

※ Bài viết cùng chuyên mục


http://codoc.tk
Tác giảThông điệp
quyamty2007
Member

quyamty2007
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 49
Coins Coins : 107
Thanked Thanked : 20
Giải thử bài thi KTLT 01-09-2010 Empty

Code của bạn lặp vô tận! Sad

Bởi vì < j = i; j < n > mà < i = n >

--> vòng for phía trong ko bao giờ có thể chạy được.

Với lại bạn lưu ý nhá!

Đừng nên nhập n trong hàm này, mà nên nhận n là tham số input.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 29
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Giải thử bài thi KTLT 01-09-2010 Empty

Sao phải làm dài thế hả bạn Laughing

Cách mình làm đây :

Bài 1 :

Code:
int TimSoCP (int n)
{
   for(int i=n; ;i++)
      for(int j=1;j<=i;j++)
         if(j*j==i)
            return i;
}

Bài 2 :

Code:
int TimBangNhau (int a[], int n)
{
   for(int i=0;i<n-1;i++)
      for(int j=i+1;j<n;j++)
         if(a[i]==a[j])
            return 1;
   return 0;
}

Ngắn gọn thôi :lol: Các bác góp ý cho với nào!


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 29
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Giải thử bài thi KTLT 01-09-2010 Empty

[You must be registered and logged in to see this link.] đã viết:
Bài 1

Code:
int timSoCP(int n)
{
      printf("Nhap n:");
      scanf("%d",&n);
      for(int i = n; ; i++)
      {
            for(int j = i; j < n; j++)
            {
                    if(j * j == i)
                    {
                          return i;
                          break;
                      }
              }
        }
}

Mình làm thế có đúng hok nhỉ

Vòng for thứ 2 bị sai rồi Sad

Đáng lẽ vòng for thứ 2 phải là :

Code:
for(int j = 1; j <= i; j++)


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
quyamty2007
Member

quyamty2007
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 49
Coins Coins : 107
Thanked Thanked : 20
Giải thử bài thi KTLT 01-09-2010 Empty

Nói về code ngắn gọn thì quy chịu thua --> tại cái tật viết code phải có ngoặc với tìm full trường hợp mới chịu được :angel

Nhưng nói về ý tưởng thì quy thấy 2 cái này giống nhau đó chứ!

Với lại pác Phú có đọc cái hàm timCP_GanNhatKT() ko?

---------> mới nghĩ ra, thấy ko phức tạp (thuật toán) như hàm timCP_GanNhatNM()

Laughing

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 29
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Giải thử bài thi KTLT 01-09-2010 Empty

À hàm đó mình có đọc rồi cũng có bạn ra nói mình làm cách ấy Very Happy nhưng sẽ phức tạp hơn, và dài hơn 1 tí, thêm 1 cái thư viện math.h (nếu code nguyên bài).

Nhưng ý tưởng thì đều đúng cả.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
codoc12
Member

codoc12
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 588
Coins Coins : 1307
Thanked Thanked : 128
Giải thử bài thi KTLT 01-09-2010 Empty

ak` viet nham` a' Razz


[You must be registered and logged in to see this link.]
___________________________________________________

※ Bài viết cùng chuyên mục


http://codoc.tk
Tác giảThông điệp
ANDYOU
Member

ANDYOU
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 43
Coins Coins : 68
Thanked Thanked : 0
Giải thử bài thi KTLT 01-09-2010 Empty

làm như thế này mới đúng ,ngắn gọn chính xác đúng yêu cầu đề bài

int timCP(int n)
{
for(int i=1;i<n;i++)
{
if(i*i>=n)
return i*i;
}
}

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 29
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Giải thử bài thi KTLT 01-09-2010 Empty

Nhấn edit bài viết rồi sửa lại chứ không post liên tục vầy nha bạn.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
codoc12
Member

codoc12
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 588
Coins Coins : 1307
Thanked Thanked : 128
Giải thử bài thi KTLT 01-09-2010 Empty

[You must be registered and logged in to see this link.] đã viết:
Sao phải làm dài thế hả bạn Laughing


Bài 2 :

Code:
int TimBangNhau (int a[], int n)
{
   for(int i=0;i<n-1;i++)
      for(int j=i+1;j<n;j++)
         if(a[i]==a[j])
            return 1;
   return 0;
}

Ngắn gọn thôi :lol: Các bác góp ý cho với nào!
câu return 0 phải viết trong hàm for(i = 0; i < n; i++) chứ
Code:
for(int i = 0; i <n-1 ; i++)
{
          for(j....)
          {
              ...........

          }
          return 0;
}


[You must be registered and logged in to see this link.]
___________________________________________________

※ Bài viết cùng chuyên mục


http://codoc.tk
Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 29
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Giải thử bài thi KTLT 01-09-2010 Empty

[You must be registered and logged in to see this link.] đã viết:

câu return 0 phải viết trong hàm for(i = 0; i < n; i++) chứ

Oh, vậy thì xin chia buồn cùng codoc rồi :lol: chúc may mắn lần sau nghen ^^.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
tro.ng_mk
Member

tro.ng_mk
Member
Giới tính : Nam
Tuổi : 29
Posts Posts : 224
Coins Coins : 384
Thanked Thanked : 45
Giải thử bài thi KTLT 01-09-2010 Empty

đúng là nói nhăn nói cuội....có câu lệnh return ko má cũng không biết đặt ở chổ nào...đặt ở câu for ở trong thì :
<1> nó chạy và so sánh a[0] với các phần tử còn lại rồi return ah... ko tính các pt khác sao
<2> chương trình báo lỗi vì hàm "int" mà ko trả về giá trị...
<3> đem zo máy chạy đi rồi nói chuyện....

※ Bài viết cùng chuyên mục


http://bongdaso.com
Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 29
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Giải thử bài thi KTLT 01-09-2010 Empty

[You must be registered and logged in to see this link.] đã viết:
đúng là nói nhăn nói cuội....có câu lệnh return ko má cũng không biết đặt ở chổ nào...đặt ở câu for ở trong thì :
<1> nó chạy và so sánh a[0] với các phần tử còn lại rồi return ah... ko tính các pt khác sao
<2> chương trình báo lỗi vì hàm "int" mà ko trả về giá trị...
<3> đem zo máy chạy đi rồi nói chuyện....

Đang nói bài của ai vậy Question


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
giangnguyen1369
Member

giangnguyen1369
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 26
Coins Coins : 49
Thanked Thanked : 1
Giải thử bài thi KTLT 01-09-2010 Empty

Mọi người post bài lên đây là để tham khảo, giúp nhau học tốt hơn!!!làm j ma ăn nói giang hồ dữ vậy????chỉ là thảo luận thui mà!! 8-)

※ Bài viết cùng chuyên mục


Tác giảThông điệp
codoc12
Member

codoc12
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 588
Coins Coins : 1307
Thanked Thanked : 128
Giải thử bài thi KTLT 01-09-2010 Empty


[You must be registered and logged in to see this link.]
___________________________________________________

※ Bài viết cùng chuyên mục


http://codoc.tk
Tác giảThông điệp
Sponsored content


Giải thử bài thi KTLT 01-09-2010 Empty

※ Bài viết cùng chuyên mục


 
Giải thử bài thi KTLT 01-09-2010
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Windows Việt :: Lưu Trữ :: Lưu Trữ - Các môn học cũ :: Kỹ Thuật Lập Trình-
[Windows Việt] Deverloped by Nguyễn Gia Phú - https://windows.forumvi.com
Powered by © Forumotion.com - phpBB™ version ©phpBB2
Go to top Go to bottom