22 сентября 2015 г.

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

void init(int **a, int line, int column);
void out(int **a, int line, int column);
int max(int **a, int line, int column);
int min(int **a, int line, int column);

void main()
{
setlocale(LC_ALL, "rus");

int size_l, size_c;
do
{
cout << "Введите количество строк:";
cin >> size_l;
cout << "Введите количество столбцов:";
cin >> size_c;
//инициализация двумерного массива
int **mas = new int*[size_l];
for (int i = 0; i < size_l; i++)
mas[i] = new int[size_c];

init(mas, size_l, size_c);//вызов функции заполнения массива
out(mas, size_l, size_c);//вызов функции вывода массива на экран

cout << "Максимальное число в массиве: " << max(mas, size_l, size_c) << "\n";
cout << "Минимальное число в массиве: " << min(mas, size_l, size_c) << "\n";

//удаление двумерного массива
for (int i = 0; i < size_l; i++)
delete[]mas[i];
delete[] mas;
cout << "\nЕсли хотите продолжить, нажмите 1:";
cin >> size_l;
cout << "\n";
} while (size_l==1);
}

void init(int **a, int line, int column)
{
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
a[i][j] = rand() % 30 + 30;
}
}
}

void out(int **a, int line, int column)
{
cout << "\n";
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
cout<<a[i][j]<<" ";
}
cout << "\n";
}
cout << "\n";
}

int max(int **a, int line, int column)
{
int d = a[0][0];
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
if (d < a[i][j])
d = a[i][j];
}
}
return d;
}

int min(int **a, int line, int column)
{
int d = a[0][0];
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
if (d > a[i][j])
d = a[i][j];
}
}
return d;
}

Произвести, используя указатель на указатель проверку на нуль при делении.

void del(double *x, double *y, double *res);

void main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите число, которое будем делить: ";
double a, b, res;
cin >> a;
cout << "\n";

cout << "Введите число, на которое будем делить: ";
cin >> b;
cout << "\n";

del(&a, &b, &res);

if (b == 0){
return;
}
cout << "Результат - " << res << "\n";
}

void del(double *x, double *y, double *res){
if (*y == 0)
cout << "Нельзя делить на нуль. Повторите попытку!" << "\n";
else
*res = *x / *y;
}

Найти заданную степень числа, пользуясь только указателями.

void st(long int *digit, int *stepen, long int *res)
{
for (int i = *stepen; i > 1; i--)
{
*res *= *digit;
}
}

void main()
{
setlocale(LC_ALL, "Russian");
long int a, res;
int stepen;
do{
cout << "Эта программа считает степень числа с помощью указателей\n";
cout << "Введите число:";
cin >> a;
cout << "Введите степень:";
cin >> stepen;
res = a;
st(&a, &stepen, &res);
cout << "\n" << stepen << " степень числа " << a << " равна " << res << "\n\n";
cout << "Если хотите продолжить, нажмите 1:";
cin >> a;
} while (a == 1);
}

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

void summ(int *x, int *y, int *tmp);

void main()
{
setlocale(LC_ALL, "Russian");
int a, b, res;
do{
cout << "Эта программа считает сумму двух чисел и записивает в третье\n";
cout << "\nВведите первое число:";
cin >> a;
cout << "\nВведите второе число:";
cin >> b;
summ(&a, &b, &res);
cout << "\nСумма равна " << res << ".\n";
cout << "Если хотите продолжить, нажмите 1:";
cin >> a;
} while (a == 1);
}

void summ(int *x, int *y, int *tmp)
{
*tmp= *x + *y;
}

Написать примитивный калькулятор, пользуясь только указателями.

void summ(int *x, int *y, int *tmp);
void razn(int *x, int *y, int *tmp);
void proizv(int *x, int *y, int *tmp);
void delen(int *x, int *y, int *tmp);

void main()
{
setlocale(LC_ALL, "Russian");
int a, b, res;
char dei;
do{
cout << "Этот примитивный калькулятор использует только указатели\n";
cout << "\nВозможно использовать только + - * / \n";
cin >> a >> dei >> b;
cout << "=\n";
switch (dei){
case '+':
summ(&a, &b, &res);
cout << res << "\n";
break;
case '-':
razn(&a, &b, &res);
cout << res << "\n";
break;
case '*':
proizv(&a, &b, &res);
cout << res << "\n";
break;
case '/':
delen(&a, &b, &res);
cout << res << "\n";
break;
default:
cout << "Error!";
}
cout << "Если хотите продолжить, нажмите 1:";
cin >> a;
} while (a == 1);
}

void summ(int *x, int *y, int *tmp)
{
*tmp = *x + *y;
}

void razn(int *x, int *y, int *tmp)
{
*tmp = *x - *y;
}

void proizv(int *x, int *y, int *tmp)
{
*tmp = *x * *y;
}

void delen(int *x, int *y, int *tmp)
{
*tmp = *x / *y;
}

Найти факториал числа, пользуясь только указателями.

void fact(long int *digit, long int *res)
{
for (int i = 1; i <= *digit; i++)
{
*res *= i;
}
}

void main()
{
setlocale(LC_ALL, "Russian");
long int a, res=1;
do{
cout << "Эта программа считает факториал с помощью указателей\n";
cout << "\nВведите число:";
cin >> a;
fact(&a, &res);
cout << "Факториал " << a << " равен " << res << "\n";
cout << "Если хотите продолжить, нажмите 1:";
cin >> a;
} while (a == 1);
}

21 сентября 2015 г.

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



void init(int A[], int size);
void out(int A[], int size);
void sdvig(int A[], int size, int kol, int napr);

void main()
{
setlocale(LC_ALL, "Russian");

int size, kol, napr;

cout << "Введите размер массива: ";
cin >> size;
int* mass = new int [size];
init(mass, size);
out(mass, size);
cout << "Функция, которая циклически сдвигает одномерный массив вправо или влево на указанное число позиций";
cout << "\nВведите количество позиций: ";
cin >> kol;
do
{
cout << "\nВведите направление: 1 - влево, 2 - вправо\n";
cin >> napr;
} while (napr != 1 && napr != 2);
sdvig(mass, size, kol, napr);
out(mass, size);
delete[] mass;
}

void sdvig(int A[], int size, int kol, int napr)
{
if (napr == 1)
{
for (int i = 0; i <kol; i++)
{
int tmp = A[0];
for (int j = 1; j <size; j++)
{
A[j - 1] = A[j];
}
A[size - 1] = tmp;
}
}
if (napr == 2)
{
for (int i = 0; i < kol; i++)
{
int tmp = A[size-1];
for (int j = size-1; j > 0; j--)
{
A[j] = A[j-1];
}
A[0] = tmp;
}
}
}

void init(int *a, int size)
{
srand(time(NULL));
for (int i = 0; i < size; a++, i++)
*a = rand() % 99 + 1;
}

void out(int *a, int size)
{
cout << "\n";
for (int i = 0; i < size; a++, i++)
cout << *a << " ";
cout << "\n";
}

17 сентября 2015 г.

Заполнить массив из 50 - ти элементов нечётными числами от 1 до 99.

void main()
{
setlocale(LC_ALL, "rus");
const int size = 50;
int a[size];

srand(time(NULL));
for (int i = 0; i < size;)
{
a[i] = rand() % 99 + 1;
if (a[i] % 2 != 0)
i++;
}

cout << "Массив:\n";
for (int i = 0; i < size; i++)
cout << a[i] << " ";
cout << "\n\n";
}

Объявить три массива. Первые два заполнить случайными значениями от 10 до 30. В элементы третьего массива записать сумму соответствующих элементов первых двух массивов. (в нулевую ячейку третьего – сумму нулевых ячеек первого и второго массивов и так далее). Затем найти среднее арифметическое элементов третьего массива, максимальное значение и минимальное значение, которые он хранит.

void main()
{
setlocale(LC_ALL, "rus");
const int size = 15;
int a[size], b[size], c[size];

srand(time(NULL));
for (int i = 0; i < size; i++)
a[i] = rand() % 20 + 10;
for (int i = 0; i < size; i++)
b[i] = rand() % 20 + 10;

cout << "Массив a:\n";
for (int i = 0; i < size; i++)
cout << a[i] << " ";
cout << "\n\nМассив b:\n";
for (int i = 0; i < size; i++)
cout << b[i] << " ";

for (int i = 0; i < size; i++)
c[i] = a[i] + b[i];

int sr = 0, min = c[0], max = c[0];

for (int i = 0; i < size; i++)
{
sr += c[i];
if (min > c[i])
min = c[i];
if (max < c[i])
max = c[i];
}
sr /= size;

cout << "\n\nМассив c:\n";
for (int i = 0; i < size; i++)
cout << c[i] << " ";
cout << "\n\n";
cout << "Среднее арифметическое: " << sr << "\n";
cout << "Минимальное значение: " << min << "\n";
cout << "Максимальное значение: " << max << "\n";
}

Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После заполнения перезаписать все числа, которые больше десяти: от хранимого значение отнять 10.

void main()
{
setlocale(LC_ALL, "rus");
const int size = 10;
int a[size];

srand(time(NULL));
for (int i = 0; i < 10; i++)
{
a[i] = rand() % 7 + 7;
}

cout << "Начальный массив:\n";
for (int i = 0; i < size; i++)
cout << a[i] << " ";
cout << "\n\n";

for (int i = 0; i < size; i++)
if (a[i]>10)
a[i] -= 10;

cout << "Финальный массив:\n";
for (int i = 0; i < size; i++)
cout << a[i] << " ";
cout << "\n";
}

Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое. Подсказка: необходимо объявить переменную-счетчик, которая будет считать количество введенных чисел, и переменную, которая будет накапливать общую сумму чисел.

void main()
{
setlocale(LC_ALL, "rus");

int digit, tmp=0, res=0;
do
{
cout << "Введите число: ";
cin >> digit;
cout << "\n";
tmp++;
res += digit;
} while (digit != 0);
cout << "\nВведено " << tmp << " чисел";
cout << "\nСумма введённых чисел равна " << res << "\n";
}

Запрограммировать следующее выражение: (а + b — f / а) + f * a * a — (a + b) Числа а, b, f вводятся с клавиатуры. Организовать пользовательский интерфейс, таким образом, чтобы было понятно, в каком порядке должны вводиться числа.

void main()
{
setlocale(LC_ALL, "Russian");

int a, b, f;
cout << "Введите число a - ";
cin >> a;
cout << "\nВведите число b - ";
cin >> b;
cout << "\nВведите число f - ";
cin >> f;
cout << "\nВычисляется выражение (а + b — f / а) + f * a * a — (a + b)\n";
cout << "Ответ: " << ((a + b - f / a) + f * a * a - (a + b)) << "\n";
}

Найти алгебраическую сумму для выражения : 1^k + 2^k + 3^k + … + N^k. N и степень k вводит пользователь.

void main()
{
setlocale(LC_ALL, "Russian");

int digit, k, res = 0, stepen = 1;
cout << "Введите число N - ";
cin >> digit;
cout << "\nВведите степень k - ";
cin >> k;
cout << "\nВычисляется выражение 1^k + 2^k + 3^k + … + N^k\n";

for (int i = 1; i <= digit; i++)
{
for (int j = 0; j < k; j++)
{
stepen *= i;
}
res += stepen;
stepen = 1;
}
cout << "Ответ: " << res << "\n";
}