Написать функцию IsSquare(K), проверяющую, является ли K квадратом некоторого целого числа - C (СИ)
Формулировка задачи:
Описать функцию IsSquare(K ) логического типа, возвращающую
TRUE, если целый параметр K (> 0) является квадратом некоторого це-лого числа, и FALSE в противном случае. С ее помощью найти количество
квадратов в наборе из 10 целых положительных чисел
Решение задачи: «Написать функцию IsSquare(K), проверяющую, является ли K квадратом некоторого целого числа»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
int IsSquare(int k){
if(k<0)
return 0;
float cmp=sqrt(k);
if(fabsf(cmp - int(cmp))<0.0000001)
return 1;
return 0;
}
int main(int argc, char** argv){
setlocale(LC_ALL, "rus");
int k;
printf("Введите число: ");
scanf("%d", &k);
printf("%s\n", IsSquare(k)?"Число является квадратом":"Число является не квадратом");
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с числами и вводом/выводом
- Определение функции IsSquare(K), которая проверяет, является ли число K квадратом целого числа
- Проверка входного числа на отрицательность и возврат 0 в случае отрицательного числа
- Вычисление квадратного корня числа K с помощью функции sqrt() и сохранение результата в переменную cmp
- Проверка, является ли дробная часть от результата вычисления квадратного корня равной 0. Если да, то число K является квадратом целого числа, иначе возвращается 0
- Ввод числа K с клавиатуры с помощью функции scanf()
- Вывод на экран сообщения о том, является ли число K квадратом целого числа
- Вызов функции system(
PAUSE) для приостановки работы программы до нажатия клавиши Enter - Конец программы