Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 семестр / Лабароторная работа №5 прога

.docx
Скачиваний:
2
Добавлен:
16.05.2023
Размер:
234.15 Кб
Скачать

ФГБОУ ВО

«Уфимский государственный авиационный технический университет»

Кафедра ТК

ОТЧЕТ

по лабораторной работе № 5

по дисциплине «Программирование»

Вариант № 9

Выполнил: студент гр. ИВТ-127Б

Проверил: доцент каф. ТК

Федорова Н. И.

Уфа 2021

Тема работы: Обработка целых данных.

Цель работы: Получение навыков реализации программы на языке С++ с использованием различных типов целых данных.

Задачи работы:

  1. Составить блок-схему алгоритма работы программы;

  2. Написание программы на языке С++ с использованием различных типов целых данных;

  3. Тестирование работоспособности программы для различных исходных данных

Вариант № 9

Задание:

Среди простых чисел, не превосходящих заданного числа N, найти все такие сумма квадратов цифр, которых больше самих чисел.

Выполнение задания:

Решение задачи:

  1. Введем переменные:

N – значение введенное пользователем,

j, sum, number – вспомогательные переменные для реализации решения задачи.

  1. Для каждого числа от 0 до N, вызываем рекурсивную функцию PrimeNumber(j).

  2. Рекурсивная функция PrimeNumber(j) проверяет, является ли число N простым:

  1. Проверяется, являются ли числа в диапазоне от 2-ух до корня числа N делителями числа N.

  2. Если п1 не выполнился, то число является простым.

  1. Если число N является простым, то программа вычисляет сумму квадратов цифр этого числа:

  • Пока число N не равно 0, вычисляется остаток от деления на 10, это значение возводится в и добавляется в переменную sum.

  1. Выполняется п2, п3, п4 для каждого числа из диапазона от 0 до N

  2. Вывод ответа.

Схема алгоритма работы программы:

Текст программы:

/*Среди простых чисел, не превосходящих заданного числа 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-х.

  1. Вызываем функцию PrimeNumner (2).

  2. Функция PrimeNumner (2) возвращает truFal=true

  • PrimeNumner (2) не зайдет в цикл для проверки поиска для делителей от 2 до sqrt(2), т.к 2>sqrt(2)

  1. Так как число 2 является простым, вычисляем остаток от деления на 10, это значение возводится в квадрат и добавляется в переменную sum. Sum=2^2=4

  2. Вывод числа 2 и sum=4.

  1. Вызываем функцию PrimeNumner (3).

  1. Функция PrimeNumner (3) возвращает truFal=true

  • PrimeNumner (3) не зайдет в цикл для проверки поиска для делителей от 2 до sqrt(3), т.к 2>sqrt(3)

  1. Так как число 3 является простым, вычисляем остаток от деления на 10, это значение возводится в квадрат и добавляется в переменную sum. Sum=3^2=9

  1. Вывод числа 3 и sum=9.

Вывод: В ходе выполнения лабораторной работы были получены навыки реализации программы на языке С++ с использованием различных типов целых данных.

Контрольные вопросы:

  1. Каждый тип данных имеет свой размер - количество занимаемой памяти. Целочисленные (integer) типы данных в C++. C++ имеет несколько типов данных для представления целых чисел. Одна причина на это - поддержка старых систем, другая - это позволяет сохранить память.

  2. Значением символьной переменной является один символ из фиксированного набора. Такой набор обычно включает буквы, цифры, знаки препинания, знаки математических операций и различные специальные символы (процент, амперсанд, звездочка, косая черта и др.).

  3. Модификаторы позволяют установить значение private переменной-члена. Обычно имя модификатора состоит из Set_ и имени переменной-члена. // установка показателя преломления void Set_n(double n); // установка осевого расстояния void Set_d(double d).

  4. В таблице указаны размеры переменных целочисленных типов

  1. Деление нацело делается обычным оператором « / », но тип обоих операндов должен быть целочисленный. Если требуется получить дробный результат, то один операнд нужно привести к типу float или double.

  2. Остаток от деления нацело делается обычным оператором « % ». Остаток — это оставшаяся после целочисленного деления часть числа. Операция взятия остатка используется для решения различных видов задач.