24 декабря 2015 г.

Пользователь вводит с клавиатуры сумму в гривнах, срок вклада в месяцах и процентную ставку за год. Посчитать, сколько денег будет у пользователя.

double summ, proc;
int srok;
cout << "Enter your deposit (UAH):";
cin >> summ;
cout << "Length of deposit(month):";
cin >> srok;
cout << "Interest rate(%):";
cin >> proc;
proc = (proc/100.0) / 12 * srok;
cout << endl << proc << endl;
summ = summ*proc + summ;
cout << "Your deposit in future " << summ << endl;
system("pause");

Пользователь вводит с клавиатуры объем одного фильма в гигабайтах. Посчитать, сколько дискет понадобится для переноса фильма на другой компьютер (размер дискеты считать равным 1.44 Мбайт).

double razmer;
const double disc = 1.44;
cout << "Enter size film(Gb):";
cin >> razmer;
cout << "necessary " << (int)(razmer*1024 / disc) << " discets" << endl;
system("pause");

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

const int time = 86400;
int begin_hours, begin_min, begin_sec;
int end_hours, end_min, end_sec;
cout << "Enter h,min,sec" << endl;
cin >> begin_hours >> begin_min >> begin_sec;

double tmp = begin_hours * 3600 + begin_min * 60 + begin_sec;
tmp = time - tmp;
end_hours = tmp / 3600;
end_min = tmp / 60 - end_hours * 60;
end_sec = tmp - end_min * 60 - end_hours * 3600;
cout << "before the end of the day left " << end_hours << " h " << end_min << " min " << end_sec << " sec" << endl;
system("pause");

Пользователь вводит с клавиатуры количество студентов, сдавших экзамен, и количество «должников». Посчитать, сколько процентов составляют «должники» от общего числа студентов, а также, сколько процентов составляют студенты, сдавшие экзамен.

int sdal, nesdal;
cout << "passed the exam:";
cin >> sdal;
cout << "failed the exam:";
cin >> nesdal;
int res = sdal + nesdal;
cout << "passed the exam " << sdal * 100.0 / res << endl;
cout << "failed the exam " << nesdal * 100.0 / res << endl;
system("pause");

Пользователь вводит с клавиатуры дробное число. Округлить его до двух знаков после запятой и вывести на экран.

double digit;
cout << "Enter digit:";
cin >> digit;
digit = digit * 100 + 0.5;
digit = (int)digit;
cout << endl << (double)digit / 100 << endl;
system("pause");

Пользователь вводит с клавиатуры объем флешки в гигабайтах. Посчитать, сколько на нее поместится фильмов размером 760 Мбайт.

double razmer;
const int film = 760;
cout << "Enter size flashdisk:";
cin >> razmer;
cout << "on the flash drive fits " << (int)(razmer*1024 / film) << " movies" << endl;
system("pause");

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

double gb, bit;
cout << "Enter the size of the movie(Gb):";
cin >> gb;
cout << "Enter speed connection (Mbit/s):";
cin >> bit;
gb = gb * 1024 * 8;
gb/=bit;
int hours = gb / 3600;
int min = gb/60 - hours * 60;
int sec = gb - min * 60 - hours * 3600;
cout << hours << " h " << min << " min " << sec << " sec" << endl;
system("pause");

Зарплата менеджера составляет 100$+5% от продаж. Пользователь вводит с клавиатуры общую сумму сделок менеджера за месяц. Посчитать итоговую зарплату менеджера.

double summ;
const double proc = 0.05;
cout << "Enter summ:";
cin >> summ;
cout << "Zarplata - " << summ*proc + 100 << endl;
system("pause");

Пользователь вводит с клавиатуры стоимость одного ноутбука, их количество и процент скидки. Посчитать общую сумму заказа.

double cost, kolvo, sale;
cout << "Enter cost:";
cin >> cost;
cout << "Enter kolvo:";
cin >> kolvo;
cout << "Enter sale:";
cin >> sale;
double summ = cost*kolvo*((100-sale) / 100);
cout << "You must pay " << summ << " UAH" << endl;
system("pause");

Пользователь вводит с клавиатуры время в секундах, прошедшее с начала рабочего дня. Посчитать, сколько целых часов ему осталось сидеть на работе, если рабочий день составляет 8 часов.

const int work = 28800;
int sec;
cout << "Enter sec" << endl;
cin >> sec;
cout << "Left to work " << (work - sec) / 3600 << " hours" << endl;
system("pause")

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

double UAH, USD, EUR, RUB;
cout << "Enter UAH:";
cin >> UAH;
cout << "USD exchange rate:";
cin >> USD;
cout << "EUR exchange rate:";
cin >> EUR;
cout << "RUB exchange rate:";
cin >> RUB;
int tmp = UAH / USD;
double ost = UAH - tmp*USD;
cout << tmp << " USD and you have " << ost << " UAH"<<endl;
tmp = UAH / EUR;
ost = UAH - tmp*EUR;
cout << tmp << " EUR and you have " << ost << " UAH" << endl;
tmp = UAH / RUB;
ost = UAH - tmp*RUB;
cout << tmp << " RUB and you have " << ost << " UAH" << endl;
system("pause");

Пользователь вводит с клавиатуры время начала и время завершения телефонного разговора (часы, минуты и секунды). Посчитать стоимость разговора, если стоимость минуты составляет 30 копеек.

int begin_hours, begin_min, begin_sec;
int end_hours, end_min, end_sec;
cout << "Enter the begin time breaker h,min,sec" << endl;
cin >> begin_hours >> begin_min >> begin_sec;
cout << "Enter the end time breaker h,min,sec" << endl;
cin >> end_hours >> end_min >> end_sec;
double begin_tmp = begin_hours * 60 + begin_min + begin_sec / 60+0.5;
double end_tmp = end_hours * 60 + end_min + end_sec / 60 + 0.5;
double tmp = end_tmp - begin_tmp;
cout << "cost of call " << tmp*0.3 << " UAH" << endl;
system("pause");

Пользователь вводит с клавиатуры расстояние до аэропорта и время, за которое нужно доехать. Вычислить скорость, с которой ему нужно ехать.

int s, hours, min;
cout << "Enter distance (km):";
cin >> s;
cout << "Enter hours and min:"<<endl;
cin >> hours >> min;
cout << s / (double)(hours + min / 60.0) << "km\\h"<<endl;
system("pause");

Выполнить задачу, обратную предыдущей задаче.

int day, hours, min, sec;
cout << "Enter day, hours, min, sec:";
cin >> day >> hours >> min >> sec;
unsigned int res = sec;
res += (min * 60);
res += (hours * 3600);
res += (day * 3600 * 24);
cout << res << " sec" << endl;
system("pause");

Пользователь вводит с клавиатуры время в секундах. Перевести это значение в дни, часы, минуты и секунды. (Например: 9876 секунд – это 2 часа 44 минуты 36 секунд)

unsigned int time=86399;
////cout << "Enter time:";
////cin >> time;
//int day = time / 24 / 3600;
//int hours = time / 3600 - day*24;
//int min = time / 60 - hours * 60;
//int sec = time - min*60 - hours*3600;
//cout << day << " day " << hours << " hours " << min << " min " << sec << " sec" << endl;
//system("pause");

Пользователь вводит с клавиатуры массу в тоннах (дробное число). Вывести по отдельности количество тонн, килограмм, грамм (например, ввести 126.456789т - получить и вывести 126т 456кг 789г)

double mass;
cout << "Enter mass:";
cin >> mass;
int tonn = (int)mass;
double kg = (mass - tonn) * 1000;
int g = (kg-(int)kg)*1000+0.5;
cout << tonn << " t " << (int)kg << " kg " << g << " g" << endl;
system("pause");

Пользователь вводит с клавиатуры сумму в гривнах(дробное число). Вывести по отдельности количество гривен и количество копеек (например, ввести 45.67 гривен - получить и вывести 45 гривен 67 копеек)

double UAH;
cout << "Enter UAH:";
cin >> UAH;
cout << (int)UAH << " grn " << (int)((UAH - (int)UAH)*100+0.5) << " kop"<<endl;
system("pause");

Ввести с клавиатуры 3-значное число и удалить из него среднюю цифру (например, ввести 3, 5, 7 – получить и вывести число 37).

int digit;
cout << "Enter digit:";
cin >> digit;
int a = digit / 100 * 10 + digit % 10;
cout << endl << a<<endl;
system("pause");

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

int digit, d1, d2, d3, d4;
cout << "Enter four-digit number: ";
cin >> digit;

d4 = digit % 10;
d3 = digit % 100 / 10;
d2 = digit % 1000 / 100;
d1 = digit % 10000 / 1000;

cout << "Summ first and third: " << d1 + d3 << endl;
cout << "Product second and fourth: " << d2 * d4 << endl;
system("pause");

Ввести с клавиатуры два 3 - значных числа и поменять у них средние цифры(например, ввести 357 и 702 – получить и вывести числа 307 и 752)

int a, b;
cout << "Enter first digit:";
cin >> a;
cout << "Enter second digit:";
cin >> b;
int tmp_a = (a / 10) % 10;
int tmp_b = (b / 10) % 10;

cout << endl << "First digit "<< a % 10 + tmp_b * 10 + a / 100 * 100 <<endl;
cout << "Second digit " << b % 10 + tmp_a * 10 + b / 100 * 100 << endl;
system("pause");

Написать программу для определения диаметра окружности, которую можно получить из отрезка проволоки длиной Х (X задает пользователь).

int length;
const double pi = 3.14;
cout << "Enter line segment:";
cin >> length;
cout << "diameter " << length / pi << endl;
system("pause");

Написать программу, которая находит процент P от суммы S.

int P, S;
cout << "Enter summ:";
cin >> S;
cout << "Enter percent:";
cin >> P;
cout<<"is "<<(S / 100)*P<<endl;
system("pause");

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

int date, birthday;
cout << "Enter year date:";
cin >> date;
cout << endl << "Enter year birthday:";
cin >> birthday;
cout << "Your age " << date-birthday << endl;
system("pause");

Написать программу, которая переводит сухопутные мили в километры. Одна миля – 1.609 км.

const double mile = 1.609;
double km;
cout << "Enter mile:";
cin >> km;
cout << km*mile << " km" << endl;
system("pause");

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

const double usd = 25.54;
double uah;
cout << "Enter USD:";
cin >> uah;
cout << uah*usd << " UAH" << endl;
system("pause");

Ввести длину, ширину и высоту комнаты. Подсчитать, сколько краски уйдет на покраску стен этой комнаты, если на 1м2 стены приходится 0.5 литра краски и 20% поверхности стен занимают окна и двери.

double length, weight, height;
cout << "Enter length of room:";
cin >> length;
cout << "Enter weight of room:";
cin >> weight;
cout << "Enter height of room:";
cin >> height;
//S= 2(Sa+Sb+Sc)= 2(ab+ bc+ ac) - площадь стен
double tmp = 2*(weight*height + height*length);//площадь стен
cout << "you take " << tmp*0.8 *0.5 << " liters of paint" << endl;
system("pause");

Написать программу, которая переводит фунты в килограммы. Один фунт – 405.9 грамма задается в программе как константа.

const double funt = 405.9;
int f;
cout << "Enter funt:";
cin >> f;
cout << "You have " << f*funt / 1000 << " kg" << endl;
system("pause");

Сколько товара ценой Y можно купить на Х гривен и сколько получить сдачи?

double price, summ;
cout << "Enter price(UAH):";
cin >> price;
cout << "Enter summ(UAH):";
cin >> summ;
int tmp = summ / price;
cout << "you can buy " << tmp << " units sold" << endl;
cout << "And you have " << summ - tmp*price << " UAH" << endl;
system("pause");

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

double summ, proc;
cout << "Enter your deposit (UAH):";
cin >> summ;
cout << "Interest rate(%):";
cin >> proc;
proc = (proc / 100.0) / 12;
cout << "Per month " << summ*proc << endl;
system("pause");

Вычислить площадь поверхности и объем: a.цилиндра(радиус r, высота h).b.шара(S = 4r2, V = (4 / 3) r3).*/

int r, h;
const double pi = 3.14;
cout << "Enter radius(sm):";
cin >> r;
cout << "Enter height(sm):";
cin >> h;
cout << "Square cylinder " << 2 * pi*r*h << " sm" << endl;
cout << "Volume cylinder " << pi*r*r*h << " sm" << endl;
cout << "Square bowl " << 4 * pi*r*r << " sm" << endl;
cout << "Volume bowl " << (4 / 3.0)*pi*r*r*r << " sm" << endl;
system("pause");

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

21 июня 2015 г.

обновлённый пример с операторами new и delete

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main(){
srand(time(NULL));
int size;
int * dar;
// запрос размера массива с клавиатуры
cout << "Enter size:\n";
cin >> size;
//выделение памяти под массив с количеством элементов size
dar = new int[size];
if (!dar){
cout << "Sorry, error!!!";
exit(0);// функция организует выход из программы
}
// заполнение массива и показ на экран
for (int i = 0; i<size; i++){
dar[i] = rand() % 100;
cout << dar[i] << "\t";
}
cout << "\n\n";
// освобождение памяти
delete[]dar;
}

Операция освобождения памяти delete

Операция delete освобождает для дальнейшего использования в программе участок памяти, ранее выделенной операцией new:

delete ip; // Удаляет динамический объект типа int,
// если было ip = new int;
delete [ ] mas; // удаляет динамический массив длиной 50, если было
// double *mas = new double[50];

Совершенно безопасно применять операцию к указателю NULL.
Результат же повторного применения операции delete к одному и тому же указателю не определен.
Обычно происходит ошибка, приводящая к зацикливанию.

Чтобы избежать подобных ошибок, можно применять следующую конструкцию:

int *ip=new int[500];
. . .
if (ip){
delete ip; ip=NULL;
}
else
{
cout <<" память уже освобождена \n";
}

Операция выделения памяти new

При выделении памяти объект можно инициализировать:
int *ip = new int(3);

Можно динамически распределить память и под массив:
double *mas = new double [50];

Далее с этой динамически выделенной памятью можно работать как с обычным массивом:


#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main(){
srand(time(NULL));
int size;
int * dar;
// запрос размера массива с клавиатуры
cout << "Enter size:\n";
cin >> size;
//выделение памяти под массив с количеством элементов size
dar = new int[size];
if (!dar){
cout << "Sorry, error!!!";
exit(0);// функция организует выход из программы
}
// заполнение массива и показ на экран
for (int i = 0; i<size; i++){
dar[i] = rand() % 100;
cout << dar[i] << "\t";
}
cout << "\n\n";
}

Нахождение максимального элемента в массиве и замена его на нуль

#include <iostream>
using namespace std;
Функция определяет ссылку на элемент
массива с максимальным значением.
int &rmax(int n, int d[])
{
int im = 0;
for (int i = 1; i<n; i++)
im = d[im]>d[i] ? im : i;
return d[im];
}

void main()
{
int x[] = { 10, 20, 30, 14 };
int n = 4;
cout << "\nrmax(n,x) = " << rmax(n, x) << "\n";
rmax(n, x) = 0;
for (int i = 0; i<n; i++)
cout << "x[" << i << "]=" << x[i] << " ";
cout << "\n";
}

Ссылки в качестве результатов функций. Заполнение двумерного массива одинаковыми числами.

#include <iostream>
using namespace std;
int a[10][2];
void main()
{
int & rf(int index); //Прототип функции.
int b;
cout << "Fill array.\n";
for (int i = 0; i<10; i++)
{
cout << i + 1 << " element: ";
cin >> b;
a[i][0] = b;
rf(i) = b;
}
cout << "Show array.\n";
cout << "1-st column 2-nd column" << "\n";
for (int i = 0; i<10; i++)
cout << a[i][0] << "\t\t" << rf(i) << "\n";
}

int &rf(int index)
{
return a[index][1]; //Возврат ссылки на элемент массива.
}

Здесь объявляется глобальный двумерный массив a, состоящий из целых чисел.
В начале функции main() содержится прототип ссылочной функции rf(),
которая возвращает ссылку на целое значение второго столбца массива a,
которое однозначно идентифицируется параметром-индексом index.
Так как функция rf() возвращает ссылку на целое значение, то имя функции
может оказаться слева от оператора присваивания, что продемонстрировано в строке: rf(i) = b;

Ссылочные параметры. Передача аргументов по ссылке.

#include <iostream>
using namespace std;
//Обмен с использованием указателей.
void interchange_ptr(int *u, int *v)
{
int temp = *u;
*u = *v; *v = temp;
}
//Обмен с использованием ссылок.
void interchange_ref(int &u, int &v)
{
int temp = u;
u = v; v = temp;
}
void main()
{
int x = 5, y = 10;
cout << "Change whis pointers:\n";
cout << "x = " << x << " y = " << y << "\n";
interchange_ptr(&x, &y);
cout << "x = " << x << " y = " << y << "\n";
cout << "-----------------------------------------" << "\n";
cout << "Change whis references:\n";
cout << "x = " << x << " y = " << y << "\n";
interchange_ref(x, y);
cout << "x = " << x << " y = " << y << "\n";
}

Инициализация ссылок

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

#include <iostream>
using namespace std;
void main()
{
int ivar = 1234; //Переменной присвоено значение.
int *iptr = &ivar; //Указателю присвоен адрес ivar.
int &iref = ivar; //Ссылка ассоциирована с ivar.
int *p = &iref; //Указателю присвоен адрес iref.

cout << "ivar = " << ivar << "\n";
cout << "*iptr = " << *iptr << "\n";
cout << "iref = " << iref << "\n";
cout << "*p = " << *p << "\n";
}


Замечания.

1. В отличие от указателей, которые могут быть объявлены неинициализированными или установлены в нуль(NULL), ссылки всегда ссылаются на объект.Для ссылок ОБЯЗАТЕЛЬНА инициализация при создании и не существует аналога нулевого указателя.
2. Ссылки нельзя инициализировать в следующих случаях :
при использовании в качестве параметров функции.
при использовании в качестве типа возвращаемого значения функции.
в объявлениях классов.
3. Не существует операторов, непосредственно производящих действия над ссылками!

18 июня 2015 г.

По данному натуральному n вычислите сумму 1×2+2×3+...+(n-1)×n.

int sos(int digit);

void main()
{
setlocale(LC_ALL, "Russian");
int a, b;
do
{
cout<<"По данному натуральному n вычислите сумму произведений соседних чисел 1*2+2*3+...+(n-1)*n.\n";
cout<<"\nВведите число:";
cin>>a;
cout<<"Сумма кубов равна "<<sos(a)<<"\n";
cout<<"Если хотите продолжить, нажмите 1:";
cin>>a;
}
while(a==1);
}

int sos(int digit)
{
int res=0;
for(int i=2;i<=digit;i++)
res+=(i-1)*i;
return res;
}

Дано натуральное число n. Напечатайте все n-значные нечетные натуральные числа в порядке убывания.

int cub(int digit);

void main()
{
setlocale(LC_ALL, "Russian");
int a;
do
{
cout<<"По данному натуральном n вычислите сумму кубов 1*1*1+2*2*2+3*3*3+...+n*n*n. .\n";
cout<<"\nВведите число:";
cin>>a;
cout<<"Сумма кубов равна "<<cub(a)<<"\n";
cout<<"Если хотите продолжить, нажмите 1:";
cin>>a;
}
while(a==1);
}

int cub(int digit)
{
int res=0;
for(int i=0;i<=digit;i++)
res+=i*i*i;
return res;
}

Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.

void les(int a, int b);

void main()
{
setlocale(LC_ALL, "Russian");
int a, b;
do
{
cout<<"Даны два целых числа A и В. Выведите все числа от A до B включительно, \nв порядке возрастания, если A < B, или в порядке убывания в противном случае\n";
cout<<"\nВведите первое число:";
cin>>a;
cout<<"\nВведите второе число:";
cin>>b;
les(a,b);
cout<<"Если хотите продолжить, нажмите 1:";
cin>>a;
}
while(a==1);

}

void les(int a, int b)
{
if (a<b)
for(;a<=b;a++)
cout<<a<<" ";
else
for(;a>=b;a--)
cout<<a<<" ";
cout<<"\n";
}

17 июня 2015 г.

Даны два массива : А[n] и B[m]. Необходимо создать третий массив, в котором нужно собрать: 1) Элементы обоих массивов; 2) Общие элементы двух массивов; 3) Элементы массива A, которые не включаются в B; 4) Элементы массива B, которые не включаются в A; 5) Элементы массивов A и B, которые не являются общими для них (то есть объединение результатов двух предыдущих вариантов).

void init(int *a, int size);
void out(int *a, int size);
void out_c(int *a, int size);

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

const int size_a = 15;
int a[size_a];
int *pa;
pa = &a[0];
//^ первый массив с указателем
const int size_b = 15;
int b[size_b];
int *pb;
pb = &b[0];
//^ второй массив с указателем
const int size_c = size_a + size_b;
int c[size_c];
int *pc;
pc = &c[0];
//^ третий массив с указателем
int tmp = 0;
do
{
init(a, size_a);
out(a, size_a);
Sleep(1000);//необходимая пауза для инициализации второго массива (необходимо подключить библиотеку windows.h)
init(b, size_b);
out(b, size_b);

cout << "Эта программа создаёт третий массив, в котором собирает:\n";
cout << "1 - Элементы обоих массивов;\n";
cout << "2 - Общие элементы двух массивов;\n";
cout << "3 - Элементы массива A, которые не включаются в B;\n";
cout << "4 - Элементы массива B, которые не включаются в A;\n";
cout << "5 - Элементы массивов A и B, коотрые не являются общими для них(то есть объединение результатов двух предыдущих вариантов)\n\n";
cin >> digit;
switch (digit){
case 1:
for (pc = c, pa = a; pc < c + size_a + size_b; pc++, pa++)
*pc = *pa;
for (pc = c + size_a, pb = b; pc < c + size_a + size_b; pc++, pb++)
*pc = *pb;
cout << "\nРезультат:\n\n";
out(c, size_c);
break;
case 2:
pc = c;
for (pa = a; pa < a + size_a; pa++){
for (pb = b; pb <b + size_b; pb++){
if (*pa == *pb){
*pc = *pa;
pc++;
}
}
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
case 3:
pc = c;
tmp = 0;
for (pa = a; pa < a + size_a; pa++){
for (pb = b; pb <b + size_b; pb++){
if (*pa == *pb)
tmp++;
}
if (tmp == 0){
*pc = *pa;
pc++;
}
tmp = 0;
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
case 4:
pc = c;
tmp = 0;
for (pb = b; pb <b + size_b; pb++){
for (pa = a; pa < a + size_a; pa++){
if (*pb == *pa)
tmp++;
}
if (tmp == 0){
*pc = *pb;
pc++;
}
tmp = 0;
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
case 5:
pc = c;
tmp = 0;
for (pa = a; pa < a + size_a; pa++){
for (pb = b; pb <b + size_b; pb++){
if (*pa == *pb)
tmp++;
}
if (tmp == 0){
*pc = *pa;
pc++;
}
tmp = 0;
}
for (pb = b; pb <b + size_b; pb++){
for (pa = a; pa < a + size_a; pa++){
if (*pb == *pa)
tmp++;
}
if (tmp == 0){
*pc = *pb;
pc++;
}
tmp = 0;
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
}
cout << "\nЕсли хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}

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

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

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

Даны два массива, упорядоченных по возрастанию: А[n] и B[m]. Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию

void sort(int *a, int size);
void init(int *a, int size);
void out(int *a, int size);


void main()
{
setlocale(LC_ALL, "Russian");
int digit;
const int size_a = 15;
int a[size_a];
int *pa;
pa = &a[0];
//^ первый массив с указателем
const int size_b = 15;
int b[size_b];
int *pb;
pb = &b[0];
//^ второй массив с указателем
const int size_c = size_a + size_b;
int c[size_c];
int *pc;
pc = &c[0];
//^ третий массив с указателем
do
{
cout << "Эта программа формирует упорядоченный массив из двух массивов\n";
cout << "\nИнициализация первого массива:";
init(a, size_a);
out(a, size_a);
Sleep(1000);//необходимая пауза для инициализации второго массива (необходимо подключить библиотеку windows.h)
cout << "\nИнициализация второго массива:";
init(b, size_b);
out(b, size_b);
sort(a, size_a);
sort(b, size_b);
cout << "\nРезультат:\n\n";
cout << "Отсортированный первый массив:";
out(a, size_a);
cout << "\nОтсортированный второй массив:";
out(b, size_b);
//заполнение третьего массива значениями первого и второго массивов
for (pc=c, pa=a; pc < c+size_a+size_b; pc++, pa++)
{
*pc = *pa;
}
for (pc = c+size_a, pb = b; pc < c + size_a + size_b; pc++, pb++)
{
*pc = *pb;
}
sort(c, size_c);
cout << "\nОтсортированный объединённый массив:";
out(c, size_c);
cout << "\nЕсли хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}


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


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


void sort(int *a, int size)
{
int x, i, j;
for (i = 0; i<size; i++)
{
for (j = size - 1; j > i; j--)
{
if (*(a+j - 1) > *(a+j))
{
x = *(a + j - 1);
*(a + j - 1) = *(a + j);
*(a + j) = x;
}
}
}
}

Дан массив целых чисел. Воспользовавшись указателями, поменяйте местами элементы массива с четными и нечетными индексами(т.е.те элементы массива, которые стоят на четных местах, поменяйте с элементами, которые стоят на нечетных местах)

void zamena(int *a, int size);
void init(int *a, int size);
void out(int *a, int size);


void main()
{
setlocale(LC_ALL, "Russian");
int digit;
const int size = 15;
int b[size];
int *A;//инициализация указателя
A = &b[0];//присваивание приводит к тому, что A указывает на нулевой элемент массива b. Это означает, что A содержит адрес элемента b[0].
do
{
cout << "Эта программа меняет местами элементы массива с четными и нечетными индексами\n";
init(A, size);
out(A, size);
zamena(A, size);
out(A, size);
cout << "Если хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}


void zamena(int *a, int size)
{
for (int i = 0; i < size; a++, i++)
{
if (i % 2 != 0)
{
int tmp = *a;
*a = *(a - 1);
*(a - 1) = tmp;
}
}
}


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


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

21 мая 2015 г.

"Ханойские" башни.

/*
Легенда гласит, что где-то в Ханое находится храм, в котором размещена следующая конструкция:
на основании укреплены 3 алмазных стержня, на один из которых при сотворении мира Брахма
нанизал 64 золотых диска с отверстием посередине, причем внизу оказался самый большой диск,
на нем – чуть меньший и так далее, пока на верхушке пирамиды не оказался самый маленький диск.
Жрецы храма обязаны перекладывать диски по следующим правилам:

1. За один ход можно перенести только один диск.

2. Нельзя класть больший диск на меньший.

Руководствуясь этими нехитрыми правилами, жрецы должны перенести исходную пирамиду с 1-го стержня на 3-й.
Как только они справятся с этим заданием, наступит конец света.

Мы предлагаем Вам решить данную задачу с помощью рекурсии.
*/

//Решение взято с vk.com.

void hanoi_towers(int quantity, int from, int to, int buf_peg)
//quantity-число колец, from-начальное положение колец(1-3),to-конечное положение колец(1-3)
{
//buf_peg - промежуточный колышек(1-3)
if (quantity != 0)
{
hanoi_towers(quantity-1, from, buf_peg, to);

cout << from << " -> " << to << "\n";
hanoi_towers(quantity-1, buf_peg, to, from);
}
}

void main()
{
setlocale(LC_ALL, "Russian");
int start_peg, destination_peg, buffer_peg, plate_quantity;
cout << "\nНомер первого столбика:";
cin >> start_peg;
cout << "\nНомер конечного столбика:";
cin >> destination_peg;
cout << "\nНомер промежуточного столбика:";
cin >> buffer_peg;
cout << "\nКоличество дисков:";
cin >> plate_quantity;
cout<<"\n";

hanoi_towers(plate_quantity, start_peg, destination_peg, buffer_peg);
}

Написать функцию, которая находит максимальное значение в массиве, используя рекурсию

int max(int A[], int size)
{
if(size==1) return A[0];
else
{
int tmp=max(A,size-1);
return tmp>A[size-2]?tmp:A[size-2];
}
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 20+1;
}

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

void main()
{
setlocale(LC_ALL, "Russian");
int digit;
const int size=15;
int A[size];

do
{
cout<<"Эта программа находит максимальное значение в массиве, используя рекурсию\n";
init(A,size);
out(A,size);
cout<<"\nМаксимальное значение - "<<max(A,size)<<"\n";
cout<<"Если хотите продолжить, нажмите 1:";
cin>>digit;
}while(digit==1);
}

Пример на рекурсию

long int Fact(long int N)
{
// если произведена попытка вычислить факториал нуля
// или единицы - вернуть 1,
// именно здесь произведется выход из рекурсии
if (N == 1 || N == 0) return 1;
// любое другое число вызывает функцию заново с формулой N-1
else return N * Fact(N-1);
}

void main()
{
long number=5;
//первый вызов рекурсивной функции
long result=Fact(number);
cout<<"Result "<<number<<"! is - "<<result<<"\n";
}

Двоичный поиск

int BinarySearch (int A[], int Lb, int Ub, int Key)
{
int M;
while(1)
{
M = (Lb + Ub)/2;
if (Key < A[M])
Ub = M - 1;
else
if (Key > A[M])
Lb = M + 1;
else
return M;

if (Lb > Ub)
return -1;
}
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];
int key,ind;

// до сортировки
for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
cout<<"Enter any digit:";
cin>>key;
ind=BinarySearch(ar,0,SIZE,key);
cout<<"Index - "<<ind<<"\t";
cout<<"\n\n";
}

Написать функцию, которая упорядочит в массиве сначала чётные значения, а потом нечётные

void init(int A[], int size);
void out(int A[], int size);
void sort(int A[], int size);

void main()
{
setlocale(LC_ALL, "Russian");
const int s = 20;
int A[s];
int a;
do
{
cout << "Эта программа сортирует массив по возрастанию сначала чётные значения, а потом нечётные.\n";
init(A, s);
out(A, s);
sort(A, s);
cout << "\nРезультат:\n";
out(A, s);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 100;
}

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

void sort(int A[], int size)
{
int x, i, j;
for (i = 0; i < size; i++)
{
for (j = size - 1; j > i; j--)
{
if (A[j-1]%2 != 0 && A[j]%2==0)
{
x = A[j - 1];
A[j - 1] = A[j];
A[j] = x;
}
if (A[j - 1] > A[j] && A[j] % 2 == 0 && A[j - 1] % 2 == 0)
{
x = A[j - 1];
A[j - 1] = A[j];
A[j] = x;
}
if (A[j - 1] > A[j] && A[j] % 2 && A[j - 1] % 2)
{
x = A[j - 1];
A[j - 1] = A[j];
A[j] = x;
}
}
}
}

"Угадай число". Компьютер загадывает число от 0 до 10000. А пользователь должен его угадать, получая подсказки "больше" или "меньше"

void main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
int tmp;
do
{
int digit = rand() % 10000;
cout << "Игра ""Угадай число"". Компьютер загадал число от 0 до 10000 - отгадайте его!)\n";
int a=0;
for (;;)
{
cin >> tmp;
if (digit > tmp)
cout << "Моё число больше!)\n";
else if (digit < tmp)
cout << "Моё число меньше!)\n";
else if (digit == tmp)
{
cout << "Вы угадали!) Моё число - " << digit << "\n";
cout << "Вы использовали " << a << " попыток\n" ;
break;
}
a++;
}
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> tmp;
} while (tmp == 1);
}

Написать функцию, которая сортирует двумерный массив

void init(int A[][10], int weight, int length);
void out(int A[][10], int weight, int length);
void sort(int A[][10], int weight, int length);

void main()
{
setlocale(LC_ALL, "Russian");
const int length = 10;
const int weight = 15;
int A[weight][length];
int a;
do
{
cout << "Эта программа сортирует двумерный массив.\n";
init(A, weight, length);
out(A, weight, length);
sort(A, weight, length);
cout << "\nРезультат:\n";
out(A, weight, length);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[][10], int weight, int length)
{
srand(time(NULL));
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
A[i][j] = rand() % 100;
}
}
}

void out(int A[][10], int weight, int length)
{
cout << "\n";
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}

void sort(int A[][10], int weight, int length)
{
int x, i, j, k;
for (k = 0; k < weight*length; k++)
{
for (i = 0; i < weight; i++)
{
for (j = 0; j < length; j++)
{
if (A[i][j-1] > A[i][j])
{
x = A[i][j-1];
A[i][j-1] = A[i][j];
A[i][j] = x;
}
}
}
}
}

Написать функцию, которая сортирует в двумерном массиве каждую строку по отдельности

void init(int A[][10], int weight, int length);
void out(int A[][10], int weight, int length);
void sort(int A[][10], int weight, int length);

void main()
{
setlocale(LC_ALL, "Russian");
const int length = 10;
const int weight = 15;
int A[weight][length];
int a;
do
{
cout << "Эта программа сортирует в двумерном массиве каждую строку по отдельности.\n";
init(A, weight, length);
out(A, weight, length);
sort(A, weight, length);
cout << "\nРезультат:\n";
out(A, weight, length);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[][10], int weight, int length)
{
srand(time(NULL));
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
A[i][j] = rand() % 100;
}
}
}

void out(int A[][10], int weight, int length)
{
cout << "\n";
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}

void sort(int A[][10], int weight, int length)
{
int x, i, j, k;
for (k = 0; k < weight; k++)
{
for (i = 0; i < length; i++)
{
for (j = length - 1; j > i; j--)
{
if (A[k][j - 1] > A[k][j])
{
x = A[k][j - 1];
A[k][j - 1] = A[k][j];
A[k][j] = x;
}
}
}
}
}

Написать функцию, которая сортирует в двумерном массиве каждый столбец по отдельности

void init(int A[][10], int weight, int length);
void out(int A[][10], int weight, int length);
void sort(int A[][10], int weight, int length);

void main()
{
setlocale(LC_ALL, "Russian");
const int length = 10;
const int weight = 15;
int A[weight][length];
int a;
do
{
cout << "Эта программа сортирует в двумерном массиве каждый столбец по отдельности.\n";
init(A, weight, length);
out(A, weight, length);
sort(A, weight, length);
cout << "\nРезультат:\n";
out(A, weight, length);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[][10], int weight, int length)
{
srand(time(NULL));
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
A[i][j] = rand() % 100;
}
}
}

void out(int A[][10], int weight, int length)
{
cout << "\n";
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}

void sort(int A[][10], int weight, int length)
{
int x, i, j, k;
for (k = 0; k < length; k++)
{
for (i = 0; i < weight; i++)
{
for (j = weight - 1; j > i; j--)
{
if (A[j - 1][k] > A[j][k])
{
x = A[j - 1][k];
A[j - 1][k] = A[j][k];
A[j][k] = x;
}
}
}
}
}

Быстрая сортировка

template <typename T>
void quickSortR(T a[], int B, int E)
{
long i = B, j = E;
T temp, p;
p = a[(B+E)/2];
do
{
while ( a[i] < p ) i++;
while ( a[j] > p ) j--;
if (i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}while ( i<=j );
if(B<j)quickSortR(a, B, j);
if(i<E)quickSortR(a, i, E);
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];
// до сортировки
for(int i=0;i<SIZE;i++){
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
quickSortR(ar,0,SIZE-1);
// после сортировки
for(int i=0;i<SIZE;i++){
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне.

int summ(int a, int b)
{
return (a==b)?b:a + summ(a+1,b);
}

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

12 мая 2015 г.

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

void init(int A[], int size);
void out(int A[], int size);
void random(int A[], int size);
int search(int A[], int size, int digit);
void sort(int A[], int size, int key);

void main()
{
setlocale(LC_ALL, "Russian");
const int s = 20;
int A[s];
int a, digit,tmp;

do
{
init(A, s);
out(A, s);
cout << "\nЭта программа принимает массив из 20 целых чисел со значениями от 1 до 20:\n";
cout << "1 - разбрасывает элементы массива произвольным образом.\n";
cout << "2 - Пользователь вводит случайное число из того же диапазона, программа находит позицию этого числа в массиве\n";
cout << " и сортирует элементы массива, находящиеся слева от найденной позиции по убыванию, а элементы массива,\n";
cout << " находящиеся справа от найденной позиции по возрастанию\n";
cout << "Введите ваш выбор: ";
cin >> a;
switch (a)
{
case 1:
random(A, s);
out(A, s);
case 2:
cout << "Введите число из диапазона от 1 до 20:";
cin>>digit;
tmp = search(A, s, digit);
if (tmp != -1)
{
cout << "Число " << digit << " есть в массиве под номером " << tmp << "\n";
sort(A, s, tmp);
out(A, s);
}
else
cout << "Число " << digit << " отсутствует в массиве\n";
}
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 20+1;
}

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

void random(int A[], int size)
{
int x, i, j;

for (i = 0; i<size; i++)
{
x = A[i];
for (j = i - 1; j >= 0 && A[j] != x && A[j]!=A[i]; j--)
A[j + 1] = A[j];
A[j + 1] = x;
}
}

int search(int A[], int size, int digit)
{
for (int i = 0; i<size; i++)
if (A[i] == digit)
return i;
return -1;
}

void sort(int A[], int size, int key)
{
int x, i, j;
for (i = 0; i<key; i++)
{
x = A[i];
for (j = i - 1; j >= 0 && A[j]<x; j--)
A[j + 1] = A[j];
A[j + 1] = x;
}
for (i = key+1; i<size; i++)
{
x = A[i];
for (j = i - 1; j >= key+1 && A[j]>x; j--)
A[j + 1] = A[j];
A[j + 1] = x;
}
}

Дан массив чисел размерностью 10 элементов. Написать функцию, которая сортирует массив по возрастанию или по убыванию, в зависимости от третьего параметра функции. Если он равен 1, сортировка идет по убыванию, если 0, то по возрастанию. Первые 2 параметра функции - это массив и его размер, третий параметр по умолчанию равен 1.

void init(int A[], int size);
void out(int A[], int size);
void sort(int A[],int size,int uk);

void main()
{
setlocale(LC_ALL, "Russian");
const int s=10;
int A[s];
int a;
do
{
cout << "Эта программа сортирует массив по возрастанию или по убыванию.\n";
init(A, s);
out(A, s);
cout<<"1 - по убыванию\n0 - по возрастанию\n";
cin>>a;
if(a!=0)
sort(A,s,1);
else
sort(A,s,a);
cout<<"\nРезультат:\n";
out(A, s);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 100;
}

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

void sort(int A[],int size,int uk=1)
{
int x, i, j;
if(uk==0)
{
for(i=0;i<size;i++)
{
x=A[i];
for (j=i-1;j>=0&&A[j]>x;j--)
A[j+1]=A[j];
A[j+1] = x;
}
}
else if(uk==1)
{
for(i=0;i<size;i++)
{
x=A[i];
for (j=i-1;j>=0&&A[j]<x;j--)
A[j+1]=A[j];
A[j+1] = x;
}
}
}

Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти позиции крайних отрицательных элементов (самого левого отрицательного элемента и самого правого отрицательного элемента) и отсортировать элементы, находящиеся между ними.

void init(int A[], int size);
void out(int A[], int size);
void sort(int A[],int size);

void main()
{
setlocale(LC_ALL, "Russian");
const int s=20;
int A[s];
int a;
do
{
cout << "Эта программа сортирует массив между позициями крайних отрицательных элементов.\n";
init(A, s);
out(A, s);
sort(A, s);
out(A, s);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 40-20;
}

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

void sort(int A[],int size)
{
int x, i, j, tmp_i, tmp_j;
for(int a=0;a<size;a++)//находим индекс первого отрицательного элемента
{
if(A[a]<0)
{
tmp_i=a;
break;
}
}
for(int a=size-1;a>tmp_i;a--)//находим последнего отрицательного элемента
{
if(A[a]<0)
{
tmp_j=a;
break;
}
}
for(i=tmp_i;i<=tmp_j;i++)//сама сортировка
{
x=A[i];
for (j=i-1;j>=tmp_i&&A[j]>x;j--)
A[j+1]=A[j];
A[j+1] = x;
}
}

9 мая 2015 г.

"Пузырьковая" cортировка

template <class T>
void bubbleSort(T a[], long size)
{
long i, j;
T x;
for(i=0;i<size;i++)
{
for(j=size-1;j>i;j--)
{
if(a[j-1]>a[j]){
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
}
}
}
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];

// до сортировки
for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
bubbleSort(ar,SIZE);

// после сортировки
for(int i=0;i<SIZE;i++)
{
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

Линейный поиск

int ls (int array[], int size, int key){
for(int i=0;i<size;i++)
if(array[i] == key)
return i;
return -1;
}

void main()
{
setlocale(LC_ALL, "Russian");
const int arraySize=100;
int a[arraySize], searchKey, element;
for(int x=0;x<arraySize;x++)
a[x]=2*x;
cout<<"Введите число: ";
cin>>searchKey;
element=ls(a, arraySize, searchKey);
if(element!=-1)
cout<<"\nВведённое число находится в ячейке"<<element<<'\n';
else
cout<<"\nНе найдено";
}

Сортировка вставками

template <class T>
void insertSort(T a[], long size)
{
T x;
long i, j;

for(i=0;i<size;i++)
{
x=a[i];
for (j=i-1;j>=0&&a[j]>x;j--)
a[j+1]=a[j];
a[j+1] = x;
}
}

void main()
{
srand(time(NULL));
const long size=10;
int ar[size];
for(int i=0;i<size;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
insertSort(ar,size);

for(int i=0;i<size;i++)
{
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

Оптимизированная сортировка вставками

template <class T>
void setMin(T a[],long size)
{
T min=a[0];
for(int i=1;i<size;i++)
if(a[i]<min)
min=a[i];
a[0]=min;
}

template <class T>
void insertSortGuarded(T a[], long size)
{
T x;
long i, j;
T backup = a[0];
setMin(a,size); 

for(i=1;i<size;i++){
x = a[i];
for (j=i-1;a[j]>x;j--)
a[j+1]=a[j];
a[j+1] = x;
}

for(j=1;j<size&&a[j]<backup;j++)
a[j-1]=a[j];
a[j-1] = backup;
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];
for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
insertSortGuarded(ar,SIZE);

for(int i=0;i<SIZE;i++)
{
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

Оптимизированная "Пузырьковая" cортировка или "шейкер-сортировка"

template <class T>
void shakerSort(T a[], long size)
{
long j, k=size-1;
long lb=1, ub=size-1;
T x;

do
{
for(j=ub;j>0;j--)
{
if(a[j-1]>a[j])
{
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
}
}
lb = k+1;
for(j=1;j<=ub;j++)
{
if(a[j-1]>a[j])
{
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
}
}
ub=k-1;
}while (lb<ub);
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];

for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
shakerSort(ar,SIZE);

for(int i=0;i<SIZE;i++)
{
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

Сортировка выбором

template <class T>
void selectSort(T a[], long size)
{
long i, j, k;
T x;
for(i=0;i<size;i++) {
k=i;
x=a[i];
for(j=i+1;j<size;j++) {
if(a[j]<x){
k=j;
x=a[j];
}
}
a[k]=a[i];
a[i]=x;
}
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];
// до сортировки
for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
selectSort(ar,SIZE);
// после сортировки
for(int i=0;i<SIZE;i++)
{
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

6 мая 2015 г.

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

double des(double digit, int znak);

void main()
{
setlocale(LC_ALL, "Russian");
double digit;
do
{
cout << "Эта программа округляет указанное вещественное число с заданной точностью.\n";
cout << "Пожалуйста, введите число: ";
cin >> digit;
cout << "\nВведите количество знаков после десятичной точки, которые должны остаться: ";
int znak;
cin >> znak;
cout << "Ваше новое число - " << des(digit, znak) << "\n\n";
cout << "Если хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}

double des(double digit, int znak)
{
int tmp = digit;//отделяем целую часть
digit -= tmp;//отделяем дробную часть
int tmp_znak = znak;
while (tmp_znak!=0)
{
digit *= 10;
tmp_znak--;
}
double drob = (int)digit;
while (znak!=0)
{
drob /= 10;
znak--;
}
return (double)tmp + drob;
}

Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений.

int lin(int a, int b);
double lin(double a, double b);
void kv(double a, double b, double c);

void main()
{
setlocale(LC_ALL, "Russian");
int tmp;
do
{
double a, b, c;
//int a, b, c;
cout << "Эта программа находит корни линейного (a*x + b = 0)\nи квадратного (a*x2 + b*x + c = 0) уравнений.\n";
cout << "Какое уравнение решаем:\n1 - линейное\n2-квадратное\n";
cin>>tmp;
switch (tmp)
{
case 1:
cout << "Введите коэффициент a - ";
cin >> a;
cout << "Введите коэффициент b - ";
cin >> b;
cout << "Ответ: x=" << lin(a, b)<<"\n";
break;
case 2:
cout << "Введите коэффициент a - ";
cin >> a;
cout << "Введите коэффициент b - ";
cin >> b;
cout << "Введите коэффициент c - ";
cin >> c;
kv(a, b, c);
break;
}
cout << "Если хотите продолжить, нажмите 1:";
cin >> tmp;
} while (tmp == 1);
}

int lin(int a, int b)
{
double res;
res = (-b) / a;
return res;
}

double lin(double a, double b)
{
double res;
res = (-b) / a;
return res;
}

void kv(double a, double b, double c)
{
double x1, x2, d;
d = (b*b) - (4 * a * c);
if (d > 0)
{
x1 = ((-b) + sqrt(d)) / (2 * a);
x2 = ((-b) - sqrt(d)) / (2 * a);
cout << "Ответ: x1=" << x1 << "\n";
cout << "Ответ: x2=" << x2 << "\n";
}
else if (d < 0)
{
cout << "Нет корней\n";
}
else if (d == 0)
{
x1 = ((-b) + sqrt(d)) / (2 * a);
cout << "Ответ: x1=" << x1 << "\n";
}
}

Написать шаблон функции для поиска среднего арифметического значений массива.

template <typename tip> void init(tip A[], int size);
template <typename tip> void out(tip A[], int size);
template <typename tip> double sr(tip A[], int size);

void main()
{
setlocale(LC_ALL, "Russian");
int a;
do
{
cout << "Эта программа находит среднее арифметическое в массиве.\n";
const int size = 10;
int arr[size];
init(arr, size);
out(arr, size);
cout << "Среднее арифметическое массива равно " << sr(arr, size) << "\n";
cout << "Если хотите продолжить, нажмите 1:";
cin >> a;
} while (a == 1);
}

template <typename tip> void init(tip A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
{
A[i] = rand() % 10000 / (100 * 1.0);
}
}

template <typename tip> void out(tip A[], int size)
{
cout << "\n";
for (int i = 0; i < size; i++)
{
cout << A[i] << " ";
}
cout << "\n";
}

template <typename tip> double sr(tip A[], int size)
{
double res = 0;
for (int i = 0; i < size; i++)
{
res += A[i];
}
res /= size;
return res;
}

24 апреля 2015 г.

Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером. Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.

void bros(int kubik);
int res();

void main()
{
char brosok;
do
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));

cout <<"Привет! Сыграем в кубики? Правила очень простые: ";
cout <<"\nПобеждает тот, у кого сумма по итогам пяти бросков больше!";
cout <<"\nПоехали...\n\n";


int total_chel=0;
int total_komp=0;

do
{
cout <<"Разыграем очередность бросков? Нажми * для броска\n";
cin >> brosok;
}
while (brosok!='*');

int res_chel, res_komp;
do
{
res_chel=res();
cout <<"Ваш результат: "<<res_chel<<"\n";
res_komp=res();
cout <<"\nМой результат: "<<res_komp<<"\n";
}
while (res_chel==res_komp);

if (res_chel>res_komp)
{
cout <<"\nВы начинаете первым :(\n";
for (int i=1; i<=5; i++)
{
do
{
cout <<"Нажми * для броска\n";
cin >> brosok;
}
while (brosok!='*');
cout<<"Вы:\n";
total_chel+=res();
cout<<"Я:\n";
total_komp+=res();
cout<<"Следующий ход:\n";
}
cout <<"Ваш общий результат (сумма очков за 5 бросков): "<<total_chel<<"\n";
cout <<"\nМой общий результат (сумма очков за 5 бросков): "<<total_komp<<"\n";
}
else
{
cout <<"\nЯ начинаю первым :)\n";
for (int i=1; i<=5; i++)
{
cout<<"Я:\n";
total_komp+=res();
do
{
cout <<"Нажми * для броска\n";
cin >> brosok;
}
while (brosok!='*');
cout<<"Вы:\n";
total_chel+=res();
cout<<"Следующий ход:\n";
}
cout <<"Ваш общий результат (сумма очков за 5 бросков): "<<total_chel<<"\n";
cout <<"\nМой общий результат (сумма очков за 5 бросков): "<<total_komp<<"\n";
}

if (total_chel==total_komp)
{
cout <<"\n\nНИЧЬЯ!\n\n";
}
else
{
if (total_chel>total_komp)
{
cout <<"\n\nВы выиграли!\n\n";
}
if(total_chel<total_komp)
{
cout <<"\n\nЯ выиграл! Я же всё-таки умнее тебя\n\n";
}
}
cout<<"\nЕсли хотите продолжить, нажмите *: ";
cin>>brosok;
}
while(brosok=='*');
}

void bros(int kubik)
{
switch (kubik)
{
case 1:
cout <<"***********\n";
cout <<"*                  *\n";
cout <<"*                  *\n";
cout <<"*        *        *\n";
cout <<"*                  *\n";
cout <<"*                  *\n";
cout <<"***********\n";
break;
case 2:
cout <<"***********\n";
cout <<"*                  *\n";
cout <<"*        *        *\n";
cout <<"*                  *\n";
cout <<"*        *        *\n";
cout <<"*                  *\n";
cout <<"***********\n";
break;
case 3:
cout <<"***********\n";
cout <<"*                  *\n";
cout <<"*    *            *\n";
cout <<"*        *        *\n";
cout <<"*            *    *\n";
cout <<"*                  *\n";
cout <<"***********\n";
break;
case 4:
cout <<"***********\n";
cout <<"*                  *\n";
cout <<"*    *      *    *\n";
cout <<"*                  *\n";
cout <<"*    *      *    *\n";
cout <<"*                  *\n";
cout <<"***********\n";
break;
case 5:
cout <<"***********\n";
cout <<"*                  *\n";
cout <<"*    *      *    *\n";
cout <<"*        *        *\n";
cout <<"*    *      *    *\n";
cout <<"*                  *\n";
cout <<"***********\n";
break;
case 6:
cout <<"***********\n";
cout <<"*                  *\n";
cout <<"*    *      *    *\n";
cout <<"*    *      *    *\n";
cout <<"*    *      *    *\n";
cout <<"*                  *\n";
cout <<"***********\n";
break;
}
}
int res()
{
int kubik_1=rand()%6+1;
bros(kubik_1);
int kubik_2=rand()%6+1;
bros(kubik_2);
int rezult;
rezult=kubik_1+kubik_2;
cout <<"Результат: "<<rezult<<"\n\n";
return rezult;
}

Написать функцию, которая получает в качестве аргументов целое положительное число и систему счисления, в которую это число должно переводится (системы счисления от 2 до 36). Например, при переводе числа 27 в систему счисления 16 должно получиться 1B; 13 в 5-ю - 23; 35 в 18-ю - 1H

void sys(int digit,int syst)
{
int i=0,A[50];
for(;digit>0;i++)
{
A[i]=digit%syst;
digit/=syst;
}
for(int j=i-1;j>=0;j--)
{
if(A[j]<10)
cout<<A[j];
else
cout<<char(A[j]-10+'A');
}
}

void main()
{
setlocale(LC_ALL, "Russian");
int digit;
do
{
cout<<"Эта программа переводит число в любую систему счисления.\nПожалуйста введите число: ";
cin>>digit;
cout<<"\nВведите систему счисления: ";
int syst;
cin>>syst;
sys(digit,syst);
cout<<"\nЕсли хотите продолжить, нажмите 1: ";
cin>>digit;
}
while (digit==1);
}

23 апреля 2015 г.

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

double fact(int a)
{
int res = 1;
for (int i = 1; i <= a; i++)
{
res *= i;
}
return res;
}

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

int z;
do
{
cout << "Эта программа считает факториал числа.\nПожалуйста введите число: ";
cin >> z;
cout << "\nФакториал числа " <<z<<" равен "<< fact(z) << "\n";
cout << "Если хотите продолжить, нажмите 1\n";
cin >> z;
} while (z == 1);
}

Написать функцию, которая рисует прямоугольник из *, ширина и высота передаются в параметрах функции

void rect(int a,int b);

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

int length,width;
do
{
cout << "Эта программа выводит на экран прямоугольник.\nПожалуйста введите длину прямоугольника: ";
cin >> length;
cout << "\nПожалуйста введите ширину прямоугольника: ";
cin >> width;
rect(length, width);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> length;
} while (length == 1);
}

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

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

void init(int A[], int size);
void out(int A[], int size);
int max(int A[], int size);

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

const int s=20;
int arr[s];
int a;
do
{
cout << "Эта программа принимает массив чисел, и выводит его максимальное значение.\n";
init(arr, s);
out(arr, s);
cout<<"\nМаксимальное значение в массиве - "<<max(arr, s);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
{
A[i] = rand() % 100;
}
}

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

int max(int A[], int size)
{
int max = A[0];
for (int i = 1; i < size; i++)
{
if (max < A[i])
{
max = A[i];
}
}
return max;
}

Написать функцию, которая принимает число, и возвращает истину, если число простое или ложь - если число сложное

bool prost(int a);

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

int digit;
do
{
cout << "Эта программа проверяет число - простое оно или сложное.\nПожалуйста введите число: ";
cin >> digit;
if (prost(digit) == 1)
cout << "\nЧисло простое\n";
else
cout << "\nЧисло сложное\n";
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> digit;
} while (digit == 1);
}

bool prost(int a)
{
for (int i = 2; i <= a; i++)
{
if (a%i == 0)
{
if (a != i)
{
return false;
}
return true;
}
}
}

Написать функцию, которая выводит все простые числа от 1 до 1000

void prost(int a);

void main()
{
int a = 1000;
prost(a);
}

void prost(int a)
{
for (int i = 1; i <= a; i++)
{
for (int j = 2; j <= a; j++)
{
if (i%j == 0)
{
if (i != j)
break;
cout << i << "\n";
break;
}
}
}
}