Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Листинг 5.6






 

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

#include " stdafx.h"

#include < iostream>

#include " conio.h"

#include " windows.h"

#include < tchar.h>

#include < math.h>

#include < time.h>

#include < iomanip>

using namespace std;

const int n = 1000;

 

int _tmain(int argc, _TCHAR* argv[])

{

int n;

int RANGE_MIN = 0;

int RANGE_MAX = 20;

 

setlocale(LC_ALL, " Russian");

cout< < " Лабораторная работа №_5_1" < < '\n';

cout< < '\n';

cout< < " В массиве {aj}, j = 1, 2,...10 есть положительные и отрицательные элементы. ";

cout< < '\n';

cout< < " Вычислить произведение отрицательных элементов ";

cout< < '\n'< < '\n'< < '\n';

cout< < " \nВведите резмерность массива ";

cin > > n;

 

int i = 0, s = 0, klav;

double *arr = new double[n];

double piece = 1;

 

cout< < '\n';

cout< < " Как будет проидведенно заполнение? ";

cout< < '\n';

cout< < " 1 - случайным образом ";

cout< < '\n';

cout< < " 2 - в ручную ";

cout< < '\n';

cout< < " Для продолжения нажмите клавишу выбора ";

cin > > klav;

cout < < '\n';

if (klav == 1)

{

srand((unsigned int)time(NULL));

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

{

int rand100 = (((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN);

arr[i]=rand100-10;

}

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

{

cout < < arr[i] < < " ";

}

}

 

if (klav==2)

{

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

{

cout< < " Введите " < < i+1;

cout< < " элемент ";

cin > > arr[i];

}

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

{

cout < < arr[i] < < " ";

}

}

 

if (klav! = 1 & & klav! =2)

{

cout< < " Неправильный выбор";

cout< < " Для выходна нажмите любую клавишу...";

goto stop;

}

cout < < '\n';

 

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

{

if (arr[i] < 0)

{

piece = piece*arr[i];

s++;

}

}

if (s==0)

{

cout< < '\n '< < " В массиве отсутствуют отрицательные элементы";

}

else

{

cout< < '\n' < < " Произведение отрицательных элементов = " < < piece;

}

 

delete []arr;

stop: getch ();

return 0;

}

Аппаратура и материалы. Для выполнения лабораторной работы необходим персональный компьютер со следующими характеристиками: процессор Intel Pentium-совместимый с тактовой частотой 800 МГц и выше, оперативная память - не менее 64 Мбайт, свободное дисковое пространство - не менее 500 Мбайт, устройство для чтения компакт-дисков, монитор типа Super VGA (число цветов от 256) с диагональю не менее 15². Программное обеспечение - операционная система Windows2000/XP и выше, среда разработки приложений Microsoft Visual Studio.

Указания по технике безопасности. Техника безопасности при выполнении лабораторной работы совпадает с общепринятой для пользователей персональных компьютеров, самостоятельно не производить ремонт персонального компьютера, установку и удаление программного обеспечения; в случае неисправности персонального компьютера сообщить об этом обслуживающему персоналу лаборатории (оператору, администратору); соблюдать правила техники безопасности при работе с электрооборудованием; не касаться электрических розеток металлическими предметами; рабочее место пользователя персонального компьютера должно содержаться в чистоте; не разрешается возле персонального компьютера принимать пищу, напитки.

Методика и порядок выполнения работы. Перед выполнением лабораторной работы каждый студент получает индивидуальное задание в соответствии с индивидуальным заданием лабораторной работы №4. Защита лабораторной работы происходит только после его выполнения (индивидуального задания). При защите лабораторной работы студент отвечает на контрольные вопросы, приведенные в конце, и поясняет выполненное индивидуальное задание. Ход защиты лабораторной работы контролируется преподавателем.Порядок выполнения работы:

1. Проработать примеры, приведенные в лабораторной работе.

2. Составить программу с использованием динамических массивов для решения задачи. Номер варианта определяется по формуле , где - номер студента по списку преподавателя.

Индивидуальное задание №1. Вариант:

1. Сформировать массив, содержащий 7 элементов, задав элементы с клавиатуры. Определить количество элементов, кратных 3 и индексы последнего такого элемента.

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

3. Сформировать с помощью датчика случайных чисел массив, элементы которого находятся в промежутке от -60 до 60. Подсчитать в нем количество положительных элементов.

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

5. В массивах U[7], D[7], V[7] содержатся значения утренней, дневной и вечерней температуры соответственно за каждый день недели. Подсчитать среднее значение дневной температуры за каждый день.

6. В массивах А[n], G[n], F[n] содержатся оценки учащихся по алгебре, геометрии и физике соответственно. Определить, по какому предмету лучше успеваемость.

7. Сформировать с помощью датчика случайных чисел массив A[n], элементы которого находятся в промежутке от -60 до 60. Создать массив B[n], каждый элемент которого вычисляется по формуле:

8. В заданном одномерном массиве найти максимальный элемент и поменять его местами с последним элементом массива.

9. Задан массив из N случайных чисел, принадлежащих промежутку [-50, 100]. Найти сумму тех элементов массива, которые больше 15, но меньше 45, а также вычислить количество этих элементов.

10. В массивах U[7], D[7], V[7] содержатся значения утренней, дневной и вечерней температуры соответственно за каждый день недели. Сформировать массив S[7], в котором будут содержаться значения среднедневной температуры. Определить среднее значение температуры за неделю.

11. В массивах А[n], G[n], F[n] содержатся оценки учащихся по алгебре, геометрии и физике соответственно. Определить среднюю оценку по алгебре и количество учащихся, не имеющих ни одной «двойки».

12. Из массива целых чисел составить три других, в первый из которых записать числа, кратные 5, во второй - числа, кратные 7, а в третий - остальные числа.

13. Дана последовательность из 100 различных чисел. Составить программу нахождения суммы чисел этой последовательности, расположенных между максимальным и минимальным числами (в сумму включить и оба эти числа)

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

15. Определить в одномерном числовом массиве число соседств из двух чисел разного знака.

16. Проверить, имеется ли в данном одномерном числовом массиве хотя бы одна пара чисел, совпадающих по величине.

17. Проверить, имеется ли в одномерном числовом массиве хотя бы одна пара соседних чисел, являющихся противоположными.

18. Дан числовой массив a1, a2, …an. Вывести на печать массив b1, b2, … bn, в котором bi= a1, b2= a1+a2, b3= a1+a2+a3 и т.д.

19. В заданном массиве найти максимальный элемент. Элементы, стоящие после максимального элемента заменить нулями.

20. Из чисел a1, a2, …., an выбрать те, которые меньше заданного числа с, и образовать из них новый массив, сохранив порядок следования элементов.

21. В массиве {aj}, j = 1, 2, …10 есть хотя бы один отрицательный элемент. Вычислить произведение элементов массива до первого отрицательного.

22. В массиве {aj}, j = 1, 2, …8 есть хотя бы один нуль. Вычислить произведение массива до первого нуля

23. В массиве {aj}, j = 1, 2, …8 есть хотя бы один отрицательный элемент. Вычислить сумму элементов массива до первого отрицательного элемента.

24. В массиве {aj}, j = 1, 2, …8 есть хотя бы один ноль. Вычислить сумму элементов массива до первого нуля.

25. В массиве {aj}, j = 1, 2, …10 есть положительные и отрицательные элементы. Вычислить произведение положительных элементов.

26. В массиве {aj}, j = 1, 2, …10 подсчитать количество элементов, больших 3

27. Найти сумму первых чисел последовательности a1, a2, …., an, произведение которых не превосходит заданного числа M.

28. Из чисел a1, a2,..., an выбрать те, которые больше по модулю заданного числа c, и образовать из них новый массив, сохранив порядок следования элементов.

 

3. Составить программу с использованием динамических массивов для решения задачи на переупорядочивание элементов массива. В качестве алгоритма сортировки использовать метод быстрой сортировки массива. Номер варианта определяется по формуле , где - номер студента по списку преподавателя.

Индивидуальное задание №2. Вариант:

1. Массив содержит 2n чисел. Из суммы первых n его элементов вычесть сумму последних n элементов.

2. Даны два массива разных размеров. Определить, какие элементы первого массива и сколько раз встречаются во втором массиве.

3. Даны два целочисленных массива одинакового размера. Получить третий массив того же размера, каждый элемент которого равен большему из соответствующих элементов данных массивов.

4. Задан массив С, содержащий m чисел. Составить программу формирования массивов А и В, включая в массив А четные по номеру элементы массива С в порядке их следования, а в массив В - нечетные.

5. Заданы два массива А и В, содержащие по n чисел. Составить программу формирования массива С, включая в него сначала все элементы массива А, затем все элементы массива В.

6. Числовой массив a1, a2, …an упорядочен по возрастанию. Известно, что число х принадлежит отрезку числовой оси, вмещающему заданный массив. Определить номер k, для которого ak-1< x < = ak.

7. Заменить отрицательные элементы в числовом массиве из n чисел (n> 10) их квадратами, оставив остальные без изменения.

8. В заданном массиве найти среднее арифметическое положительных чисел, средне арифметическое отрицательных чисел и число нулей.

9. В массиве из 2n чисел найти сумму квадратов элементов с четными индексами и сумму кубов элементов с нечетными индексами.

10. Транспонировать массив, т.е. по а1, а2,..., аn сформировать аn, аn-1,..., a1.

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

12. Заменить отрицательные числа в массиве их квадратами, оставив остальные без изменения.

13. В заданном массиве найти среднее арифметическое положительных чисел, среднее арифметическое отрицательных чисел и число нулей.

14. В массиве из 2n чисел найти сумму квадратов элементов с четными индексами и сумму кубов элементов с нечетными индексами.

15. Из чисел а1, а2,..., аn выбрать те, которые больше по модулю заданного числа с, и образовать из них новый массив, сохранив порядок следования элементов.

16. Из массива целых чисел составить три других, в первый из которых записать числа, кратные 5, во второй - числа, кратные 7, а в третий - остальные числа.

17. Задан массив из 100 целых случайных чисел, принадлежащих промежутку [0, 100]. Найти сумму тех элементов массива, которые больше 15, но меньше 45, а также вычислить количество этих элементов.

18. В линейном массиве заменить все элементы на число m (m - индекс максимального элемента).

19. Дан массив, состоящий как из положительных, так и отрицательных чисел. Нужно сначала записать положительные числа, а затем отрицательные в том же порядке, как они были расположены в исходном массиве. Если есть нули, записать их в последнюю очередь.

20. Найти сумму элементов данного массива. Разделить каждый элемент исходного массива на полученное значение.

21. Вычислить сумму и разность массивов одного размера.

22. Найти среднее арифметическое значение элементов заданного массива. Преобразовать исходный массив, вычитая из каждого элемента среднее значение.

23. Даны два массива одинакового размера. Рассматривая их как арифметические векторы, найти длины этих векторов и их скалярное произведение.

24. Заданы два массива разных размеров. Объединить их в один массив, включив второй массив между k-ым и (k + 1)-ым элементами первого (k задано).

25. Вычесть из положительных элементов данного массива элемент с номером k1 а к отрицательным элементам прибавить элемент с номером k2. Нулевые элементы заменить 1. Номера k1 и k2 вводятся с клавиатуры.

26. К четным элементам целочисленного массива прибавить данное число а, а из элементов с четными номерами вычесть данное число b.

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

28. Вставить одно и то же число, введенное с клавиатуры, перед каждым отрицательным элементом заданного целочисленного массива.

29. Дан массив четного размера. Поменять местами его половины следующим образом: первый элемент - с последним, второй - с предпоследним элементом и т.д.

Содержание отчета и его форма. Отчет по лабораторной работе должен состоять из:

1. Названия лабораторной работы.

2. Цели и содержания лабораторной работы.

3. Ответов на контрольные вопросы лабораторной работы.

4. Формулировки индивидуальных заданий и порядка их выполнения.

Отчет о выполнении лабораторной работы в письменном виде сдается преподавателю.

Вопросы для защиты работы

1. Что является указателем в языке C++?

2. Какие виды указателей существуют в языке C++?

3. Каким образом осуществляется инициализация указателя в языке C++?

4. Какие существуют способы инициализации указателя?

5. Время жизни динамических переменных.

6. С помощью какой языковой конструкции выделяется память под динамический массив в языке C++?

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

8. Что является ссылкой в языке C++?

9. Формат объявления ссылки.

10. К чему приводит операция над ссылкой?

 

Пример выполнения лабораторной работы №5:

1. Индивидуальное задание №1:

1.1. Постановка задачи:

Составить программу с использованием динамических массивов для решения задачи.

Задача: составить программу, выдающую индексы заданного элемента или сообщающую, что такого элемента в массиве нет.

1.2. UML-диаграмма:

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

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

// Индивидуальное задание №1

 

#include " stdafx.h"

#include < iostream>

#include " conio.h"

#include " math.h"

#include " windows.h"

 

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL, " Russian");

const int N = 1000;

int n, i, a;

float *C = new float[N];

bool flag = false;

 

cout< < " Лабораторная работа № 5\n";

cout< < " \nГорошко А.А., БАС-051\n";

cout< < " \nВариант № 6\n";

 

cout< < " \n\nИндивидуальное задание № 1: \n";

cout< < " \nСоставить программу с использованием динамических\n";

cout< < " \nмассивов для решения задачи.\n";

cout< < " \n\nЗадача: составить программу, выдающую индексы заданного элемента\n";

cout< < " \nили сообщающую, что такого элемента в массиве нет.\n";

cout< < " \n\nРабота программы: \n";

 

A:

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

cin > > n;

if(n < = 0 || n > N)

{

cout< < " \nНеверный размер массива! " < < " \n";

goto A;

}

cout< < " \nВведите элементы массива: \n\n";

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

 

if(false)

{

B:

cout< < " \nТакого элемента в массиве нет! " < < " \n";

}

cout< < " \nВведите элемент массива, индексы которого хотите узнать: ";

cin > > a;

 

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

{

if (C[i] == a)

{

cout< < " \nИндекс заданного элемента: ";

cout < < " [" < < i < < " ]" < < " \n";

flag = true;

}

else if((i+1) == n & & flag == false)

goto B;

}

 

delete[] C;

getch();

return 0;

}

1.4. Результаты работы программы:

2. Индивидуальное задание №2:

2.1. Постановка задачи:

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

1. максимальный по модулю элемент массива;

2. сумму элементов массива, расположенных между первым и вторым положительными элементами.

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

2.2. UML-диаграмма:

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

#include " stdafx.h"

#include < iostream>

#include < conio.h>

#include < tchar.h>

 

using namespace std;

 

int sortirovka(float array[], int numberel)

{

int j=0;

float sum=0;

cout< < endl;

/********Алгоритм быстрой сортировки*******/

float middle, temp;

int *stackl=new int [numberel], *stackr=new int [numberel];

int sp, i, left, right;

sp=1;

stackl[1]=0; stackr[1]=numberel-1;

while(sp> 0)

{

left=stackl[sp];

right=stackr[sp];

sp--;

while(left< right)

{

i=left; j=right;

middle=array[(left+right)/2];

while(i< j)

{

while(array[i]< middle) i++;

while(middle< array[j]) j--;

if (i< =j)

{

temp=array[i];

array[i]=array[j];

array[j]=temp;

i++; j--;

}

}

if (i< right)

{

sp++;

stackl[sp]=i;

stackr[sp]=right;

}

right=j;

}

}

 

cout < < " Результат быстрой сортировки: " < < endl;

for(i=0; i< numberel; i++) cout < < array[i]< < " ";

cout< < endl;

delete [] stackl;

delete [] stackr;

/*******Сумма первых неотрицательных чисел******/

sum=0;

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

{

if (array[i]> 0)

{

while (array[i]> 0 & & i< numberel)

{

sum+=array[i];

++i;

}

break;

}

}

cout< < " Сумма первых неотрицательных чисел = " < < sum< < endl;

j=0;

cout< < endl;

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

if (array[i]! =0) {array[j]=array[i]; ++j; }

for(int i=j; i< numberel; ++i)

array[i]=0;

/*********Массив с нулями в конце************/

cout< < " Массив с нулями в конце: " < < endl;

cout< < endl;

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

{

cout< < array[i]< < " \t";

}

cout< < endl;

delete [] array;

return 0;

}

 

int _tmain(int argc, _TCHAR* argv[])

{

int metod=0;

int n=13, max, j=0;

cout< < " Способ заполнения массива: " < < endl;

cout< < " \t1-Вручную\n";

cout< < " \t2-Случайное заполнение\n";

cin> > metod;

if (metod==1)

{

cout< < " Введите число элементов ";

cin> > n;

float *m=new float [n], sum;

cout< < endl;

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

{

++j;

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

cin> > m[i];

}

sortirovka(m, n);

}

if (metod==2)

{

cout< < " генерация массива" < < endl;

float *l=new float [n];

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

l[j]=rand() %13;

 

cout< < " Полученный массив" < < endl;

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

cout< < l[j]< < " \t";

cout< < endl;

sortirovka(l, n);

}

return 0;

}

2.4. Результаты работы программы:

 

 

Лабораторная работа №6.
Двумерные массивы в языке C++

Цель работы и содержание: закрепление знаний о двумерных массивах, составление программ с двумерными массивами.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.