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

Responsive Ads Here

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

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

Responsive Ads Here