Лабораторная работа № 7.




 

Вариант 3
1. Написать программу, вычисляющую сопротивление электрической цепи, состоящей из двух последовательно соединенных резисторов, а также падения напряжения на каждом из них (сила тока известна). Расчет должен производиться в функции, которая получает данные по указателю и возвращает результат по указателю.
2. Написать программу, определяющую минимальный элемент в одномерном массиве и увеличивающую его в два раза. При вводе/выводе элементов использовать индексы, а обработку элементов массива осуществлять с помощью указателей. Расчет должен производиться в функции, в которую массив передается по указателю
3. Написать программу, выполняющую поворот неквадратной матрицы на 90° по часовой стрелке. Матрицы должны храниться в памяти в виде двумерного динамического массива, размерности исходной матрицы вводятся пользователем с клавиатуры. Предусмотреть генерацию значений матрицы как случайных целых чисел в диапазоне от -20 до 20.
4. Написать программу для сортировки одномерного массива вещественных чисел по возрастанию методом простых вставок. Размерность массива, а также границы диапазона изменения элементов N и M вводятся пользователем с клавиатуры, а сам массив заполняется случайными числами из указанного пользователем диапазона. Сортировку массива и генерацию массива оформить в виде отдельных функций.

 

Листинг:

#include <iostream>

using namespace std;

 

int main()

{

double r1;

cout << "R1= "; cin >> r1;

double r2;

cout << "R2= "; cin >> r2;

 

double *pr1 = &r1;

double *pr2 = &r2;

 

cout << "R= " << *pr1 + *pr2 << endl;

 

double u1;

double u2;

double i = 1.5;

 

u1 = *pr1 * i;

u2 = *pr2 * i;

u1 -= 1;

u2 -= 1;

 

cout << "padenie U" << endl;

 

*pr1 = u1 / i;

*pr2 = u2 / i;

cout << "R= " << *pr1 + *pr2 << endl;

}

Результат выполнения:

 

 

Листинг:

#include <iostream>

#include <ctime>

using namespace std;

 

void max_min(int* m, int& min, int& n)

{

min = 0;

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

{

if (m[i] < m[min]) min = i;

}

 

m[min] *= 2;

}

 

int* generate(int n)

{

int* mas = new int[n];

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

{

mas[i] = rand() % 100;

cout << mas[i] << " ";

}

return mas;

}

 

int main()

{

srand(time(NULL));

cout << "Enter count of elements: ";

int n;

cin >> n;

int* mas = generate(n);

int min;

max_min(mas, min, n);

cout << "\nMin index is " << min << endl;

for (int i{}; i < n; ++i)

cout << mas[i] << " ";

delete[] mas;

system("pause>>null");

}

Результат выполнения:

 

 

Листинг:

#include <iostream>

#include <cstdlib>

#include <ctime>

 

using namespace std;

 

int rand(int min, int max)

{

return rand() % (max - min + 1) + min;

}

 

int main()

{

// Для рандома

srand(unsigned(time(0)));

const int rand_min = -20;

const int rand_max = 20;

 

// Запрашиваем размер матрицы

int rows;

int columns;

 

cout << "Matrix rows: "; cin >> rows;

cout << "Matrix columns: "; cin >> columns;

 

// Заполняем

printf("Original matrix [%dx%d]:\n", rows, columns);

int** matrix_rows = new int* [rows];

 

for (int r = 0; r < rows; r++) {

int* matrix_columns = new int[columns];

 

for (int c = 0; c < columns; c++) {

matrix_columns[c] = rand(rand_min, rand_max);

printf("%d\t", matrix_columns[c]);

}

 

matrix_rows[r] = matrix_columns;

printf("\n");

}

 

// Поворачиваем на 90

int rows90 = columns;

int columns90 = rows;

 

printf("\nRotated matrix [%dx%d]:\n", rows90, columns90);

int** matrix90_rows = new int* [columns];

 

for (int r = 0; r < rows90; r++) {

int* matrix90_columns = new int[columns90];

 

for (int c = 0; c < columns90; c++) {

matrix90_columns[c] = matrix_rows[c][r];

printf("%d\t", matrix90_columns[c]);

}

 

matrix90_rows[r] = matrix90_columns;

printf("\n");

}

 

 

return 0;

}

 

Результат выполнения:

 

 

 

 

Листинг:

#include <iostream>

#include <ctime>

using namespace std;

 

int* random_arr(int* arr, int m, int n, int& size) {

srand(time(NULL));

for (int i = 0; i < size; i++) {

arr[i] = rand() % n + m;

}

return arr;

}

 

int* sort(int* arr, int size) {

int temp, // временная переменная для хранения значения элемента сортируемого массива

item; // индекс предыдущего элемента

for (int counter = 1; counter < size; counter++)

{

temp = arr[counter]; // инициализируем временную переменную текущим значением элемента массива

item = counter - 1; // запоминаем индекс предыдущего элемента массива

while (item >= 0 && arr[item] > temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего

{

arr[item + 1] = arr[item]; // перестановка элементов массива

arr[item] = temp;

item--;

}

}

return arr;

}

 

void print(int* arr, int size) {

for (int i = 0; i < size; i++) {

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

}

cout << endl;

}

 

int main() {

setlocale(LC_ALL, "Rus");

int size, m, n;

cout << "Введите размер массива и диапазон значений M и N" << endl;

while (true) {

cin >> size >> m >> n;

if (cin.fail()) {

cout << "Error: Введены неверные данные!" << endl;

cout << "Введите размер массива и диапазон значений M и N" << endl;

cin.clear();

while (cin.get()!= '\n');

}

else break;

}

int* arr = new int[size];

arr = random_arr(arr, m, n, size);

print(arr, size);

print(sort(arr, size), size);

return 0;

}

Результат выполнения:

 

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-07-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: