МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Пример 15.35-Щшибка-Не работает





Определить количество строк матрицы, в которых суммы всех элементов отрицательные. Массив объявить как динамический.

Решение.

Рисунок 15.10. Графическая схема алгоритма

Таблица 15.4

Таблица соответствия

Переменные в задаче Имя на языке Си Тип Комментарий  
S S float Сумма элементов i-той строки
A A float Двумерный динамический массив
K K float Количество искомых строк
- n int Количество всех строк в матрице
- m int Количество столбцов
- i int Номер строки
- j int Номер столбца

 

/*Пример обработки двумерного динамического массива*/

# include <stdio.h>

# include <math.h>

void main ( )

{

int i, j, m, n;

float K, S; //Описание переменных

puts (― введите n, m‖); // Вывод сообщения

scanf (―%d %d‖, &n, &m); // Ввод исх.числа строк и столбцов

float**A=new float*[n];

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

A[i]=new float[m];

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

for(j=0; j<m; j++)

{

printf(―Введите A[%d; %d]=‖, i, j);

scanf(―%f‖, &A[i] [j]);

}

K=0;

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

{

S=0;

for(j=0; j<m; j++)

S=S+A[i] [j];

if(S<0) K=K+1;

}

printf(―%f \n‖, K);

for(i=0; i<n; i++) //Освобождение динамической памяти

delete[]A[i];

 

delete[]A;

}

 

Тесты:

-3 -2 2 6 -3

1) A= 6 7 -1 20 -4 K=2.

-4 -2 -3 6 -1

 

 

-4 -2 4 6 4

2) A= 3 5 7 2 0 K=0.

5 0 -2 9 0

 

2. ЗАДАНИЕ

2.1. Изучить теоретические сведения.

2.2. Разобрать и выполнить примеры к данной лабораторной работе.

2.3. Написать и отладить семь программ на языке С++.

 

2.4. Задания для выполнения на занятиях

 

2.4.1. Задание 1. Динамические одномерные массивы

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

 

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

Таблица 15.1

Условие задачи
1. Заданы два массива А(5) и В(4). Первым на печать вывести массив, сумма значений которого окажется наименьшей.
2. Заданы два массива А(5) и В(4). Первым на печать вывести массив, произведение значений которого окажется наименьшим.
3. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массивов. На печать вывести исходные и преобразованные массивы.
4. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и вычесть его из всех элементов массивов. На печать вывести исходные и преобразованные массивы.
5. Заданы два массива А(5) и В(5). В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные массивы и найденные значения.
6. Заданы два массива А(5) и В(4). Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.
7. Заданы два массива А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наименьшее их количество.
8. Заданы два массива А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наименьшее их количество.
9. Заданы два массива А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наибольшее их количество.
10. Заданы два массива А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наибольшее их количество.
11. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, больших значения t и первым на печать вывести массив, имеющий наименьшее их количество.
12. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t и первым на печать вывести массив, имеющий наименьшее их количество.
13. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, больших значения t и первым на печать вывести массив, имеющий наибольшее их количество.
14. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
15. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
16. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
17. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
18. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, кратных двум и первым на печать вывести массив, имеющий наибольшее их количество.
19. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, кратных трем и первым на печать вывести массив, имеющий наибольшее их количество.
20. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t и первым на печать вывести массив, имеющий наибольшее их количество.
21. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые больше 0.
22. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые меньше 0.
23. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны двум.
24. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые больше значения T.
25. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны трем.
1. Заданы два массива А(5) и В(4). Первым на печать вывести массив, сумма значений которого окажется наибольшей.
2. Заданы два массива А(5) и В(4). Первым на печать вывести массив, произведение значений которого окажется наибольшим.
3. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массивов. На печать вывести исходные и преобразованные массивы.
4. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение. Из найденного значения вычесть все элементы массивов. На печать вывести исходные и преобразованные массивы.
Заданы два целочисленных массива А(5) и В(4). Первым на печать вывести массив, содержащий наименьшее значение. Напечатать также это значение и его порядковый номер.

 



2.4.1.2. Пример обработки динамического массива для варианта 30

Заданы два массива А(5) и В(4). Первым на печать вывести массив, содержащий наименьшее значение. Напечатать также это значение и его порядковый номер.

2.4.1.3. Программа

//Лабораторная работа № 15

//Задание № 1

//Выполнила Петрова А.А.

#include<conio.h>

#include<iostream.h>

int main ()

// пример программы обработки динамических массивов

{

int n, // количество элементов в исходном массиве a

m; // количество элементов в исходном массиве b

int *a, *b; // указатели исходных одномерных массивов a и b

int i, j; //счетчики циклов

int imina, //индекс минимального элемента массива a

jminb; //индекс минимального элемента массива b

int mina, //минимальный элемент массива a

minb; //минимальный элемент массива b

 

// формирование исходных массиваов

cout << "Введите количество элементов массива a: "; cin >> n;

a=new int[n];//динамическое выделение памяти для массива a

cout <<"Введите " <<n <<" элемента (ов) массива a: "<< endl;

for (i=0;i<n;i++) cin >> a[i];

cout << "Введите количество элементов массива b: "; cin >> m;

 

b=new int[m];//динамическое выделение памяти для массива b

cout <<"Введите " <<m <<" элемента (ов) массива b: "<< endl;

for (j=0;j<m;j++) cin >> b[j];

 

// Контрольный вывод исходных массиваов

cout << "Исходный массив a: " << endl;

for (i=0;i<n;i++) cout <<" a[ " <<i << " ] =" <<a [i] <<" ";

cout << endl ;

 

cout << "Исходный массив b: " << endl;

for (j=0;j<m;j++) cout <<" b[ " <<j << " ] =" <<b [j] <<" ";

cout << endl ;

 

//поиск минимального элемента массива a

imina=0;

mina=a[0];

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

{

if (a[i]<mina){mina=a[i];imina=i;}

}

 

//поиск минимального элемента массива b

jminb=0;

minb=b[0];

for (j=1;j<m;j++)

{

if (b[j]<minb){minb=b[j];jminb=j;}

}

 

cout <<"imina = "<< imina << " mina = "<< mina << endl;

cout <<"jminb = "<< jminb << " = "<< minb << endl;

 

 

if (mina < minb)

{cout << "Наименьшее значение в массиве a"<< endl;

for (i=0;i<n;i++) cout <<" a[ " <<i << " ] =" <<a [i] <<" ";

cout << endl;

}

else

{cout << "Наименьшее значение в массиве b"<< endl;

for (j=0;j<m;j++) cout <<" b[ " <<j << " ] =" <<b [j] <<" ";

cout << endl;

}

 

cout <<"Нажмите любую клавишу...";

getch() ;

delete []a; // освобождение динамической памяти

delete []b;// освобождение динамической памяти

return 0;

}

2.4.1.4. Тестирование

 

 

 

2.4.2. Задание 2. Динамические двумерных массивы

Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.

 

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

Таблица 15.1

Задание
Определить количество положительных элементов, расположенных ниже побочной диагонали матрицы.
Определить количество отрицательных элементов, расположенных выше главной диагонали матрицы.
Определить сумму отрицательных элементов, расположенных выше побочной диагонали матрицы.
Определить произведение положительных элементов, расположенных ниже главной диагонали матрицы.
Определить сумму элементов, расположенных на главной диагонали матрицы, и произведение элементов, расположенных на побочной диагонали матрицы.
Определить количество четных элементов, расположенных на главной и побочной диагоналях.
Найти максимальный среди элементов, лежащих ниже побочной диагоали.
Найти минимальный среди элементов, лежащих выше главной диагонали.
Найти максимальный среди элементов, лежащих выше побочной диагонали.
Найти минимальный среди элементов, лежащих ниже главной диагонали.
Найти в каждой строке матрицы максимальный элемент.
Найти в каждом столбце матрицы минимальный элемент.
Найти сумму элементов, расположенных в четных (по номеру) строках матрицы.
Найти произведение элементов, расположенных в нечетных (по номеру) столбцах матрицы.
Подсчитать сумму четных элементов и произведение нечетных элементов матрицы.
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые, и значение 1 − в противном случае.
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если элементы k-й строки матрицы упорядочены по убыванию, и значение 0 − в противном случае.
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0 − в противном случае.
Задана матрица размером NxM. Определить количество «особых» элементов матрицы, считая элемент «особым», если он больше суммы остальных элементов своего столбца.
Задана матрица размером NxM. Определить количество «особых» элементов матрицы, считая элемент «особым», если в строке слева от него находятся элементы, меньшие его, а справа – большие.
Задана символьная матрица размером NxM. Определить количество различных элементов матрицы (т.е. повторяющиеся элементы считать один раз).
Дана матрица размером NxM. Упорядочить ее строки по возрастанию их первых элементов.
Дана матрица размером NxM. Упорядочить ее строки по возрастанию суммы их элементов.
Дана матрица размером NxM. Упорядочить ее столбцы по возрастанию их наименьших элементов.
Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали.
Для матрицы размером NxM вывести на экран все седловые точки. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или наоборот.
В матрице размером NxM переставить строки так, чтобы на главной диагонали матрицы были расположены элементы, наибольшие по абсолютной величине.
В матрице размером NxM найти максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше главной диагонали.
В матрице размером NxM поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением.
В матрице размером NxM поменять местами минимальный и максимальный элементы.
Из матрицы размером NxM получить матрицу размером (N–1) x (M–1) путем удаления из исходной матрицы строки и столбца, на пересечении которых расположен элемент с наибольшим по модулю значением

 

2.4.2.2. Пример для варианта 30

Написать программу перестановки минимального и максимального элементов двумерного массива размером NxM. Память для массива выделить динамически.

2.4.2.3. Программа

//Лабораторная работа № 15

//Задание № 2

//Выполнила Петрова А.А.

#include<conio.h>

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main()

{

double **a, tmp; // указатель исходных одвумерного массива a

int i, j, n, m, imin, jmin, imax, jmax;

cout << "Vvedite razmer massiva a: n, m" << endl;

cin >> n >> m;

a = new double*[n]; // Выделение памяти под массив указателей

for(i=0; i<n; i++) // Выделение памяти под соответствующие

a[i] = new double[m]; // этим указателям строки матрицы

for (i=0; i<n; i++) // Ввод двумерного массива

for (j=0; j<m; j++)

{

cout << "Vvedite a[" << i << "][" << j << "]: " ;

cin >> a[i][j];

}

cout << "Мassiv A:" << endl; // Вывод двумерного массива

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

{

for (j=0; j<m; j++)

cout << setw (9) << a[i][j] << " ";

cout << endl;

}

imin=jmin=imax=jmax=0; // Поиск индексов минимального и

for (i=0; i<n; i++) // максимального элементов массива

for (j=0; j<m; j++)

{

if (a[i][j]<a[imin][jmin]) { imin=i;

jmin=j;

}

if (a[i][j]>a[imax][jmax]) { imax=i;

jmax=j;

}

}

tmp = a[imin][jmin]; // Перестановка элементов

a[imin][jmin] = a[imax][jmax];

a[imax][jmax] = tmp;

cout << "Result :" << endl; // Вывод результата

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

{

for (j=0; j<m; j++)

cout << setw (9) << a[i][j] << " ";

cout << endl;

}

 

cout <<"Нажмите любую клавишу...";

getch();

 

for(i=0; i<n; i++) // Освобождение выделенной памяти

delete [] a[i];

delete []a;

a = NULL;

return 0;

}

2.4.2.4. Тестирование

 

2.4.3. Задание 3. Динамические одномерные массивы

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

Выполнить указанное в варианте задание и вывести полученный массив на печать.

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

1. Ввести размер массива;

2. Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);

3.Заполнить массив (можно с помощью датчика случайных чисел);

4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);

5.Напечатать массив(ы)-результат(ы);

6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.

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

Таблица 15.3

Задание
Удалить первый четный элемент
Удалить первый отрицательный элемент
Удалить элемент с заданным ключом (значением)
Удалить элемент равный среднему арифметическому элементов массива
Удалить элемент с заданным номером
Удалить N элементов, начиная с номера K
Удалить все четные элементы
Удалить все элементы с четными индексами
Удалить все нечетные элементы
Удалить все элементы с нечетными индексами
Добавить элемент в начало массива
Добавить элемент в конец массива
Добавить К элементов в начало массива
Добавить К элементов в конец массива
Добавить К элементов, начиная с номера N
Добавить после каждого отрицательного элемента его модуль
Добавить после каждого четного элемента элемент со значением 0
Добавить по К элементов в начало и в конец массива
Добавить элемент с номером К
Удалить элементы, имеющие значение больше заданного
Удалить N элементов, начиная с номера K
Удалить все четные элементы
Удалить все элементы с четными индексами
Удалить все нечетные элементы
Добавить после каждого нечетного элемента элемент со значением 1
Удалить максимальный элемент
Удалить минимальный элемент
Удалить элементы, имеющие значение меньше заданного
Все отрицательные элементы заменить их модулями
Удалить элемент с заданным номером

 

2.4.3.2. Пример обработки динамического массива для варианта 30

Удалить элемент с заданным номером

 

2.4.3.3. Программа

 

2.4.4.4. Тестирование

 

2.4.4. Задание 4. Динамические двумерные массивы

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

Выполнить указанное в варианте задание и вывести полученный массив на печать.

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

1. Ввести размер массива;

2. Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);

3.Заполнить массив (можно с помощью датчика случайных чисел);

4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);

5.Напечатать массив(ы)-результат(ы);

6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.

 

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

Таблица 15.4

Задание
Добавить строку с заданным номером
Добавить столбец с заданным номером
Добавить строку в конец матрицы
Добавить столбец в конец матрицы
Добавить строку в начало матрицы
Добавить столбец в начало матрицы
Добавить К строк в конец матрицы
Добавить К столбцов в конец матрицы
Добавить К строк в начало матрицы
Добавить К столбцов в начало матрицы
Удалить строку с номером К
Удалить столбец с номером К
Удалить строки, начиная со строки К1 и до строки К2
Удалить столбцы, начиная со столбца К1 и до столбца К2
Удалить все четные строки
Удалить все четные столбцы
Удалить все строки, в которых есть хотя бы один нулевой элемент
Удалить все столбцы, в которых есть хотя бы один нулевой элемент
Удалить строку, в которой находится наибольший элемент матрицы
Добавить строки после каждой четной строки матрицы
Добавить столбцы после каждого четного столбца матрицы
Добавить К строк, начиная со строки с номером N
Добавить К столбцов, начиная со столбца с номером N
Добавить строку после строки, содержащей наибольший элемент
Добавить столбец после столбца, содержащего наибольший элемент
Удалить К первых строк.
Удалить К последних строк.
Удалить одинаковые строки.
Удалить строку и столбец, на пересечении которых находится минимальный элемент.
Удалить строку и столбец, на пересечении которых находится максимальный элемент.

 

2.4.4.2. Пример для варианта 30

Удалить строку и столбец, на пересечении которых находится максимальный элемент.

2.4.4.3. Программа

 

2.4.4.4. Тестирование

 

2.4.5. Задание 5. Динамические двумерные массивы

Общая постановка. Составить программы на двухмерные массивы: задания 26-50. Массивы создаются в динамической области памяти с использованием операций NEW и DELETE. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива – через косвенную адресацию.

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

Таблица 15.5

Задание
Дан массив A(n,n). Написать программу его поворота на 900 относительно его центра. На печать вывести исходный и повернутый массивы.
Дан массив A(n,n). Написать программу его поворота на 1800 относительно его центра. На печать вывести исходный и повернутый массивы.
Дан массив A(n,n). Написать программу его поворота на 2700 относительно его центра. На печать вывести исходный и повернутый массивы.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше главной диагонали.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже главной диагонали.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше диагонали, противоположной главной.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже диагонали, противоположной главной.
Задана матрица А(n,n). Найти суммы и произведения элементов, стоящих на главной и противоположной (побочной) диагоналях.
Задана матрица А(n,n), состоящая из нулей и единиц. Подсчитать количество нулей и единиц в этой матрице.
Задана матрица А(n,n). Переставить местами к-ю и i-ю строки, а эатем l-й и j-й столбцы.
Задан массив действительных чисел А(n). Необходимо каждый элемент массива разделить на среднее арифметическое этих элементов. На печать вывести исх. и преобразов. массивы.
Задан массив А(n). Получить массив В(к), состоящий из элементов массива А, которые делятся на 3. Подсчитать количество элементов массива В.
Задана матрица А(n,n). Получить матрицу В=А2.Элемент b[i][j] определяется как сумма от поэлементного произведения i-й строки на j-й столбец матрицы А.
Вычислить первую норму матрицы А(n,n) , определяемую как , т.е. максимальная сумма из сумм элементов по столбцам
Вычислить вторую норму матрицы А(n,n), определяемую как максимальная сумма из сумм элементов по строкам .
Задан двухмерный массив целых чисел A размером N на M. Найти сумму элементов, расположенных на главной диагонали.
Задан двухмерный массив целых чисел A размером N на M. Найти произведение элементов, расположенных на главной диагонали.
Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его с элементом A[1,1].
Задан двухмерный массив целых чисел A размером N на M. Найти минимальный элемент и поменять его с элементом A[1,1].
Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его с последним.
Дан массив А(n,n).Найти число элементов массива a(i,j)>t и просуммировать все эти элементы.
Дан одномерный массив А(n).Сформировать массив B(k),состоящий из a(i) > t. На печать вывести исходный массив, сформированный массив и его размерность.
Дан массив A(n,n). Вычислить сумму всех неотрицательных элементов, а также их количество.
Дан массив A(n,n). Вычислить сумму всех отрицательных его элементов и их количество.
Дан массив A(n,n). Сформировать вектор В(к) из a(i,j) < 0. На печать вывести исходный массив, полученный вектор и его размерность.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже главной диагонали.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше диагонали, противоположной главной.
Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже диагонали, противоположной главной.
Задан массив действительных чисел А(n). Необходимо каждый элемент массива разделить на среднее арифметическое этих элементов. На печать вывести исх. и преобразов. массивы.
Задан массив А(n). Получить массив В(к), состоящий из элементов массива А, которые делятся на 2. Подсчитать количество элементов массива В.

 

2.4.5.2. Пример для варианта 30

Задан массив А(n). Получить массив В(к), состоящий из элементов массива А, которые делятся на 2. Подсчитать количество элементов массива В.

 

2.4.5.3. Программа

2.4.5.4. Тестирование

 

3. ВЫВОДЫ

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

Выполнив данную лабораторную работу, вы должны освоить следующие основные концепции:

1. Указатели содержат адрес памяти. Когда вы передаете в функцию массив, C++ передает адрес первого элемента массива.

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

3. Функции, которые манипулируют строками с помощью указателей, обычно сканируют строку до того момента, пока не найден символ NULL.

4. При использовании указателей с массивами других типов ваши функции должны знать количество элементов массива или специальный маркер конца массива.

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

Ваше умение понимать указатели и работать с ними облегчит использование объектно-ориентированных классов C++ во 2-ой части изучаемого курса.

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

Чем активнее Вы будете овладевать возможностями системы программирования на языке С++, тем более легким и эффективным будет для Вас выполнение всего лабораторного практикума.

 

4. ТРЕБОВАНИЕ К ОТЧЕТУ

В отчете должны быть отображены следующие пункты:

1. Название работы.

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

3. Задание.

4. Краткие теоретические сведения.

5. Листинги двух программ.

6. Таблицы выбора идентификаторов (таблицы кодирования переменных).

7. Результаты выполнения двух программ (скриншоты).

8. Выводы.

 

5. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ

1. Что такое указатели?

2. Какие операции можно выполнять над указателями?

3. В чем заключается связь между указателями и массивами?

4. Какие операции обязательны при работе с динамическими массивами?

5. Свойства динамических массивов.

6. В чем заключается отличие между динамическими и статическими массивами?

7. Можно ли изменить размер динамического массива при исполнении программы? Если да, то, как это сделать?

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

9. Какие ограничения накладываются на определение многомерных динамических массивов?

10. В чем заключается отличие между именем массива и указателем?

11. В чем заключается особенность динамических массивов?

12. Какие вы знаете операции динамического выделения и освобождения памяти в С++?

13. Как объявить динамический многомерный массив, используя указатели?

14. Что содержит указатель на массив?

 

Литература

1. Волков В. Б., Макарова Н. В. Информатика. Учебник для вузов. – СПб: Питер, 2011

2. Гагарина Л.Г. , Колдаев В.Д. Алгоритмы и структуры данных: учеб. пособие. – М.: Финансы и статистика; ИНФРА-М, 2009. -304 с: ил.

3. Голицына О.Л., Попов И.И. Основы алгоритмизации и программирования: учеб. пособие. – 3-е изд., испр. и доп. – М: ФОРУМ, 2008. — 432 с. — (Про­фессиональное образование).

4. Страуструп Б. Программирование: принципы и практика использования C++. Пер. с англ. – М.: ООО "И.Д. Вильямс", 2011. – 1248 с.: ил.

5. Савич У. Программирование на C++. – СПб: Питер, 2004.

6. ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

7. Хенкеманс Д., Ли М. Программирование на С++. – Пер. с англ. – СПб: Символ-Плюс, 2002, 2005. 416 с, ил.

8. Герберт Ш. С++: базовый курс, 3-е издание. : Пер. с англ. – М.: Издательский дом "Вильяме", 2010. – 624 с.: ил.

9. Дейтел Х., Дейтел П. Как программировать на С++ Бином-Пресс, 2010.

 

Оглавление

 

Лабораторная работа № 15. 2

Программирование с использованием указателей. 2

1. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 2

1.1. Понятие указателя. 2

1.2. Объявление указателя. 4

1.3. Операции над указателями. 12

1.4. Передача параметра по ссылке. 15

1.5. Динамическое выделение памяти. 16

1.5.1.Динамическое размещение одномерного массива. 17

1.5.2. Динамическое размещение двухмерного массива. 17

1.5.3. Динамические массивы.. 18

1.5.4. Формирование динамических массивов с использованием библиотечных функций 18

1.5.5. Формирование динамических массивов с использованием операций new и delete. 19

1.5.6. Динамические массивы.. 21

1.5.7. Динамические массивы.. 23

1.5.8. Динамические массивы.. 24

1.5.9. Освобождение выделенной динамической памяти. 25

1.5.10. Описание динамической строки. 26

1.5.11. Объявление динамического массива. 26

1.6. Связь указателей и массивов. 27

1.7. Массивы указателей. 32

1.8. Массивы и функции. 35

1.9. Указатель на символьную строку. 43

Увеличение указателя на символьную строку. 46

Уменьшение количества операторов. 46

1.10. Заполнение массивов случайными числами. 49

1.11. Ссылки в С++. 53

1.12. Примеры программирования задач с использованием указателей. 56

2. ЗАДАНИЕ.. 63

2.4. Задания для выполнения на занятиях. 63

2.4.1. Задание 1. Динамические одномерные массивы.. 63

2.4.1.1. Варианты заданий. 63

2.4.1.2. Пример обработки динамического массива для варианта 30. 65

2.4.1.3. Программа. 65

2.4.1.4. Тестирование. 67

2.4.2. Задание 2. Динамические двумерных массивы.. 68

2.4.2.1. Варианты заданий. 68

2.4.2.2. Пример для варианта 30. 70

2.4.2.3. Программа. 70

2.4.2.4. Тестирование. 71

2.4.3. Задание 3. Динамические одномерные массивы.. 72

2.4.3.1. Варианты заданий. 72

2.4.3.2. Пример обработки динамического массива для варианта 30. 73

2.4.3.3. Программа. 73

2.4.4.4. Тестирование. 73

2.4.4. Задание 4. Динамические двумерные массивы.. 73

2.4.4.1. Варианты заданий. 74

2.4.4.2. Пример для варианта 30. 74

2.4.4.3. Программа. 74

2.4.4.4. Тестирование. 74

2.4.5. Задание 5. Динамические двумерные массивы.. 75

2.4.5.1. Варианты заданий. 75

2.4.5.2. Пример для варианта 30. 76

2.4.5.3. Программа. 76

2.4.5.4. Тестирование. 76

3. ВЫВОДЫ... 76

4. ТРЕБОВАНИЕ К ОТЧЕТУ.. 77

5. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ.. 77

Литература. 78

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.