Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++v 1.0_студенты.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
626.69 Кб
Скачать

Лабораторная работа № 3. Алгоритмизация циклических вычислительных процессов.

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

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

2. Порядок выполнения работы

    1. Изучить структуры алгоритмов циклических вычислительных процессов. Изучить общие принципы работы с массивами.

    2. Изучить синтаксис и работу операторов for, while и do-while, директиву #define.

    3. Изучить пример выполнения задания. Обратите внимание, что имя массива фактически есть адрес первого элемента массива в памяти.

    4. Разработать алгоритм решения индивидуального задания, удовлетворяющий требованиям из пункта 2.5, используя метод пошаговой детализации.

    5. Требования к алгоритму. Алгоритм должен соответствовать требованиям структурного подхода. Необходимо организовать интерфейс ввода – вывода всех требуемых данных, организовать проверку входных данных на допустимые значения. Для решения задачи использовать одномерный массив. Необходимо предусмотреть именованную константу для задания размерности массива, величина константы должна быть не менее 20. Фактический рабочий размер массива должен определяться переменной, задаваемой в качестве исходных данных. Предусмотреть инициализацию массива на выбор пользователя ручным способом или с помощью генератора случайных чисел. Необходимо использовать все три оператора цикла: либо разные части алгоритма выполнить, используя разные операторы цикла, либо одну и ту же часть выполнить тремя способами.

    6. Разработать программу на языке С++ для алгоритма п. 2.4.

    7. Выполнить отладку и компиляцию программы, получить исполняемый файл.

    8. Выполнить тестирование программы несколькими наборами входных данных.

3. Пример выполнения задания

Даны натурально число n, действительное число x.

Вычислить: .

3.1 Текст программы на С++.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

// модуль lab3.cpp

#include "stdafx.h"

#define MAX_SIZE 100; //константа – максимальный размер массива

int main()

{ setlocale(LC_ALL, "RUS");

unsigned int n = 0; //фактический рабочий размер массива

float x = 0;

float mas[MAX_SIZE] = {0}; //объявление массива максимального размера

//диалог и ввод данных------------------------------------------------------------------------- printf("Введите количество элементов в массиве (натуральное число) = ");

scanf("%i", &n);

printf("Введите вещественное число x = ");

cin >> x;

//решение задачи---------------------------------------------------------------------------------

//первый вариант реализация цикла (for)

float p = 1; //произведение

for(unsigned int k = 0; k < n; k++) { //-----------------------------счетный цикл

mas[k] = (k/(k+1))-pow(cos(abs(x)), (int)k);

p *= (mas+k)[0]; //mas – есть адрес массива в памяти

}

printf("\n\nПроизведение равно (первый способ) = %3.5f\n\n", p);

//второй вариант реализация цикла (while)

unsigned int k = 0; //счетчик

p = 1;

while (k < n) { //--------------------------------------------цикл с предусловием

mas[k] = (k/(k+1))-pow(cos(abs(x)), (int)k);

p *= *(mas+k);

k = k + 1;

}

cout << "Произведение равно (второй способ) = " << p << endl << endl;

//третий вариант реализации цикла (do-while)

k = 0; p = 1;

do { //----------------------------------------------------------цикл с постусловием

mas[k] = (k/(k+1))-pow(cos(abs(x)), (int)k);

p *= mas[k];

k++;

}while(k < n);

printf("Произведение равно (третий способ) = %3.5f\n\n\n", p);

system("pause");

return 0;

}

4. Контрольные вопросы

  1. Функциональная схема цикла и назначение ее отдельных частей.

  2. Какие виды циклов существуют, в чем их принципиальные отличия?

  3. Назначение цикла for и его отдельных компонентов.

  4. Укажите, сколько операторов можно разместить в теле цикла?

  5. Можно ли в теле цикла изменять значение параметра цикла?

  6. Можно ли вне тела цикла использовать значение параметра цикла?

  7. Как работают операторы while и do-while?

  8. Какими способами можно инициализировать массив?

  9. Какими способами можно обращаться к элементам массива?

  10. Какова общая схема работы с массивом?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]