Tìm số chính phương đầu tiên trong mãng 1 các số nguyên - No Nguyên

Breaking

Facebook

test banner

Post Top Ad

Responsive Ads Here

Post Top Ad

Thứ Sáu, 14 tháng 4, 2017

Tìm số chính phương đầu tiên trong mãng 1 các số nguyên

Responsive Ads Here

Tìm số chính phương đầu tiên trong mãng 1 các số nguyên.
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define MAX 100

void nhap (int a[], int &n)
{
 do
 {
  printf("\nNhap so phan tu: ");
  scanf("%d", &n);
  if(n <= 0 || n > MAX)
  {
   printf("\nSo phan tu khong hop le. Xin kiem tra lai !");
  }
 }while(n <= 0 || n > MAX);
 for(int i = 0; i < n; i++)
 {
  printf("\nNhap a[%d]: ", i);
  scanf("%d", &a[i]);
 }
}

void xuat(int a[], int n)
{
 for(int i = 0; i < n; i++)
 {
  printf("%4d", a[i]);
 }
}
//int KiemTraSoChinhPhuong(int a)
//{
//   for (int i = 1; i < a; i++)
//       if (i * i == a)
//           return 1;
//   return 0;
//}

int KiemTraChinhPhuong(int n)
{
 /*Số chính phương là số mà kết quả khai căn bậc 2 là 1 số nguyên
 sqrt(4) = 2.00000 => ép về nguyên = 2 => vì 2.000  == 2 (true) => là số chính phương
 sqrt(5) = 2.23234 => ép về nguyên = 2 => vì 2.4324 != 2 (false) => không là số chính phương*/
 if (sqrt((float)n) == (int)sqrt((float)n))  // So sánh 2 số khi chưa ép về kiểu nguyên và số đã ép về kiểu nguyên
 {
  return 1;
 }
 else
 {
  return 0;
 }
}

int TimChinhPhuongDauTien(int a[], int n)
{
 for(int i = 0; i < n; i++)
 {
  if(KiemTraChinhPhuong(a[i]) == 1)
  {
   return a[i];
  }
 }
 return -1;
}
int main()
{
 int n;
 int a[MAX];
 int x, y;

 nhap(a, n);
 xuat(a, n);
 
 int ketqua = TimChinhPhuongDauTien(a, n);
 printf("\nSo chinh phuong dau tien la: %d", ketqua);

 getch();
 return 0;
}

Không có nhận xét nào:

Đăng nhận xét

Post Top Ad