Приложение. Текст программы с комментариями.




Задание

Сформировать массив простых множителей заданного числа.

 

Теоретический материал

Операторы создают то, что в обыденном сознании ассоциируется с понятием алгоритм – описание последовательности действий, выполняемых программой, или логика ее работы. В Си реализован общий для большинства языков программирования «джентльменский набор» управляющих конструкций:

· линейная последовательность действий;

· условная конструкция (если-то-иначе);

· конструкция повторения (цикл);

· переход (и его разновидности).

Управляющая конструкция - линейная последовательность действий является основной в языках программирования.

В соответствии с принципом вложенности элементами последовательности могут быть не только элементарные действия (простые операторы), но и вложенные синтаксические конструкции, которые на текущем уровне также выполняются последовательно друг за другом.

В Си используется такой принцип: если составной частью управляющей конструкции является единственный оператор, то он никак синтаксически не выделяется. Если же составной частью является последовательность операторов, то она заключается в фигурные скобки ({}) и образует блок.

Блок, или составной оператор выступает как единая синтаксическая единица, вложенная в конструкцию верхнего уровня. В начале его могут быть определены собственные переменные блока, действие которых не распространяется за его пределы, а время существования совпадает с временем его выполнения. Операторы, составляющие блок, выполняются последовательно друг за другом.

Единственный условный оператор имеет две разновидности: с else и без него.

В качестве условия выступает выражение, которое может иметь любой целый результат и интерпретируется в соответствии с принятыми в Си соглашениями о логических значениях: 0 –«ложь», не 0 – «истина». Действует он как и во всех языках программирования: если значение выражения есть «истина», то выполняется первый оператор, если «ложь» - второй (после else). Конструкция является структурированной, обе ветви – прямая и альтернативная – «сливаются» в одну

В Си имеется три вида циклических конструкций. Общее у них одно: все условия в них являются условиями продолжения, то есть циклы продолжаются, пока значение этих условных выражений – «истина». Операторы цикла состоят из заголовка, в котором определяется характер циклического процесса и оператора - тела цикла. Скобки в заголовке цикла являются неотъемлемым элементом синтаксиса языка.

Массив – совокупность элементов одного типа.

тип имя_массива[количество_элементов]

тип – задает тип элемента массива и может быть как стандартный так и определенный пользователем.

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

количество_элементов – целочисленная константа определяющая сколько элементов будет в массиве.

Доступ к элементу массива осуществляется с помощью индекса, например A[0] – первый элемент, A[1] – второй элемент, A[n] – n-й элемент массива. Нумерация элементов начинается с нуля. В памяти элементы массива хранится последовательно т.е A[0], A[1], A[2]…A[n]. Имя массива это адрес ячейки памяти по которому находится первый элемент.

 

Описание алгоритма

Дано:

Целое число

Результат:

Массив простых множителей заданного числа

 

Метод решения:

Путем перебора всех целых чисел до значения заданного числа (исключая единицу, так как единица при умножении на себя дает единицу и так может продолжаться до окончания места в массиве), находятся все множители числа. Далее они проверяются путем деления на себя, являются ли они простыми (равен ли остаток их деления на самих себя нулю).

Найденный простой множитель вносится в формирующийся массив и выводится на экран.

После этого для продолжения поиска следующего простого множителя, заданное число делится на найденный множитель, и цикл повторяется с остатком от деления, пока не разложится до последнего множителя без остатка.

Описание реализации

Подключаемые библиотеки:

#include "stdio.h"

#include "conio.h"

Используемые переменные:

m - размер массива (количество элементов)

mas[] - массив чисел

val – переменная для заданного числа (value)

i - счетчик для перебора всех целых чисел для нахождения множителя

mn – переменная для множителя

Используемые конструкции:

if - для исключения ввода единицы, для которой нет решения.

for – для обхода всех значений последовательности (массива), и условие для проверки множителя, простой ли он, путем деления на себя

Функции, используемые в программе:

printf() – вывод форматированного на экран

scanf_s() – считывание введенного пользователем числа

_getch() – остановка программы до нажатия любой клавиши с клавиатуры

 

Основной блок программы void main () инициализирует переменные, массив, вызывает функцию ввода/вывода значения для переменной, находит множители, проверят, являются ли они простыми, вносит в массив и выводит его на экран.

 

 

Пример работы программы

Результат работы программы.

Пример №1.

 

Пользователь вводит число. Программа раскладывает его на простые множители

Пример №2.

 

Пример №3.

Пример работы, если пользователь вводит единицу.

 

 

Выводы

В ходе выполнения лабораторной работы были изучены основные принципы работы с массивом. Использование массива для хранения полученных данных, а также использование цикла for для обхода всех элементов массива и введения условия для проверки каждого множителя, является ли он простым.

На приведенном наборе тестов программа работает корректно.

 

 

Приложение. Текст программы с комментариями.

#include<conio.h>

#include<stdio.h>

 

#define m 1000

 

void main()

 

{

 

int mas[m];

int val; //переменная для заданного числа, разлагаемого на множители

int i; //переменная-счетчик

int mn; //множитель

 

printf("vvedite tseloe chislo, neravnoe edinnitse: ");

scanf_s("%d", &val);//ввод пользователем числа, которое нужно разложить на множители

 

if (val == 1) //исключение единицы

{

printf("Resheniya net");

_getch();

}

 

else{

for (i = 1; i <= val; i++) //счетчик-поиск множителей

{

for (mn = 2; val%mn!= 0; mn++); //проверка, является ли множитель простым путем деления самого на себя без остатка

val /= mn; //уменьшение заданного числа делением на найденный множитель

mas[i] = mn; //внесение найденного значения в массив

printf(" %d", mas[i]); //вывод значения массива на экран

}

 

_getch();

}

}

 

 

Защита.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: