Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

poi_labs

.pdf
Скачиваний:
15
Добавлен:
14.02.2015
Размер:
786.93 Кб
Скачать

s1=0;

for (j=0; j<4; j++) s1=s1+a[0][j];

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

Варианты

1)Дана действительная матрица размера 3х4. Определить, сколько раз встречается число 5 во второй строке данной матрицы.

2)Дана целочисленная матрица размера 5x3. Найти произведение элементов последней строки данной матрицы.

3)Дана целочисленная матрица размера 4х4. Определить, сколько раз встречается число 7 в первом столбце данной матрицы.

4)Задана действительная квадратная матрица размера 4х4. Найти сумму элементов главной диагонали данной матрицы.

5)Задана действительная квадратная матрица размера 4х4. Определить,

сколько раз встречается число 0 среди элементов главной диагонали данной матрицы.

6)Задана действительная квадратная матрица размера 4х4. Найти наибольший элемент главной диагонали данной матрицы.

7)Известно количество сделанных столов тремя фабриками за два квартала.

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

8)Известна заработная плата, полученная 5 сотрудниками отдела в течение года. Определить максимальную заработную плату.

9)Известна заработная плата, полученная 10 сотрудниками отдела в течение года. Определить среднемесячную зарплату по отделу.

10)Известны результаты сдачи трех экзаменов десятью студентами. Найти средний балл каждого студента и общий средний балл.

41

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

12)Известны результаты сдачи двух экзаменов десятью студентами.

Определить количество студентов, сдавших экзамены без троек.

13)Дана действительная матрица размера 3x4. Найти сумму элементов последнего столбца данной матрицы.

14)Дана целочисленная матрица размера 4x3. Найти произведение элементов первого столбца данной матрицы.

15)Дана действительная матрица размера 3x4. Найти минимальное значение в первой строке данной матрицы.

16)Задана целочисленная квадратная матрица размера 3х3. Найти наименьший элемент главной диагонали данной матрицы.

17)Дана целочисленная матрица размера 4x4. Найти минимальное значение во втором столбце данной матрицы.

18)Дана действительная матрица размера 4x3. Найти максимальное значение в третьей строке данной матрицы.

19)

Дана и действительная матрица размера 3x5. Найти сумму элементов

второй строки данной матрицы.

20)

Дана целочисленная матрица размера 3x5. Найти максимальное

значение в четвертом столбце данной матрицы.

5 Составьте и отладьте программу решения следующей задачи:

Задан целочисленный массив А размерности 5х7. Переставьте местами первую и последнюю строку данного массива.

Для перестановки местами первой и последней (в данном случае пятой)

строки используйте цикл следующего вида:

for (i=0; i<7; i++){ c=a[0][i];

42

a[0][i]=a[4][i];

a[4][i]=c;

}

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

преобразований массив.

6 Выполните задание на перестановку или замену элементов массива в

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

Варианты

1)Дана целочисленная матрица размера 5x6. Поменять местами 1 и 2

столбцы.

2)Дана целочисленная матрица размера 4x6. Переставить местами 1 и 2

строку матрицы.

3)Дана целочисленная матрица размера 4x5. Переставить местами 3 и 4

столбец.

4)Дана целочисленная матрица размера 5x6. Поменять местами первый и последний из столбцов.

5)Дана целочисленная матрица размера 5x7. Переставить местами 1 и 5

строку.

6)Дана целочисленная матрица размера 5x6. Заменить в данной матрице все элементы второй строки числом 10.

7)Дана целочисленная матрица размера 5x7. Переставить местами 1 и 4

столбец.

8)Дана целочисленная матрица размера 6x6. Заменить в данной матрице все положительные элементы первого столбца числом 1.

9)Дана целочисленная матрица размера 4x5. Переставить местами 1 и 3

строку.

10)Дана целочисленная матрица размера 5x7. Заменить в данной матрице все элементы второй строки числом 10.

11)В целочисленной матрице чисел размером 4х6 поменять местами 2 и 4

столбцы.

43

12)Дана целочисленная матрица размера 5x5. Переставить местами 4 и 5

строку.

13)Дана целочисленная матрица размера 5x7. Заменить в данной матрице все элементы второго столбца числом 100.

14)Дана целочисленная матрица размера 4x6. Переставить местами 5 и 6

столбец.

15)Дана целочисленная матрица размера 5x6. Заменить в данной матрице все элементы первой строки числом 7.

16)Дана целочисленная матрица размера 5x7. Переставить местами 2 и 3

строку.

17)Дана целочисленная матрица размера 7x3. Заменить в данной матрице все элементы второго столбца числом 5.

18)Дана целочисленная матрица размера 5x4. Переставить местами 2 и 3

столбец.

19)Дана целочисленная матрица размера 4x6. Заменить в данной матрице все положительные элементы первой строки числом -3.

20)Дана целочисленная матрица размера 5x5. Переставить местами 2 и 4

строку.

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

1.Поясните понятия многомерного массива. Как он описывается?

2.Как убрать из программы явное описание размерности массива?

3.Создан массив указателей на целые числа. Какой элемент будет хранить адрес числа 7?

int * mas [4]; *(mas +1) = 7

4.Какие стандартные алгоритмы по работе с массивами Вы знаете?

44

Лабораторная работа № 6

Работа с функциями

Цель работы

Изучить работу с функциями в языке С++.

Задачи занятия:

Изучить синтаксис определения функций в языка С++;

Изучить понятие формальных и фактических параметров в языка С++;

Изучить синтаксис объявление и вызова функций в языка С++;

Проработать примеры программ с использованием функций;

Разработать алгоритмы с использованием функций по индивидуальному варианту;

Написать и отладить программы, реализующие разработанные алгоритмы;

Составить и защитить отчет.

Задания

1 Составьте и отладьте программу решения следующей задачи: Даны отрезки а, b, с. Если из этой тройки отрезков можно построить треугольник,

то вычислить его площадь, в противном случае вывести на печать сообщение

"нельзя построить треугольник".

Решение.

#include <iostream.h> #include <conio.h> #include <math.h>

double rast(double x, double y, double z); int main()

{

double a, b, c;

/* длины 3-х отрезков */

double S;

/* площадь */

 

45

cout<<"\nВведите длины 3-х отрезков"; cin >> a;

cin >> b; cin >> c;

//контроль ввода

if ((a>0) && (b>0) && (c>0) && (a+b>c) && (a+c>b) && (b+c>a))

{

S=rast(a,b,c); //вызов процедуры cout<<"\nПлощадь S = "<<S; //вывод результата

}

else cout<<"\nНельзя построить треугольник”; getch();

return 0;

}

/*функция нахождения площади треугольника по формуле Герона*/ double rast(double x, double y, double z)

{

double p, ss; p=(x+y+z)/2;

ss=sqrt(p*(p – x)*(p – y)*(p – z)); return ss;

}

2 Выполнить задания на функции в соответствии с указанным

преподавателем вариантом.

Варианты

1)Описать функцию PowerA3(A, B), вычисляющую третью степень числа A и

возвращающую ее в переменной B (A — входной, B — выходной параметр; оба параметра являются вещественными). С помощью этой функции найти третьи степени пяти данных чисел.

2)Описать функцию PowerA234(A, B, C, D), вычисляющую вторую, третью и четвертую степень числа A и возвращающую эти степени соответственно в переменных B, C и D (A — входной, B, C, D —

выходные параметры; все параметры являются вещественными). С

помощью этой функции найти вторую, третью и четвертую степень пяти

данных чисел.

46

3)Описать функцию Mean(X, Y, AMean, GMean), вычисляющую среднее арифметическое AMean = (X + Y)/2 и среднее геометрическое GMean =

X * Y двух положительных чисел X и Y (X и Y — входные, AMean и

GMean — выходные параметры вещественного типа). С помощью этой функции найти среднее арифметическое и среднее геометрическое для пар

(A, B), (A, C), (A, D), если даны A, B, C, D.

4)Описать функцию TrianglePS(a, P, S), вычисляющую по стороне a

равностороннего треугольника его периметр и площадь (a — входной, P и

S — выходные параметры; все параметры являются вещественными). С

помощью этой функции найти периметры и площади трех равносторонних треугольников с данными сторонами.

5)Описать функцию RectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и

площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин

(x1, y1, x2, y2 — входные, P и S — выходные параметры вещественного типа). С помощью этой функции найти периметры и площади трех прямоугольников с данными противоположными вершинами.

6)Описать функцию DigitCountSum(K, C, S), находящую количество C цифр целого положительного числа K, а также их сумму S (K — входной, C и S

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

7)Описать функцию InvertDigits(K), меняющую порядок следования цифр целого положительного числа K на обратный (K — параметр целого типа,

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

8)Описать функцию AddRightDigit(D, K), добавляющую к целому положительному числу K справа цифру D (D — входной параметр целого

типа, лежащий в диапазоне 0–9, K — параметр целого типа, являющийся

47

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

9)Описать функцию AddLeftDigit(D, K), добавляющую к целому положительному числу K слева цифру D (D — входной параметр целого типа, лежащий в диапазоне 1–9, K — параметр целого типа, являющийся одновременно входным и выходным). С помощью этой функции последовательно добавить к данному числу K слева данные цифры D1 и D2, выводя результат каждого добавления.

10)Описать функцию Swap(X, Y), меняющую содержимое переменных X

иY (X и Y — вещественные параметры, являющиеся одновременно входными и выходными). С ее помощью для данных переменных A, B, C, D последовательно поменять содержимое следующих пар: A и B, C и D, B

иC и вывести новые значения A, B, C, D.

11)Описать функцию Minmax(X, Y), записывающую в переменную X

минимальное из значений X и Y, а в переменную Y — максимальное из этих значений (X и Y — вещественные параметры, являющиеся одновременно входными и выходными). Используя четыре вызова этой функции, найти минимальное и максимальное из данных чисел A, B,C, D.

12) Описать функцию SortInc3(A, B, C), меняющую содержимое переменных A, B, C таким образом, чтобы их значения оказались упорядоченными по возрастанию (A, B, C — вещественные параметры,

являющиеся одновременно входными и выходными). С помощью этой функции упорядочить по возрастанию два данных набора из трех чисел: (A1, B1, C1) и (A2,B2, C2).

13) Описать функцию SortDec3(A, B, C), меняющую содержимое переменных A, B, C таким образом, чтобы их значения оказались упорядоченными по убыванию (A, B, C — вещественные параметры,

являющиеся одновременно входными и выходными). С помощью этой

48

функции упорядочить по убыванию два данных набора из трех чисел: (A1, B1, C1) и (A2,B2, C2).

14) Описать функцию ShiftRight3(A, B, C), выполняющую правый циклический сдвиг: значение A переходит в B, значение B — в C,

значение C — в A (A, B, C — вещественные параметры, являющиеся одновременно входными и выходными). С помощью этой функции выполнить правый циклический сдвиг для двух данных наборов из трех чисел: (A1, B1, C1) и (A2,B2, C2).

15) Описать функцию ShiftLeft3(A, B, C), выполняющую левый циклический сдвиг: значение A переходит в C, значение C — в B,

значение B — в A (A, B, C — вещественные параметры, являющиеся одновременно входными и выходными). С помощью этой функции выполнить левый циклический сдвиг для двух данных наборов из трех чисел: (A1, B1, C1) и (A2,B2, C2).

16) Описать функцию NOD2(A, B) целого типа, находящую наибольший общий делитель (НОД) двух целых положительных чисел A и B,

используя алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если B ≠ 0;

НОД(A, 0) = A. С помощью этой функции найти наибольшие общие делители пар (A, B), (A, C), (A, D), если даны числа A, B, C, D.

17) Описать процедуру TimeToHMS(T, H, M, S), определяющую по времени T (в секундах) содержащееся в нем количество часов H, минут M

и секунд S (T — входной, H, M и S — выходные параметры целого типа).

Используя эту процедуру, найти количество часов, минут и секунд для пяти данных отрезков времени T1, T2, …, T5.

18)Описать функцию IsLeapYear(Y) логического типа, которая возвращает

True, если год Y (целое положительное число) является високосным, и False в противном случае. Вывести значение функции IsLeapYear для пяти данных значений параметра Y. Високосным считается год, делящийся на

4, за исключением тех годов, которые делятся на 100 и не делятся на 400.

49

19)Описать функцию Leng(xA, yA, xB, yB) вещественного типа,

находящую длину отрезка AB на плоскости по координатам его концов

(xA, yA, xB, yB — вещественные параметры). С помощью этой функции найти периметр треугольника, если даны координаты вершин A, B, C.

20) Описать функцию Power1(A, B) вещественного типа, находящую величину AB по формуле AB = exp(B·ln(A)) (параметры A и B —

вещественные). В случае нулевого или отрицательного параметра A

функция возвращает 0. С помощью этой функции найти степени AP, BP, CP, если даны числа P, A, B, C.

 

Cnk

n!

 

 

 

3 Составить программу вычисления числа сочетаний

k! n k ! , используя

 

предложенную ниже рекурсивную функцию вычисления факториала числа.

Функция, вычисляющая факториал, будет иметь следующий вид:

long fakt(int n)

{

return ( (n==1) ? 1 : n*fakt(n-1) );

}

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

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

используемые только внутри функции, должны быть описаны как локальные.

Варианты

1)Даны квадратная матрица n-го порядка. Найти норму матрицы. Нормой матрицы считать максимум из абсолютных величин ее элементов.

50

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