Лабораторная работа № 5. Итерационные и арифметические циклы. Вложенные циклы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 5. Итерационные и арифметические циклы. Вложенные циклы



Цель и порядок работы

 

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

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

- ознакомиться с описанием лабораторной работы;

- получить задание у преподавателя, согласно своему варианту;

- написать программу и отладить ее на ЭВМ;

- оформить отчет.

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

 

1. Каково предназначение итерационных циклов? Каким образом их можно реализовать?

2. Каково предназначение арифметических циклов? Каким образом их можно реализовать?

3. Каково предназначение вложенных циклов? Каким образом их можно реализовать?

4. Перечислите виды операторов цикла и опишите их работу.

5. Опишите возможности ввода-вывода данных с помощью библиотеки потокового ввода вывода iostream.h.

6. Опишите известные вам манипуляторы ввода-вывода.

7. Как осуществляется ввод при помощи стандартной библиотеки stdio.h?

8. Какие модификаторы и спецификаторы поддерживает функция printf.

9. Что такое явление оборачивания, и каковы его возможные последствия.

Задание

 

1. Написать программу в соответствии с вариантом задания

2. Проверить работоспособность программы.

3. Отладить и протестировать программу.

4. Написать программу в соответствии с вариантом задания

5. Проверить работоспособность программы.

6. Отладить и протестировать программу.

7. Оформить отчёт.

 

Варианты заданий

Арифметические циклы

Вычислить и вывести на экран в виде таблицы значение функции y(x) на интервале от x0 до xn с шагом dx. A, B, C, D, X, x0, xn и dx - вещественные числа, значения которых вводятся с клавиатуры.

Для операций ввода-вывода использовать возможности библиотеки stdio.h.

 

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

 

Итерационные циклы

Написать программу вычисления значения функции, заданной в виде ряда, с погрешностью > 0, т.е. чтобы для заданной погрешности выполнялось соотношение . Определить количество членов ряда, сравнить полученное значение суммы со значением функции, полученным c помощью стандартных функций языка С++:

acos(x) – Арккосинус (arccos x)

cos(x) – Косинус (cos x)

asin(x) – Арксинус (arcsin x)

sin(x) – Синус (sin x)

atan(x) - Арктангенс (arctg x)

log(x) – Натуральный логарифм (ln x)

pow(x, n) – Возведение x в степень n (xn)

exp(x) – Экспонента (ex)

 

Результаты отформатировать при помощи манипуляторов из библиотеки iostram.h.

 

В некоторых задачах в выражении разложения используется запись (–1)n для того, чтобы показать чередование знака арифметической операции между слагаемыми: если n – четно, то «+», иначе «–». Поэтому нет необходимости вычислять степень.

 

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

 

Содержание отчета

1. Титульный лист.

2. Наименование и цель работы.

3. Краткое теоретическое описание.

4. Задание на лабораторную работу.

5. Схема алгоритма.

6. Листинг программы.

7. Результаты выполнения программы.


Массивы

Массивы.

Массив – это упорядоченная последовательность переменных одного типа. Каждому элементу массива отводится одна ячейка памяти. Элементы одного массива занимают последовательно расположенные ячейки памяти. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером. Чтобы отвести в памяти нужное количество ячеек для размещения массива, надо заранее знать его размер. Резервирование памяти для массива выполняется на этапе компиляции программы.

1 Определение массива в C/C++

Описание массива выглядит следующим образом:

базовый_тип имя_массива [размерность];

Размерность – это количество элементов массива.

Пример:

int a[100]; //массив из 100 элементов целого типа

Операция sizeof(a) даст результат 400, т. е. 100 элементов по 4 байта.

Элементы массива всегда нумеруются с 0.

 

          значения элементов массива
      …..   индексы элементов массива

Чтобы обратиться к элементу массива, надо указать имя массива и номер элемента в массиве (индекс):

a[55] – индекс задается как константа,

a[i] – индекс задается как переменная,

a[2*i] – индекс задается как выражение.

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

Например:

 

//одномерный массив целочисленного типа из 5 элементов

int array[5];

//одномерный массив вещественного типа из N элементов (N - константа!!!)

const int N = 20;

float x[N];

При описании массив можно инициализировать, то есть присвоить его элементам начальные значения:

 

базовый_тип имя_массива [размерность] = {начальные_значения};

 

Если инициализирующих значений меньше, чем элементов в массиве, остаток массива обнуляется, если больше – лишние значения не используются.

Например:

int a[3] = {1, 2, 3}; //a[0] = 1, a[1] = 2, a[2] = 3

 

// недостающие значения инициализации заполняются нулями

int b[5] = {1, 2, 3}; //b[0] = 1, b[1] = 2, b[2] = 3, b[3] = 0, b[4] = 0

 

// лишние значения (4 и 5) не используются

int с[3] = {1, 2, 3, 4, 5}; //c[0] = 1, c[1] = 2, c[2] = 3

 

//индекс может быть опущен и размер вычисляется

// по количеству элементов инициализации

int d[] = {0, 2, 4}; //c[0] = 0, c[1] = 2, c[2] = 4 (размер 3)

 

//строка так же является массивом символов,

//оканчивающимся нуль-символом (управляющей последовательностью \0)

char s[] = "Hi!"; //s[0]='H', s[1]='i', s[2]='!', s[3]='\0' (размер 4)

 

Задача: найти сумму элементов массива, ее и сам массив на экран. Элементы массива ввести с клавиатуры.

#include <iostream>

using namespace std;

void main ()

{

setlocale ( LC_ALL, "Russian" );

//определим размер массива

const int N = 10;

int a [ N ];

//введем элементы массива с клавиатуры

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

{

cout << "Введите " << i << "-й элемент массива: ";

cin >> a [ i ];

}

//объявим переменную для хранения суммы элементов

int s = 0;

//просуммируем элементы массива

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

s += a [ i ];

//выведем на экран элементы массива и их сумму

cout << "a:";

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

{

cout << " " << a [ i ];

}

cout << endl << "Сумма элементов: " << s;

}

 

Рассмотрим следующий пример: найти максимальный элемент в массиве.

#include <iostream>

using namespace std;

void main ()

{

setlocale ( LC_ALL, "Russian" );

int b [] = { 1, -5, 8, 7, 4, -7, 3, 0, -8, 6 };

//определим размер массива

int n = sizeof( b )/sizeof( b [ 0 ]);

//объявим переменную для хранения максимального элемента

//присвоим начальное значение, равное нулевому элементу

int m = b [ 0 ];

//просмотрим все элементы начиная с 1-ого элемента

for (int i = 1; i < n; i ++)

{

//если i-й элемент будет больше текущего максимального значения,

//то изменим это максимальное значение на значение i-го элемента

if ( b [ i ] > m )

m = b [ i ];

}

//выведем на экран элементы массива

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

cout << " " << b [ i ];

//и максимальный элемент

cout << endl << "Максимальный элемент: " << m;

}

 

Многомерные массивы

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

Для доступа к элементу многомерного массива указываются все его индексы.

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

Например:

 

//одномерный массив (вектор) размерностью 10

int vector [ 10 ];

 

//двумерный массив (матрица) размерностью 3x3

int matrix [ 3 ][ 3 ];

 

//двумерный массив размерностью 6 строк на 8 столбцов

int x [ 6 ][ 8 ];

 

//трехмерный массив размерностью 6x3x2

int y [ 6 ][ 3 ][ 2 ];

 

//шестимерный массив размерностью 6x3x2x5x8x4

int z [ 6 ][ 3 ][ 2 ][ 5 ][ 8 ][ 4 ];

 

//объявление массива с инициализацией

//крайняя левая размерность отсутствует

int mass0 [][ 2 ] = { { 1, 1 }, { 0, 2 }, { 3, 0 } };

 

//объявление массива с инициализацией

int mass1 [ 3 ][ 2 ] = { { 1, 1 }, { 0, 2 }, { 3, 0 } };

 

//объявление массива с инициализацией

//для удобства чтения каждая строка массива находится в отдельной строчке

int mass2 [ 3 ][ 2 ] = {

{ 1, 1 },

{ 0, 2 },

{ 3, 0 }

};

 

//объявление массива с инициализацией

//внутренние фигурные скобки могут отсутствовать

int mass3 [ 3 ][ 2 ] = { 1, 1, 0, 2, 3, 0 }:

 

//объявление массива с инициализацией

//для удобства чтения каждая строка массива находится на отдельной строчке

int mass4 [ 3 ][ 2 ] = {

1, 1,

0, 2,

3, 0

}:

 

Пример: в целочисленной матрице 3x4 определить номера строки и столбца элемента, который равен нулю. Массив задать случайными числами.

 

#include <iostream>

using namespace std;

void main ()

{

setlocale ( LC_ALL, "Russian" );

const int N = 3, M = 4;

int r [ N ][ M ];

//заполним массив случайными числами от 0 до 9

//внешний цикл для перемещения по строкам

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

//внутренний цикл для перемещения по столбцам

for (int j = 0; j < M; j ++)

//остаток от деления на 10 позволяет

//получить требуемый диапазон значений

r [ i ][ j ] = rand () % 10;

//выведем массив на экран

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

{

for (int j = 0; j < M; j ++)

{

cout << r [ i ][ j ] << " ";

}

//перейдем на новую строчку

cout << endl;

}

cout << "Нулевые элементы:" << endl;

//найдем элементы равные 0 и выведем их индексы на экран

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

for (int j = 0; j < M; j ++)

if ( r [ i ][ j ] == 0 )

{

cout << "a[" << i << "][" << j << "] == 0" << endl;

}

}

 

Сортировка массивов

Сортировка – это процесс перегруппировки заданного множества объектов в некотором установленном порядке.



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 484; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.213.75.78 (0.165 с.)