Введение
В этом практическом занятии (лабораторной работе) вы научитесь определять, является ли заданное число полным квадратом на языке C++. Полный квадрат - это число, которое можно представить в виде произведения целого числа на само себя. Например, 1, 4, 9, 16 и 25 - это полные квадраты, так как они могут быть выражены как 1×1, 2×2, 3×3, 4×4 и 5×5 соответственно.
Мы создадим программу на C++, которая использует функцию sqrt() из стандартной библиотеки для вычисления квадратного корня числа и определения, является ли оно полным квадратом. В этом практическом занятии (лабораторной работе) вы познакомитесь с основными концепциями программирования на C++, включая функции, условные операторы и математические операции.
Создание нового файла на C++ и подключение необходимых библиотек
На этом шаге мы создадим новый файл на языке C++ и подключим необходимые библиотеки для нашей программы.
Сначала создадим новый файл с именем main.cpp в директории проекта:
- В WebIDE нажмите на значок проводника в левой боковой панели.
- Щелкните правой кнопкой мыши по папке
projectи выберите "Новый файл". - Назовите файл
main.cppи нажмите Enter.
Теперь добавим необходимые библиотеки в нашу программу. Нам нужны две основные библиотеки:
iostream: Эта библиотека предоставляет функциональность для операций ввода и вывода.cmath: Эта библиотека содержит математические функции, в том числе функциюsqrt(), которую мы будем использовать.
Добавьте следующий код в файл main.cpp:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
// We will add more code here in the next steps
return 0;
}
Этот код:
- Подключает необходимые библиотеки.
- Использует
namespace std, чтобы не нужно было писатьstd::перед функциями стандартной библиотеки. - Создает базовую функцию
main(), которая выводит приветственное сообщение. - Возвращает 0, чтобы показать, что программа выполнилась успешно.
Сохраните файл, нажав Ctrl+S или выбрав "Сохранить" в меню "Файл".
Реализация функции проверки на полный квадрат
Теперь мы создадим функцию, которая определяет, является ли число полным квадратом. Полный квадрат имеет целочисленный квадратный корень. Например, 16 - это полный квадрат, так как его квадратный корень равен ровно 4.
Добавьте следующую функцию перед функцией main() в файле main.cpp:
bool isPerfectSquare(int number) {
// Calculate the square root of the number
double squareRoot = sqrt(number);
// Convert the square root to an integer
int intSquareRoot = static_cast<int>(squareRoot);
// A number is a perfect square if squaring its integer square root gives the original number
return (intSquareRoot * intSquareRoot == number);
}
Понятно, как работает эта функция:
- Функция принимает целочисленный параметр
numberи возвращает булево значение (true или false). - Мы используем функцию
sqrt()из библиотекиcmathдля вычисления квадратного корня входного числа. - Мы преобразуем квадратный корень в целое число с помощью
static_cast<int>(), которое удаляет любую дробную часть. - Если число является полным квадратом, то при умножении целого квадратного корня на самого себя получится исходное число.
- Функция возвращает
true, если число является полным квадратом, иfalseв противном случае.
Например:
- Для числа 16:
- sqrt(16) = 4.0
- Преобразование 4.0 в целое число дает 4
- 4 × 4 = 16, что равно исходному числу, поэтому 16 - это полный квадрат.
- Для числа 10:
- sqrt(10) ≈ 3.16227766
- Преобразование 3.16227766 в целое число дает 3
- 3 × 3 = 9, что не равно исходному числу, поэтому 10 не является полным квадратом.
Ваш полный код на данный момент должен выглядеть так:
#include <iostream>
#include <cmath>
using namespace std;
bool isPerfectSquare(int number) {
// Calculate the square root of the number
double squareRoot = sqrt(number);
// Convert the square root to an integer
int intSquareRoot = static_cast<int>(squareRoot);
// A number is a perfect square if squaring its integer square root gives the original number
return (intSquareRoot * intSquareRoot == number);
}
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
// We will add more code here in the next step
return 0;
}
Сохраните файл перед переходом к следующему шагу.
Завершение главной функции с вводом и выводом данных от пользователя
Теперь усовершенствуем функцию main() так, чтобы она:
- Попросила пользователя ввести число.
- Получила ввод от пользователя.
- Использовала нашу функцию
isPerfectSquare()для проверки, является ли число полным квадратом. - Вывела соответствующее сообщение в зависимости от результата.
Обновите функцию main() следующим кодом:
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
int userNumber;
// Prompt the user to enter a number
cout << "Please enter a positive integer: ";
cin >> userNumber;
// Check if the entered number is a perfect square
if (isPerfectSquare(userNumber)) {
int squareRoot = static_cast<int>(sqrt(userNumber));
cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
} else {
cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
}
cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;
return 0;
}
Понятно, что делает этот код:
- Мы объявляем целочисленную переменную
userNumberдля хранения ввода пользователя. - Мы просим пользователя ввести положительное целое число с помощью
cout. - Мы считываем ввод пользователя с помощью
cinи сохраняем его вuserNumber. - Мы вызываем нашу функцию
isPerfectSquare()с аргументомuserNumber. - Если число является полным квадратом:
- Мы вычисляем его квадратный корень и сохраняем его в
squareRoot. - Мы выводим сообщение, указывающее, что число является полным квадратом.
- Мы показываем, какие два одинаковых целых числа нужно умножить, чтобы получить исходное число.
- Мы вычисляем его квадратный корень и сохраняем его в
- Если число не является полным квадратом:
- Мы выводим сообщение, указывающее, что число не является полным квадратом.
- Наконец, мы выводим благодарственное сообщение и возвращаемся из функции
main().
Ваша полная программа должна теперь выглядеть так:
#include <iostream>
#include <cmath>
using namespace std;
bool isPerfectSquare(int number) {
// Calculate the square root of the number
double squareRoot = sqrt(number);
// Convert the square root to an integer
int intSquareRoot = static_cast<int>(squareRoot);
// A number is a perfect square if squaring its integer square root gives the original number
return (intSquareRoot * intSquareRoot == number);
}
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
int userNumber;
// Prompt the user to enter a number
cout << "Please enter a positive integer: ";
cin >> userNumber;
// Check if the entered number is a perfect square
if (isPerfectSquare(userNumber)) {
int squareRoot = static_cast<int>(sqrt(userNumber));
cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
} else {
cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
}
cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;
return 0;
}
Сохраните файл перед переходом к следующему шагу.
Компиляция и тестирование программы
Теперь, когда мы завершили нашу программу на C++, пришло время скомпилировать и запустить ее. Компиляция преобразует нашу человекочитаемую программу в исполняемую машиной программу.
Компиляция программы
Откройте терминал в WebIDE, нажав на "Terminal" в меню и выбрав "New Terminal".
В терминале перейдите в директорию проекта:
cd ~/project
Скомпилируйте программу с помощью компилятора g++:
g++ main.cpp -o perfect_square_checker
Эта команда сообщает компилятору:
- Взять наш исходный файл
main.cpp - Скомпилировать его в исполняемый файл с именем
perfect_square_checker
Если компиляция прошла успешно, вы не увидите никакого вывода. Если есть ошибки, прочитайте сообщения об ошибках, исправьте проблемы в вашем коде и попробуйте скомпилировать снова.
Запуск программы
После успешной компиляции программы запустите ее с помощью команды:
./perfect_square_checker
Программа запустится и попросит вас ввести положительное целое число.
Тестирование с различными входными данными
Протестируем нашу программу с различными входными данными, чтобы убедиться, что она работает правильно:
Тестовый случай 1: Полный квадрат
Введите 16, когда программа попросит вас ввести число. Вы должны увидеть вывод, похожий на следующий:
Please enter a positive integer: 16
The number 16 is a perfect square!
It is equal to 4 × 4
Thank you for using the Perfect Square Checker Program!
Тестовый случай 2: Не полный квадрат
Запустите программу снова и введите 10, когда программа попросит вас ввести число. Вы должны увидеть вывод, похожий на следующий:
Please enter a positive integer: 10
The number 10 is not a perfect square.
Thank you for using the Perfect Square Checker Program!
Тестовый случай 3: Полный квадрат
Запустите программу снова и введите 25, когда программа попросит вас ввести число. Вы должны увидеть вывод, похожий на следующий:
Please enter a positive integer: 25
The number 25 is a square square!
It is equal to 5 × 5
Thank you for using the Square Square Checker Program!
Тестируя программу с различными входными данными, вы можете убедиться, что ваша программа правильно определяет полные квадраты и неполные квадраты.
Поздравляем! Вы успешно создали программу на C++, которая определяет, является ли число полным квадратом.
Резюме
В этом практическом занятии вы успешно создали программу на C++, которая определяет, является ли число полным квадратом. Рассмотрим, что вы достигли:
Вы узнали, как включать необходимые библиотеки в программу на C++:
iostreamдля операций ввода и выводаcmathдля математических функций, таких какsqrt()
Вы реализовали функцию
isPerfectSquare(), которая использует математический подход для определения, является ли число полным квадратом:- Вычислить квадратный корень числа
- Проверить, равно ли квадрат целой части квадратного корня исходному числу
Вы создали удобный для пользователя интерфейс в функции
main(), который:- Просит пользователя ввести число
- Использует функцию
isPerfectSquare()для проверки, является ли число полным квадратом - Выводит соответствующее сообщение в зависимости от результата
Вы скомпилировали и протестировали свою программу с различными входными данными, чтобы проверить ее функциональность.
В рамках этого практического занятия вы получили практический опыт работы с несколькими важными концепциями программирования на C++:
- Создание и вызов функций
- Использование условных операторов (if-else)
- Работа с вводом и выводом данных от пользователя
- Выполнение преобразования типов
- Использование математических функций из стандартной библиотеки
- Компиляция и запуск программы на C++
Вы можете дополнительно улучшить эту программу, добавив такие функции, как:
- Валидация ввода, чтобы убедиться, что пользователь вводит положительное целое число
- Возможность проверять несколько чисел без перезапуска программы
- Поиск ближайшего полного квадрата к числу, которое не является полным квадратом
Продолжая практиковаться и расширять свои знания на основе этих фундаментальных концепций, вы будете развивать более сильные навыки программирования на C++, которые можно применять для решения более сложных задач.



