Вариант 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;
}
Результат выполнения: