1 семестр / Лабароторная работа №5 прога
.docxФГБОУ ВО
«Уфимский государственный авиационный технический университет»
Кафедра ТК
ОТЧЕТ
по лабораторной работе № 5
по дисциплине «Программирование»
Вариант № 9
Выполнил: студент гр. ИВТ-127Б
Проверил: доцент каф. ТК
Федорова Н. И.
Уфа 2021
Тема работы: Обработка целых данных.
Цель работы: Получение навыков реализации программы на языке С++ с использованием различных типов целых данных.
Задачи работы:
Составить блок-схему алгоритма работы программы;
Написание программы на языке С++ с использованием различных типов целых данных;
Тестирование работоспособности программы для различных исходных данных
Вариант № 9
Задание:
Среди простых чисел, не превосходящих заданного числа N, найти все такие сумма квадратов цифр, которых больше самих чисел.
Выполнение задания:
Решение задачи:
Введем переменные:
N – значение введенное пользователем,
j, sum, number – вспомогательные переменные для реализации решения задачи.
Для каждого числа от 0 до N, вызываем рекурсивную функцию PrimeNumber(j).
Рекурсивная функция PrimeNumber(j) проверяет, является ли число N простым:
Проверяется, являются ли числа в диапазоне от 2-ух до корня числа N делителями числа N.
Если п1 не выполнился, то число является простым.
Если число N является простым, то программа вычисляет сумму квадратов цифр этого числа:
Пока число N не равно 0, вычисляется остаток от деления на 10, это значение возводится в и добавляется в переменную sum.
Выполняется п2, п3, п4 для каждого числа из диапазона от 0 до N
Вывод ответа.
Схема алгоритма работы программы:
Текст программы:
/*Среди простых чисел, не превосходящих заданного числа N,найти все такие сумма квадратов цифр которых больше самих чисел*/
#include <iostream>
#include <math.h>
using namespace std;
bool PrimeNumber(int N) {
bool truFal = true;
for (int i = 2; i <sqrt(N); i++) {
if (N % i == 0) {
truFal = false;
}
}
return truFal;
}
int main() {
setlocale(0, "");
int N, j;
cout << "Среди простых чисел, не превосходящих заданного числа N,найти все такие сумма квадратов цифр которых больше самих чисел" << endl;
cout << endl << "Введите N" << endl;
cout << "N=";
cin >> N;
cout << endl << "Число | Cумма квадратов цифр" << endl;
for (j = 0; j <= N; j++) {
PrimeNumber(j);
if (PrimeNumber(j)== true) {
int sum = 0;
int number = j;
while (number != 0)
{
sum += pow(number % 10,2);
number /= 10;
}
if (sum > j) {
cout << j << "\t" << sum << endl;
}
}
}
return 0;
}
Тестовый пример:
Возьмем диапазон чисел от 2-го до 3-х.
Вызываем функцию PrimeNumner (2).
Функция PrimeNumner (2) возвращает truFal=true
PrimeNumner (2) не зайдет в цикл для проверки поиска для делителей от 2 до sqrt(2), т.к 2>sqrt(2)
Так как число 2 является простым, вычисляем остаток от деления на 10, это значение возводится в квадрат и добавляется в переменную sum. Sum=2^2=4
Вывод числа 2 и sum=4.
Вызываем функцию PrimeNumner (3).
Функция PrimeNumner (3) возвращает truFal=true
PrimeNumner (3) не зайдет в цикл для проверки поиска для делителей от 2 до sqrt(3), т.к 2>sqrt(3)
Так как число 3 является простым, вычисляем остаток от деления на 10, это значение возводится в квадрат и добавляется в переменную sum. Sum=3^2=9
Вывод числа 3 и sum=9.
Вывод: В ходе выполнения лабораторной работы были получены навыки реализации программы на языке С++ с использованием различных типов целых данных.
Контрольные вопросы:
Каждый тип данных имеет свой размер - количество занимаемой памяти. Целочисленные (integer) типы данных в C++. C++ имеет несколько типов данных для представления целых чисел. Одна причина на это - поддержка старых систем, другая - это позволяет сохранить память.
Значением символьной переменной является один символ из фиксированного набора. Такой набор обычно включает буквы, цифры, знаки препинания, знаки математических операций и различные специальные символы (процент, амперсанд, звездочка, косая черта и др.).
Модификаторы позволяют установить значение private переменной-члена. Обычно имя модификатора состоит из Set_ и имени переменной-члена. // установка показателя преломления void Set_n(double n); // установка осевого расстояния void Set_d(double d).
В таблице указаны размеры переменных целочисленных типов
Деление нацело делается обычным оператором « / », но тип обоих операндов должен быть целочисленный. Если требуется получить дробный результат, то один операнд нужно привести к типу float или double.
Остаток от деления нацело делается обычным оператором « % ». Остаток — это оставшаяся после целочисленного деления часть числа. Операция взятия остатка используется для решения различных видов задач.