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.  Выводы по работе

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


 

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

31064. Кисты слюнных желез 14.87 KB
  Кисты слюнных желез. Кисты чаще развиваются в малых слюнных железах. Различают ретенционные и слизистые кисты. Микроскопически стенка кисты представлена соединительной тканью выстлана уплощенным эпителием.
31065. Реактивные опухолеподобные поражения слюнных желез 14.91 KB
  К реактивным опухолеподобным поражениям слюнных желез относят: доброкачественное лимфоэпителиальное поражение сиалоз онкоцитоз некротизирующую сиалометаплазию. Эти поражения проявляются увеличением в размерах слюнных желез чаще околоушных и имеют сходную клиническую картину с опухолями. Функциональная роль онкоцитов в слюнных железах а также в некоторых других органах щитовидная и околощитовидная железы окончательно не определена.
31066. АДЕНОМЫ 21.28 KB
  Значительное присутствие разбросанных миоэпителиальных клеток анастомозирующих между собой можно отметить только среди миксоидноro компонента опухоли не имеющего никакого отношения к строме. В этих двух разновидностях плеоморфной аденомы можно выделить три типа эпителиальных клеток. Первая группа клеток мелкими клетками с гиперхромными ядрами. Второй тип клеток светлыми клетками овальной или округлой формы они образуют мелкие и крупные комплексы или альвеолярные структуры.
31067. КАРЦИНОМЫ (раки) 28.86 KB
  Эпителиально-миоэпителиальная карцинома ЗЛОКАЧЕСТВЕННЫЕ ЭПИТЕЛИАЛЬНЫЕ ОПУХОЛИ СЛЮННЫХ ЖЕЛЕЗ КАРЦИНОМЫ ИЛИ РАКИ Мукоэпидермоидный рак. Чаще всего в ткани опухоли хорошо заметны множественные кисты. И при этом малоподвижные опухоли плотной консистенции обычно оказываются низкодифференцированными при микроскопическом исследовании. Встречаются также многоузелковые опухоли узлы обычно спаяны между собой и имеют плотную консистенцию.
31068. Кисты кожи головы, лица и шеи 29.5 KB
  Кисты лица и шеи: 1 кератиновые кисты к которым относят волосяную кисту и эпидермальную; 2 дермоидная киста; 3 врожденные кисты и свищи лица и шеи. Кератиновые кисты: а полость волосяной кисты содержит аморфную массу белосероватого цвета внутренняя выстилка представлена рядами чешуйчатоподобных клеток б полость эпидермальной кисты заполнена слоями кератина внутренняя выстилка представлена многослойным плоским эпителием. Наиболее частая локализация кератиновых кист кожа лица шеи волосистой части головы; кисты появляются в период...
31069. Варианты лимфаденитв 19.22 KB
  Лимфогранулематоз Хлджкина злокачественная опухоль лимфоидной ткани в которой малочисленные опухолевые клетки характерного строения располагаются среди преобладающего реактивного клеточного окружения. Опухолевые клетки при нодулярном типе лимфоидного преобладания экспрессируют панВклеточные антигены в то время как клетки классического лимфогранулематоза утрачивают экспрессию Вклеточных антигенов. Клетки БерезовскогоШтернбергаРид типичного строения крупные 2030 мкм с дву или многодольчатым ядром или дву или многоядерного...
31070. Одонтогенный сепсис 30.01 KB
  Изначально причиной одонтогенного сепсиса чаще всего являются осложнения кариеса: апикальный периодонтит периостит остеомиелит челюстей и флегмоны мягких тканей орофациальной области. Для реализации сепсиса необходима неадекватная гиперергическая реакция макроорганизма на возбудителя и несостоятельность его антибактериальной защиты. При сепсисе утрачена способность макроорганизма локализовать инфекцию.
31071. Десмодонтоз 15.62 KB
  Впоследствии начинается воспалительный процесс в десневых тканях образуются пародонтальные карманы которые наполнены гнойным содержимым происходит смещение зубов их расшатывание а затем они попросту выпадают. Параллельно с этим заболеванием происходит поражение ладоней и подошв стопы гиперкератоз происходит нарушение обменных процессов триптофана и возникает диспротеинэмия. Лечение в данном случае требуется симптоматическое а при уже развившихся стадиях происходит удаление поврежденных зубов и проводится ортопедическое лечение.
31072. Кандидоз 15.34 KB
  Болеют кандидозом дети начиная с первых дней жизни и взрослые обычно пожилые и ослабленные чаще женщины. Существуют два пути возникновения кандидоза заражение от больного кандидозом и переход собственных условнопатогенных грибов в патогенные под воздействием благоприятных для развития гриба факторов. В развитии кандидоза особенно хронического значительную роль играют: дефекты клеточного иммунитета заболевания эндокринной системы тяжелые истощающие заболевания туберкулез анацидные гастриты...