Рекомендация: прочитайте задачу! Выполните ее и сравните полученный результат с картинкой CMD
Если вы полностью уверены что не можете осилить эту задачу, советую вам просмотреть код и полностью в нем разобраться! Протестировать все в отладчике!
Написать функцию, которая получает в качестве ар- гументов целое положительное число и систему счис- ления, в которую это число должно переводится (си- стемы счисления от 2 до 36). Например, при переводе числа 27 в систему счисления 16 должно получиться 1B; 13 в 5-ю — 23; 35 в 18-ю — 1H.
#include <iostream>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
void CalculationSystem(long long int PozitiveValue, long long int CalculationValue) {
const int size = 255;
int ArrayResult[255] = { 0 };
int count = 0;
if (CalculationValue <= 36 && CalculationValue >= 2 && PozitiveValue <= 9223372036854775807 && PozitiveValue > 0) {
while (PozitiveValue > 0) { //Calculation of the number system
ArrayResult[count] = PozitiveValue % CalculationValue;
PozitiveValue /= CalculationValue;
count++;
}
for (int i = count - 1; i >= 0; i--) { //Outputting data in reverse order
if (ArrayResult[i] < 10) cout << ArrayResult[i];
else cout << char(ArrayResult[i] - 10 + 'a'); // Conversion
}
cout << endl;
cout << "Values = " << count << endl;
}
else { cout << "MAX 36 || MIN 2 && MAX Value = 9223372036854775807 && MIN Value = 0" << endl; }
}
int main() {
COLOR_CMD
CalculationSystem(255, 2);
STOP_CMD
return 0;
}
Игра «кубики». Условие: имеется два игральных кубика
со значениями от 1 до 6. Игра происходит с компью-
тером, кубики бросаются поочередно. Побеждает тот,
у кого сумма выпавших очков по итогам пяти бро-
сков больше. Предусмотрите возможность получения
первого хода человеком или компьютером. Кубики
отображаются с помощью символов. В конце игры
необходимо выводить среднюю сумму по броскам для
обоих участников.
#include <iostream>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
const int str = 5, col = 5; //const STRING COLUMN
char ArrCube[str][col] = { 0 }; // cube
float averageM = 0, averageC = 0; //AVERAGE PC AND USER
int RandValueUser = 0, RandValueComputer = 0, Throw1 = 0, Throw2 = 0, gameOver = 0;
char symbolUser = 0; // CHECK
void cubes(int RandomValue, char arr[][5], int str, int col) { //CUBES
for (int i = 0; i < str; i++) { // CUBE
for (int j = 0; j < col; j++) {
if (i == 0 || i == str - 1 || j == 0 || j == col - 1) {
arr[i][j] = '#';
}
else
{
arr[i][j] = ' ';
}
}
}
switch (RandomValue)
{
case 1: {
arr[str / 2][col / 2] = 'O';
break;
}
case 2: {
arr[str / 2 - 1][col / 2 - 1] = 'O';
arr[str / 2 + 1][col / 2 + 1] = 'O';
break;
}
case 3: {
arr[str / 2 - 1][col / 2 - 1] = 'O';
arr[str / 2][col / 2] = 'O';
arr[str / 2 + 1][col / 2 + 1] = 'O';
break;
}
case 4: {
arr[1][1] = 'O';
arr[1][col - 2] = 'O';
arr[str - 2][1] = 'O';
arr[str - 2][col - 2] = 'O';
break;
}
case 5: {
arr[1][1] = 'O';
arr[1][str - 2] = 'O';
arr[str / 2][col / 2] = 'O';
arr[str - 2][1] = 'O';
arr[str - 2][col - 2] = 'O';
break;
}
case 6: {
arr[1][1] = 'O';
arr[1][2] = 'O';
arr[1][col - 2] = 'O';
arr[str - 2][1] = 'O';
arr[str - 2][2] = 'O';
arr[str - 2][col - 2] = 'O';
break;
}
default:
cout << "Erorr";
break;
}
}
int ManThrow1() { // MAN
cout << "Throw the first cube (Enter 1): " << endl;
cin >> Throw1;
if (Throw1 == 1) {
RandValueUser = rand() % 6 + 1;
averageM += RandValueUser;
return RandValueUser;
}
else
{
cout << "Enter 1" << endl;
}
}
int ManThrow2() { // MAN
cout << "Throw the second cube (Enter 2): " << endl;
cin >> Throw2;
if (Throw2 == 2) {
RandValueUser = rand() % 6 + 1;
averageM += RandValueUser;
return RandValueUser;
}
else
{
cout << "Enter 2" << endl;
}
}
int Computer() { //COMPUTER
cout << "Computer run: " << endl;
RandValueUser = rand() % 6 + 1;
averageC += RandValueUser;
return RandValueUser;
}
void menu() { // MENU
cout << "*******************************************\n";
cout << "* The game of cubes *\n";
cout << "*******************************************\n";
cout << "**| The computer goes first | (Enter C) |**\n";
cout << "**| The man walks first | (Enter M) |**\n";
cout << "*******************************************\n" << endl;
cout << "***rules of the game***\nThe game is throwing dice! 2 dice for every move of 5 moves!\n" << endl;
cout << endl;
cin >> symbolUser;
cout << endl;
}
void display(char arr[][5], int str, int col) { // Display Cubes
for (int i = 0; i < str; i++) {
for (int j = 0; j < col; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
void StartGame() {
menu();
while (gameOver < 5) // gameOver (counter Five)
{
if (symbolUser == 'C') { // Computer one
cubes(Computer(), ArrCube, str, col);
display(ArrCube, str, col);
cubes(Computer(), ArrCube, str, col);
display(ArrCube, str, col);
cubes(ManThrow1(), ArrCube, str, col);
display(ArrCube, str, col);
cubes(ManThrow2(), ArrCube, str, col);
display(ArrCube, str, col);
}
if (symbolUser == 'M') { //User one
cubes(ManThrow1(), ArrCube, str, col);
display(ArrCube, str, col);
cubes(ManThrow2(), ArrCube, str, col);
display(ArrCube, str, col);
cubes(Computer(), ArrCube, str, col);
display(ArrCube, str, col);
cubes(Computer(), ArrCube, str, col);
display(ArrCube, str, col);
}
gameOver++; //counter
}
cout << "Average points MAN = " << averageM / 10 << " " << "Number of points = " << averageM << endl;
cout << "Average points Computer = " << averageC / 10 << " " << "Number of points = " << averageC << endl;
}
int main() {
COLOR_CMD
StartGame();
STOP_CMD
return 0;
}
Написать шаблон функции для поиска среднего ариф-
метического значений массива.
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
template <typename T1, typename T2> T1 average(T1 arr[], T2 size) {
double AverageArr = 0;
for (int i = 0; i < size; i++) {
AverageArr += arr[i];
}
return AverageArr / size;
}
int main() {
COLOR_CMD
srand(time(NULL));
/*Average*/
const int sizeArr = 10;
double Arr[sizeArr] = { 0 };
for (int i = 0; i < sizeArr; i++) {
Arr[i] = rand() % 10;
}
for (int i = 0; i < sizeArr; i++) {
cout << Arr[i];
}
cout << endl;
cout << average(Arr, sizeArr);
cout << endl;
STOP_CMD
return 0;
}
Написать перегруженные шаблоны функций для на-
хождения корней линейного (a*x + b = 0) и квадратного
(a*x2+b*x + c = 0) уравнений. Замечание: в функции
передаются коэффициенты уравнений.
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
template <typename T1, typename T2> T1 linear(T1 b, T2 a) {
if (b < 0 && a < 0) { return b / a; }
if (b > 0 && a > 0 && b < a) { return double((-a) / b); }
if (b > 0 && a > 0 && b > a) { return double((-b) / a); }
else { return (-b) / a; }
}
template <typename T1, typename T2, typename T3> T1 quadratic(T1 a, T2 b, T3 c) {
double D = (b * b) - (a * c * 4); //discriminant
double ResultX1 = 0, ResultX2 = 0;
if (D == 0) {
ResultX1 = ((-b) + sqrt(D)) / (2 * a); // x1
cout << "X1 = " << ResultX1 << endl; // display
cout << "Discriminant = 0 " << endl;
}
if (D > 0) {
ResultX1 = ((-b) + sqrt(D)) / (2 * a); // x1
cout << "X2 = " << ResultX1 << endl; // display
ResultX2 = ((-b) - sqrt(D)) / (2 * a); // x2
cout << "X1 = " << ResultX2 << endl; // display
}
if (D < 0) { cout << "Discriminant < 0" << endl; return -1; } // discriminant = -discriminant
}
int main() {
COLOR_CMD
srand(time(NULL));
/*Equations*/
linear(10, 20);
quadratic(1, 20, 30);
STOP_CMD
return 0;
}
Написать функцию, которая принимает в качестве
параметров вещественное число и количество знаков
после десятичной точки, которые должны остаться.
Задачей функции является округление вышеуказан-
ного вещественного числа с заданной точностью
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
double RoundingNumber(double number, int precision) {
int storage = number; // storage = integer
number -= storage;
int counter = precision; // two while
while (precision > 0) { number *= 10; precision--; } // one counter precision = 0
double value = int(number);
while (counter > 0) { value /= 10; counter--; } // two counter counter = 0
return double(storage + value); //Conversion double
}
int main() {
COLOR_CMD
srand(time(NULL));
/*RoundingNumber */
cout << RoundingNumber(9.527456, 3) << endl;
STOP_CMD
return 0;
}
Дан массив чисел размерностью 10 элементов. Написать
функцию, которая сортирует массив по возрастанию
или по убыванию, в зависимости от третьего пара-
метра функции. Если он равен 1, сортировка идет по
убыванию, если 0, то по возрастанию. Первые 2 па-
раметра функции — это массив и его размер, третий
параметр по умолчанию равен 1.
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
void InsertSortInversion(int arr[], int size, int inversion) { //FUNC SORT
if (inversion == 0) { // From Less to Greater
int i, j, tmp;
for (i = 0; i < size; i++) {
tmp = arr[i]; //Temporary variable
for (j = i - 1; j >= 0 && arr[j] > tmp; j--) { // InsertSort
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}
if (inversion == 1) { // From Greater to less
int i, j, tmp;
for (i = 0; i < size; i++) {
tmp = arr[i];
for (j = i - 1; j >= 0 && arr[j] < tmp; j--) { // InsertSort
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}
}
int main() {
COLOR_CMD
srand(time(NULL));
const int SIZE = 10;
int arr[SIZE];
for (int i = 0; i < SIZE; i++) {
arr[i] = rand() % 10;
}
InsertSortInversion(arr, SIZE, 1);
for (int i = 0; i < SIZE; i++) {
cout << arr[i] << "\t";
}
cout << endl;
STOP_CMD
return 0;
}
Дан массив случайных чисел в диапазоне от –20 до +20.
Необходимо найти позиции крайних отрицательных
элементов (самого левого отрицательного элемента
и самого правого отрицательного элемента) и отсо-
ртировать элементы, находящиеся между ними.
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
int PositionsLeftNegativeNumber(int arr[], int size) {
for (int i = 0; i < size; i++)
if (arr[i] < 0) { return i; } // search element LEFT
return -1;
}
int PositionsRightNegativeNumber(int arr[], int size) {
for (int i = size - 1; i > 0; i--)
if (arr[i] < 0) { return i; } // search element RIGHT
return -1;
}
template <class T>
void SortBooble(T arr[], T size, T LeftPosition, T RightPosition) { // FUNC SORT
T tmp = 0; // Temporary variable
for (T i = LeftPosition; i < RightPosition + 1; i++) {
for (T j = RightPosition; j > i; j--) {
if (arr[j] < arr[i]) { // SORT
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
int main() {
COLOR_CMD
srand(time(NULL));
const int size = 10;
int arr[size];
for (int i = 0; i < size; i++) {
arr[i] = rand() % 40 - 20;
}
SortBooble(arr, size, PositionsLeftNegativeNumber(arr, size), PositionsRightNegativeNumber(arr, size));
for (int i = 0; i < size; i++) {
cout << arr[i] << "\t";
}
cout << endl;
STOP_CMD
return 0;
}
Дан массив из 20 целых чисел со значениями от 1 до 20.
Необходимо:■■ написать функцию, разбрасывающую элементы мас- сива произвольным образом;
■■ создать случайное число из того же диапазона и найти позицию этого случайного числа в массиве;
■■ отсортировать элементы массива, находящиеся сле- ва от найденной позиции по убыванию, а элементы массива, находящиеся справа от найденной позиции по возрастанию.
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define STOP_CMD system("pause");
#define COLOR_CMD system("color 0A");
void RandArrayIndex(int arr[], int size) { // Random Array Elements
int RandStart = 0, RandEnd = 0, tmp = 0;
for (int i = 0; i < size; i++) {
RandStart = rand() % size;
RandEnd = rand() % size;
if (RandStart != RandEnd) {
tmp = arr[RandStart];
arr[RandStart] = arr[RandEnd];
arr[RandEnd] = tmp;
}
}
}
int SearchPosition(int arr[], int size) { // Search position
int PositionNumber = arr[rand() % size];
for (int i = 0; i < size; i++) {
if (arr[i] == PositionNumber) {
return i;
}
}
return -1;
}
void SortRandNumber(int arr[], int size, int Position) { // Sort Array ==>> [Position big to less] [Position from Less to Big]
int tmp = 0;
for (int i = 0; i < Position; i++) { // Position big to less
for (int j = Position - 1; j > i; j--) {
if (arr[j] > arr[i]) { // SORT
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
for (int i = Position; i < size; i++) { // Position from Less to Big
for (int j = size - 1; j > i; j--) {
if (arr[j] < arr[i]) { // SORT
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
int main() {
COLOR_CMD
srand(time(NULL));
const int size = 20;
int arr[size] = { 0 };
for (int i = 0; i < size; i++) {
arr[i] = rand() % 20 + 1;
}
RandArrayIndex(arr, size);
SortRandNumber(arr, size, SearchPosition(arr, size));
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
STOP_CMD
return 0;
}