Добавлен: 12.01.2024
Просмотров: 47
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Вычислительной техники
отчет
по лабораторной работе № 1
по дисциплине «Программирование»
Тема: «Циклические вычисления на языке Си»
Студент гр. 2310 | | Идиров А.К. |
Преподаватель | | Подклетнов С.Г. |
Санкт-Петербург
2022
Содержание
Цель работы 3
Задание (вариант 12) 3
Постановка задачи и описание решения 3
Описание переменных 5
Схема алгоритма 6
Контрольные примеры 6
Текст программы 6
Примеры выполнения программы 8
Выводы. 9
-
Цель работы
Целью работы является получение практических навыков в программировании на языке Си путём выполнения задачи, поставленной в задании.
-
Задание (вариант 12)
Задано целое положительное число. Определить, является ли оно числом Армстронга. Число Армстронга — натуральное число, которое равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Например, десятичное число 153 — число Армстронга, потому что: 13 + 33 + 53 = 1 + 27 + 125 = 153.
-
Постановка задачи и описание решения
Задачи:
-
Разработать алгоритм, который сможет однозначно определить, является ли введённое число числом Армстронга. -
Поделить введённое число на цифры -
Найти сумму полученных цифр в степени, равной их количеству. -
Сравнить сумму с введённым числом.
Решение:
-
Считать пользовательский ввод (целое положительное число) в переменную N; -
Присвоить переменным N1 и N2 значение N, чтобы использовать их в дальнейших операциях.; -
Пока N>0, делить переменную N на 10 и прибавлять к переменной counter 1, чтоб посчитать количество цифр в введённом числе; -
Сформировать массив, размером которого будет являться переменная counter; -
Внести цифры числа в элементы массива при помощи цикла for с итератором i; -
Возвести цифры числа в степень counter и найти их сумму; -
Сравнить сумму с введённым числом. Если сумма равна введённому числу, то вывести положительный ответ «число N является числом Армстронга». Если нет – негативный: «число N не является числом Армстронга».
-
Описание переменных
№ | Имя переменной | Тип | Назначение |
1 | N | int | Целое положительное число, получаемое из входных данных. (исходное) |
2 | N1 | int | Используемое в вычислениях значение, равное N (присваиваемое) |
3 | N2 | int | (см. 2) |
4 | counter | int | Значение, хранящее в себе количество цифр, заданных числом N (вычисляемое) |
5 | i | int | Итератор для циклов for |
6 | res | int | Число, получаемое в ходе вычислений, описанных в алгоритме получения числа Армстронга (вычисляемое) |
7 | *values | int | Динамический массив, размер которого задаётся переменной counter в процессе выполнения программы, элементы которого используются в вычислениях. |
-
Схема алгоритма
-
Контрольные примеры
Пример 1:
Исходные данные: N=153
Результаты: Число 153 является числом Армстронга
Пример 2:
Исходные данные: N=154
Результаты: Число 154 не является числом Армстронга
-
Текст программы
#include
#include
#include
#include
int main()
{
setlocale(LC_ALL, "Russian");
int N, N1, N2, counter, i, res;
int *values;
printf("Введите целое положительное число: \n");
scanf("%i", &N);
N1 = N;
N2 = N;
counter = 0;
while (N>0)
{
N = N / 10;
counter = counter + 1;
}
values = (int*)malloc(counter * sizeof(int));
for (i = 0; i < counter; i++)
{
values[i] = N1 % 10;
N1 = N1 / 10;
}
res = 0;
for (i = 0; i < counter; i++)
{
res = res + pow(values[i], counter);
}
if (res==N2)
{
printf("%i является числом Армстронга", N2);
}
else
{
printf("%i не является числом Армстронга", N2);
}
return 0;
}
-
Примеры выполнения программы
-
Выводы.
В результате выполнения работы изучены динамические массивы и функция malloc и получены практические навыки в программировании на языке Си.