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";
}