42710

ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ПРОЦЕДУРЫ И ФУНКЦИИ

Лабораторная работа

Информатика, кибернетика и программирование

функция печати массива чисел диапазона от n до 2n не возвращает значения принимает указатель на массив чисел и размер массива void ProstNumunsigned long int; функция инициализации массива простыми числами не возвращает значения принимает указатель на массив чисел и размер массива unsigned EnterNumvoid; функция ввода натурального числа возвращает натуральное число значений не принимает void Find_Twinsunsigned long...

Русский

2013-10-30

145.5 KB

1 чел.

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение

Высшего профессионального образования

Владимирский государственный университет

имени А.Г. и Н.Г. Столетовых

(ВлГУ)

Лабораторная работа № 6

по дисциплине:

«Языки программирования»

на тему:

ПРОЦЕДУРЫ И ФУНКЦИИ

выполнил:

ст.гр. ВТс-212

Илларионов В.А.

приняла:

Сущинина А. А.

Владимир 2012г.

  1.  Текст индивидуального задания

Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1…2n, близнецы, т.е. простые числа, разность между которыми равна двум. (Определить процедуру, позволяющую распознать простые числа.).

  1.  Схема алгоритма решения задачи.


  1.  Спецификации всех разработанных процедур и/или функций.

Главной задачей данной работы было разбить все процедуры на блок функций. Для этого функции объявляются заранее и считываются.

  1.  Текст программы решения задачи на языке высокого уровня С++

#include "stdafx.h"

#include <iostream>

#include <windows.h>

using namespace std;

 void ArrayPrint(unsigned long *, int); // функция печати массива чисел диапазона от n до 2n ,  не возвращает значения , принимает указатель на массив чисел и размер массива

 void ProstNum(unsigned long *,int);    // функция инициализации массива простыми числами,  не возвращает значения , принимает указатель на массив чисел и размер массива

 unsigned EnterNum(void);               // функция ввода натурального числа, возвращает натуральное число, значений не принимает

 void Find_Twins(unsigned long *mas,unsigned); // функция поискачисел близнецов,  не возвращает значения , принимает указатель на массив чисел и натуральное число

void main()

{ setlocale(LC_ALL, "RUS");    

 const int size = 1000;    // размер массива

   unsigned  long mas[size]; // массив простых чисел

 unsigned  n ;             // натуральное число N

    cout<<"Простые числа \n\n";

    ProstNum(mas, size);   // заполнение массива простыми числами

 n = EnterNum();        // ввод натурального числа

 Find_Twins(mas,n);     // поиск чисел близнецов

    cout<<"\n";

    ArrayPrint(mas, n); // печать всех простых чисел диапазона от n до 2n

    cout<<"\n";

    system("pause");

}

unsigned EnterNum(void) // функция ввода натурального числа

{

 unsigned Natural;

cout<<"Введите натуральное число:  ";

   cin>>Natural;

cout<<"\n";

 return (Natural);

}

void Find_Twins(unsigned long *mas,unsigned Natural) // функция поискачисел близнецов

{

 for (int i =0; i<=Natural*2-1; i++)

 {

     if( mas[i]>=Natural && mas[i]<=Natural*2-2 && mas[i+1]-mas[i]==2)

   //если выбранный эл. массива больше или равен введеному числу,

   //а так же меньше или равен удвоенному произведению этого числа

   //и если разница между текущим и предыдущим значением эл. массива равно 2

   //  тогда выполнено условие и нахождения чисел близнецов

  {

   printf("числа близнецы: "); printf( "%ld ",mas[i]); printf("%ld ",mas[i+1]);

  cout<<"\n";

  }

 }

}

void ArrayPrint(unsigned long *mas, int size) // функция печати массива чисел диапазона от n до 2n

{

cout<<"\n"<<"Ряд простых чисел"<<"\n\n" ;

    for (int i = 0; i < size; i++)

   //если выбранный эл. массива больше или равен введеному числу,

   //а так же меньше или равен удвоенному произведению этого числа

   //тогда выводи простые числа на экран

      { if ( mas[i]>=size && mas[i] <= size*2) printf("%ld ", mas[i]); }

}

void ProstNum(unsigned long *mas,int size) // функция инициализации массива простыми числами

{

    mas[0] = 2; // простое число начинается с цифры 2

    int i = 1;

    unsigned long numb = 3;

    bool flag;

    while (i < size)

    {

        flag = false;

  //Первое простое число – 2, затем каждое очередное число проверяем,

  // не делится ли оно на какое нибудь из уже найденных простых чисел.

  // Если не делится, то добавляем его в тот же массив.

  //Так да тех пор пока массив не заполнится.

        for (int k = 0; k < i; k++)

            if (numb % mas[k] == 0)

            {

                flag = true;

                break;

            }

        if (flag == false)

        {

            mas[i] = numb;

            i++;

        }

        numb++;

    }

  1.  
    Тесты и результаты тестирования

Т.к. по требованию задачи требуется ввести натуральное число то при отрицательных числах программа работать не будет.

  1.  Выводы по работе

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


 

А также другие работы, которые могут Вас заинтересовать

2249. Разработка организационной структуры управления объектом сферы услуг, как целеустремленной системой на примере блинной Солнцепек 143.39 KB
  Теоретические основы методологии системного анализа. Системный анализ и моделирование объекта исследования. Предложения по совершенствованию устойчивости функционирования системы.
2250. Проектирование понизительной подстанции электроснабжения электрифицированной железной дороги. 1.13 MB
  Распределительное устройство 110 кВ промежуточной транзитной подстанции. Составление расчетной схемы и схемы замещения. Расчёт токов короткого замыкания. Выбор основного оборудования и токоведущих элементов подстанции. Выбор устройств защиты от перенапряжения.
2251. Сервисный центр по ремонту и обслуживанию офисной техники с использованием средств Microsoft Access 991.23 KB
  Описание бизнес-процесса при помощи методологии структурного анализа и проектирования (SADT). Создание форм с помощью конструктора. Структура таблицы и типы данных.
2252. Мероприятие: В стране невыученных уроков 19.84 KB
  Внеклассное мероприятие посвященное ко дню учителя, отображающее учеников которые не хотят учить уроки.
2253. Экономическая теория прав собственности 16.42 KB
  Современная экономическая теория получила развитие направление называемое неоинституционализм. Одним из важнейших направлений этого подхода является экономическая теория прав собственности. У истоков стоял такой известнейший экономист Рональд Коуз.
2254. Экономическое право 17.74 KB
  Право собственности на природные ресурсы. Право природного пользования. Правовые формы использования природных ресурсов.
2255. Строительная механика. Специальный курс. Применение метода граничных элементов 6.82 MB
  В учебном пособии изложен новый метод расчета статически определимых и статически неопределимых стержневых и пластинчатых систем на статические и динамические нагрузки, а также на устойчивость. Приведено большое количество характерных типовых задач и примеров с краткими указаниями к их решению. Значительное место уделено математической постановке задач и их решению с помощью персональных компьютеров.
2256. Гласные звуки. Деление слова на слоги. Слогообразующая роль гласных звуков 18.21 KB
  Цели: познакомить учащихся с понятием слог, научить детей делить слова на слоги, развивать речь, внимание, память, воспитывать трудолюбие, аккуратность в работе.
2257. День делового человека 19.55 KB
  Tasks: совершенствование навыков поискового чтения, активизация лексических навыков, развитие навыков постановки вопросов.