Файл: Циклические вычисления на языке Си.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 12.01.2024

Просмотров: 47

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Вычислительной техники

отчет

по лабораторной работе 1

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

Тема: «Циклические вычисления на языке Си»

Студент гр. 2310




Идиров А.К.

Преподаватель




Подклетнов С.Г.


Санкт-Петербург

2022

Содержание


Цель работы 3

Задание (вариант 12) 3

Постановка задачи и описание решения 3

Описание переменных 5

Схема алгоритма 6

Контрольные примеры 6

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

Примеры выполнения программы 8

Выводы. 9



  1. Цель работы


Целью работы является получение практических навыков в программировании на языке Си путём выполнения задачи, поставленной в задании.

  1. Задание (вариант 12)


Задано целое положительное число. Определить, является ли оно числом Армстронга. Число Армстронга — натуральное число, которое равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Например, десятичное число 153 — число Армстронга, потому что: 13 + 33 + 53 = 1 + 27 + 125 = 153.

  1. Постановка задачи и описание решения


Задачи:

  • Разработать алгоритм, который сможет однозначно определить, является ли введённое число числом Армстронга.

  • Поделить введённое число на цифры

  • Найти сумму полученных цифр в степени, равной их количеству.

  • Сравнить сумму с введённым числом.

Решение:

  • Считать пользовательский ввод (целое положительное число) в переменную N;

  • Присвоить переменным N1 и N2 значение N, чтобы использовать их в дальнейших операциях.;

  • Пока N>0, делить переменную N на 10 и прибавлять к переменной counter 1, чтоб посчитать количество цифр в введённом числе;

  • Сформировать массив, размером которого будет являться переменная counter;

  • Внести цифры числа в элементы массива при помощи цикла for с итератором i;

  • Возвести цифры числа в степень counter и найти их сумму;

  • Сравнить сумму с введённым числом. Если сумма равна введённому числу, то вывести положительный ответ «число N является числом Армстронга». Если нет – негативный: «число N не является числом Армстронга».



  1. Описание переменных




Имя переменной

Тип

Назначение

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. Схема алгоритма




  1. Контрольные примеры


Пример 1:

Исходные данные: N=153

Результаты: Число 153 является числом Армстронга
Пример 2:

Исходные данные: N=154

Результаты: Число 154 не является числом Армстронга

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


#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;

}

  1. Примеры выполнения программы







  1. Выводы.


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