Добавлен: 12.01.2024
Просмотров: 111
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИСанкт-Петербургский государственныйэлектротехнический университет«ЛЭТИ» им. В.И. Ульянова (Ленина)Кафедра Вычислительной техникиотчетпо лабораторной работе№1по дисциплине «Программирование»Тема: «Циклические вычисления на языке Си»
Санкт-Петербург2022
Цель работы 3
Задание (вариант 12) 3
Постановка задачи и описание решения 3
Описание переменных 5
Схема алгоритма 6
Контрольные примеры 6
Текст программы 6
Примеры выполнения программы 8
Выводы. 9
#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 и получены практические навыки в программировании на языке Си.
| Студент гр. 2310 | | Идиров А.К. |
| Преподаватель | | Подклетнов С.Г. |
Содержание
Цель работы 3
Задание (вариант 12) 3
Постановка задачи и описание решения 3
Описание переменных 5
Схема алгоритма 6
Контрольные примеры 6
Текст программы 6
Примеры выполнения программы 8
Выводы. 9
-
Цель работы
-
Задание (вариант 12)
-
Постановка задачи и описание решения
-
Разработать алгоритм, который сможет однозначно определить, является ли введённое число числом Армстронга. -
Поделить введённое число на цифры -
Найти сумму полученных цифр в степени, равной их количеству. -
Сравнить сумму с введённым числом.
-
Считать пользовательский ввод (целое положительное число) в переменную 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 в процессе выполнения программы, элементы которого используются в вычислениях. |
-
Схема алгоритма
-
Контрольные примеры
-
Текст программы
#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 и получены практические навыки в программировании на языке Си.