search

Рекомендация: прочитайте задачу! Выполните ее и сравните полученный результат с картинкой CMD

Если вы полностью уверены что не можете осилить эту задачу, советую вам просмотреть код и полностью в нем разобраться! Протестировать все в отладчике!

Написать программу, которая осуществляет добавление строки (столбца) перед строкой (столбцом) заданной пользователем. Номер строки указывается в диапазоне от 0 до N-1. Если пользователь вводит N, то строка добавляется в конец таблицы. Номер столбца указывается в диапазоне от 0 до M-1. Если пользователь вводит M, то столбец добавляется в конец таблицы. Предусмотреть контроль правильности ввода номера строки или столбца для вставки. Данные новой строки генерировать с учетом заданных ограничений. Необходимые функции для решения задач представить в отдельном файле. В основном файле программы реализовать ввод исходных данных, запуск функций и вывод результатов.

//#include "H.h"
#pragma once
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <Windows.h>
#include <string>
using namespace std;
#define Stop_Console system("pause >> void"); //Stop Console windows
int ** Create_Array(int** &, int, int);
void Rand_Arr_Setup(int ** &, int, int, int, int, int, int);
void Print_Arr(int ** &, int, int);
void Delete_New(int** &, int);
void Rand_Arr(int ** &, int, int, int, int);
int User_Check(string check);

//Functions.cpp	
#include "H.h"
int User_Check(string str) { // Check input user

	int count = 0, tmp = 0; 
	char * ch = new char[str.size() + 1];
	copy(str.begin(), str.end(), ch);
	ch[str.size()] = '\0'; // don't forget the terminating 0 

	for (int i = 0; i < str.size(); i++) 
		if (ch[i] < 48 || ch[i] > 57) 
			count++;
	delete[] ch; 
	if(count != 0)
			return 0;
	else 
		return 1;
}
int ** Create_Array(int** &arr, int row, int col) { // Birth of a matrix
	arr = new int *[row]();
	for (int i = 0; i < row; i++)
		arr[i] = new int[col]();
	return arr;
}
void Rand_Arr_Setup(int ** &arr, int row, int col, int min, int max, int InsertNumber, int InsertUserMenuSTR_COL) { //SETUP
	srand(time(NULL));
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			if (InsertUserMenuSTR_COL == 1) { if (j == InsertNumber) arr[i][j] = min + rand() % (max - min); } //COLUMN
			if (InsertUserMenuSTR_COL == 2) { if (i == InsertNumber) arr[i][j] = min + rand() % (max - min); } //STRING
		}
	}
}
void Print_Arr(int ** &arr, int row, int col) { // DISPLAY
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++)
			cout << arr[i][j] << " ";
		cout << endl;
	}
}
void Rand_Arr(int ** &arr, int row, int col, int min, int max) { // RAND ARRAY
	srand(time(NULL));
	for (int i = 0; i < row; i++)
		for (int j = 0; j < col; j++)
			arr[i][j] = min + rand() % (max - min);
}
void Delete_New(int** &arr, int row) { // DELETE MATRIX
	for (int i = 0; i < row; i++)
		delete[] arr[i];
	delete[] arr;
}

#include "H.h" 

void main() {
	char GO = 0; //Start Program
	do { //protection
//---------------------------------------------------------------------------------------------------------------
		int line = 0, column = 0, InsertUserSTR_COL = 0, SelectUserMenu = 0, MinElementUser = 0, MaxElementUser = 0;
		int **PtrArr;
		int Rand_Matrix_Input = 0;
		string Check_User_Input; 
//---------------------------------------------------------------------------------------------------------------
		do {
			cout << "Enter the number of row and column elements.\nRow or column cannot be 1 or less than 1" << endl;
			cout << "***MAXIMUM size 80 STRING 80 COLUMN***" << endl;
			cout << "Please enter: [STRING]" << endl;
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				line = atoi(Check_User_Input.c_str());
			cout << "Please enter: [COLUMN]" << endl;
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				column = atoi(Check_User_Input.c_str());
			if (line == 1 || line < 1 || line > 80) // check
				cout << "line = " << line << " error" << endl;
			if (column == 1 || column < 1 || column > 80) // check
				cout << "column = " << column << " error" << endl;
		} while (line == 1 || column == 1 || line < 1 || column < 1 || line > 80 || column > 80); // check
		cout << "Matrix created congratulations!\n" << endl;
		Create_Array(PtrArr, line, column);
		Print_Arr(PtrArr, line, column);
		cout << endl << endl;
//-----------------------------------------------------------------------------------------
		do{
		cout << "====>>> [Enter 1.] I want to add a column!" << endl;
		cout << "====>>> [Enter 2.] I want to add a string!" << endl;
		cin >> Check_User_Input; // INPUT MENU
		if (User_Check(Check_User_Input)) // Check_FUNC
			SelectUserMenu = atoi(Check_User_Input.c_str());
		if (SelectUserMenu > 2 || SelectUserMenu < 1)// check
			cout << "ERROR input " << endl;
	} while (SelectUserMenu > 2 || SelectUserMenu < 1);// check
//-----------------------------------------------------------------------------------------

	if (SelectUserMenu == 1) {
		do {
			cout << "The column number you want to add:" << endl;
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				InsertUserSTR_COL = atoi(Check_User_Input.c_str());
			if (InsertUserSTR_COL <= column || InsertUserSTR_COL >= 1)
				column++;
			if (InsertUserSTR_COL > column || InsertUserSTR_COL < 1)
			cout << "ERROR input" << endl;
		} while (InsertUserSTR_COL > column || InsertUserSTR_COL < 1);
		do {
			cout << "Enter the minimum and maximum element of the column you added:" << endl;
			cout << "Min = MAX 998 and MIN -1000" << endl;
			cout << "Max = MAX 999 and MIN -999" << endl;
			cout << "Element Min can not be greater than or equal to the maximum!" << endl;
			cout << "Please enter element min:" << endl;
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				MinElementUser = atoi(Check_User_Input.c_str());
			cout << "Please enter element max:" << endl;
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				MaxElementUser = atoi(Check_User_Input.c_str());
			if (MinElementUser > 998 || MinElementUser < -1000)// check
				cout << "==>> ERORR Min element = " << MinElementUser << endl;
			if (MaxElementUser > 999 || MaxElementUser < -999)// check
				cout << "==>> ERORR Max element = " << MaxElementUser << endl;
			if (MinElementUser == MaxElementUser)// check
				cout << "==>> ERORR Element MAX = Element MIN" << endl;
			if (MinElementUser > MaxElementUser)// check
				cout << "Element min more Element max" << endl;
		} while (MinElementUser > 998 || MinElementUser < -1000 || MaxElementUser > 999 || MaxElementUser < -999 || MinElementUser == MaxElementUser || MinElementUser > MaxElementUser);// check
	}
		if (SelectUserMenu == 2) {
			do {
				cout << "The line number you want to add:" << endl;
				cin >> Check_User_Input;
				if (User_Check(Check_User_Input)) // Check_FUNC
					InsertUserSTR_COL = atoi(Check_User_Input.c_str());
				if (InsertUserSTR_COL <= line || InsertUserSTR_COL >= 1)
					line++;
				if (InsertUserSTR_COL > line || InsertUserSTR_COL < 1)
					cout << "ERROR input" << endl;
			} while (InsertUserSTR_COL > line || InsertUserSTR_COL < 1);
			do {
				cout << "Enter the minimum and maximum element of the line you added:" << endl;
				cout << "Min = MAX 998 and MIN -1000" << endl;
				cout << "Max = MAX 999 and MIN -999" << endl;
				cout << "Element Min can not be greater than or equal to the maximum!" << endl;
				cout << "Please enter element min:" << endl;
				cin >> Check_User_Input;
				if (User_Check(Check_User_Input)) // Check_FUNC
					MinElementUser = atoi(Check_User_Input.c_str());
				cout << "Please enter element max:" << endl;
				cin >> Check_User_Input;
				if (User_Check(Check_User_Input)) // Check_FUNC
					MaxElementUser = atoi(Check_User_Input.c_str());
				if (MinElementUser > 998 || MinElementUser < -1000)// check
					cout << "==>> ERORR Min element = " << MinElementUser << endl;
				if (MaxElementUser > 999 || MaxElementUser < -999)// check
					cout << "==>> ERORR Max element = " << MaxElementUser << endl;
				if (MinElementUser == MaxElementUser)// check
					cout << "==>> ERORR Element MAX = Element MIN" << endl;
				if (MinElementUser > MaxElementUser)// check
					cout << "Element min more Element max" << endl;
			} while (MinElementUser > 998 || MinElementUser < -1000 || MaxElementUser > 999 || MaxElementUser < -999 || MinElementUser == MaxElementUser || MinElementUser > MaxElementUser);// check
		}
		cout << endl; 
//---------------------------------------------------------------------------------------------------------------
		cout << "**********Congratulations!**********" << endl;
		cout << endl;
		Create_Array(PtrArr, line, column); //Birth of a matrix
		Rand_Arr_Setup(PtrArr, line, column, MinElementUser, MaxElementUser, InsertUserSTR_COL, SelectUserMenu); //SETUP
		Print_Arr(PtrArr, line, column); //DISPLAY
		Delete_New(PtrArr, line); //DELETE
		cout << endl; 
//---------------------------------------------------------------------------------------------------------------
		cout << "Start Program enter:  (y)" << endl;
		cin >> GO; 
	} while (GO == 'y');

	cout << endl; 
	cout << "Programm end (-_-)" << endl; //User Warning
	Stop_Console //WINDOWS STOP CONSOLE
}	

array	
Написать программу, * * которая выполняет циклический сдвиг строк массива на один элемент в указанную сторону * * (в конец или в начало).

//#include "H.h"	
#pragma once
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <string>
using namespace std; 
#define Stop_Console system("pause >> void"); 
void Cyclic_Shift_Left(int ** &, int, int); //SHIFT RIGHT
void Cyclic_Shift_RIGHT(int ** &, int, int); //SHIFT RIGHT
int ** Create_Array(int** &, int, int); // Birth of a matrix
void Print_Arr(int ** &, int, int); // DISPLAY
void Rand_Arr(int ** &, int, int, int, int); //RAND ARRAY
void Delete_New(int** &, int); // DELETE MATRIX
int User_Check(string str);	

//Functions.cpp	
#include "H.h"
int User_Check(string str) { // Check input user

	int count = 0, tmp = 0;
	char * ch = new char[str.size() + 1];
	copy(str.begin(), str.end(), ch);
	ch[str.size()] = '\0'; // don't forget the terminating 0 

	for (int i = 0; i < str.size(); i++)
		if (ch[i] < 48 || ch[i] > 57)
			count++;
	delete[] ch;
	if (count != 0)
		return 0;
	else
		return 1;
}
void Cyclic_Shift_Left(int ** &arr, int row, int col) { //SHIFT LEFT 
	int * bufer = new int[row](); //The buffer for the last column
	for (int i = 0; i < row; i++) {
		for (int j = col - 1; j > 0; j--) {
			if (j == col - 1) { bufer[i] = arr[i][j]; } //Copy the last column 
		}
	}
	for (int i = 0; i < row; i++) {
		for (int j = col - 1; j > 0; j--) {
			arr[i][j] = arr[i][j - 1]; // cyclic shift of the matrix
		}
	}
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			arr[i][0] = bufer[i];  // Get the buffer elements 
		}
	}
	delete[] bufer;
}
void Cyclic_Shift_RIGHT(int ** &arr, int row, int col) { //SHIFT RIGHT
	int * bufer = new int[row](); //Buffer for the first column
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			if (j == 0) { bufer[i] = arr[i][j]; } //Copy the first column
		}
	}
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col - 1; j++) {
			arr[i][j] = arr[i][j + 1]; // cyclic shift of the matrix
		}
	}
	for (int i = row - 1; i >= 0; i--) {
		for (int j = 0; j < col; j++) {
			if (j == col - 1) { arr[i][col - 1] = bufer[i]; } // Get items from the buffer
		}
	}
	delete[] bufer;
}
int ** Create_Array(int** &arr, int row, int col) { // Birth of a matrix
	arr = new int *[row]();
	for (int i = 0; i < row; i++)
		arr[i] = new int[col]();
	return arr;
}
void Print_Arr(int ** &arr, int row, int col) { // DISPLAY
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++)
			cout << arr[i][j] << " ";
		cout << endl;
	}
}
void Rand_Arr(int ** &arr, int row, int col, int min, int max) { // RAND ARRAY
	srand(time(NULL)); 
	for (int i = 0; i < row; i++)
		for (int j = 0; j < col; j++)
			arr[i][j] = min + rand() % (max - min); 
}
void Delete_New(int** &arr, int row) { // DELETE MATRIX
	for (int i = 0; i < row; i++)
		delete[] arr[i];
	delete[] arr;
}	

/*******************************************************************************************
* Dombrovsky Igor Vladimirovich 32PPS11                                                    *
* TASK 1                                                                                   *
* Написать программу,                                                                      * 
* которая выполняет циклический сдвиг строк массива на один элемент в указанную сторону    *
* (в конец или в начало).                                                                  *
********************************************************************************************/

#include "H.h"

void main() {
	char GO = 0; 
	do {
//-----------------------------------------------------------------------------------------
		int str = 0, column = 0, ElementMin = 0, ElementMax = 0, Insert_Left_Right = 0;
		int ** PtrArr; // Pointer MATRIX
		string Check_User_Input;
//-----------------------------------------------------------------------------------------
		do {
			cout << "Enter the number of row and column elements.\nRow or column cannot be 1 or less than 1" << endl;
			cout << "***MAXIMUM size 80 STRING 80 COLUMN***" << endl; 
			cout << "Please enter: [STRING]" << endl; 
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				str = atoi(Check_User_Input.c_str());
			cout << "Please enter: [COLUMN]" << endl;
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				column = atoi(Check_User_Input.c_str());
			if (str == 1 || str < 1 || str > 80) // check
				cout << "str = "<< str << " error" << endl; 
			if (column == 1 || column < 1 || column > 80) // check
				cout << "column = " << column << " error" << endl;
		} while (str == 1 || column == 1 || str < 1 || column < 1 || str > 80 || column > 80); // check
//-----------------------------------------------------------------------------------------
		cout << "Matrix created congratulations!\n" << endl; 
		Create_Array(PtrArr, str, column);
		Print_Arr(PtrArr, str, column);
		cout << endl << endl; 
//-----------------------------------------------------------------------------------------
		do {
			cout << "Enter MIN and MAX elements array." << endl;
			cout << "Min = MAX 998 and MIN -1000" << endl;
			cout << "Max = MAX 999 and MIN -999" << endl;
			cout << "Element Min can not be greater than or equal to the maximum!" << endl;
			cout << "Please enter element min:" << endl; 
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				ElementMin = atoi(Check_User_Input.c_str());
			cout << "Please enter element max:" << endl; 
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				ElementMax = atoi(Check_User_Input.c_str());
			if (ElementMin > 998 || ElementMin < -1000)// check
				cout << "==>> ERORR Min element = " << ElementMin << endl; 
			if (ElementMax > 999 || ElementMax < -999)// check
				cout << "==>> ERORR Max element = " << ElementMax << endl;
			if (ElementMin == ElementMax)// check
				cout << "==>> ERORR Element MAX = Element MIN" << endl; 
			if (ElementMin > ElementMax)// check
				cout << "Element min more Element max" << endl; 
		} while (ElementMin > 998 || ElementMin < -1000 || ElementMax > 999 || ElementMax < -999 || ElementMin == ElementMax || ElementMin > ElementMax);// check
		cout << "**********Congratulations!**********" << endl; 
		cout << endl; 
		Rand_Arr(PtrArr, str, column, ElementMin, ElementMax);
		Print_Arr(PtrArr, str, column);
		cout << endl << endl; 
//-----------------------------------------------------------------------------------------
		do {
			cout << "Enter Cyclic shift ==> [LEFT 1][RIGHT 2]: " << endl;
			cout << endl; 
			cin >> Check_User_Input;
			if (User_Check(Check_User_Input)) // Check_FUNC
				Insert_Left_Right = atoi(Check_User_Input.c_str());
			if (Insert_Left_Right > 2 || Insert_Left_Right < 1)// check
				cout << "ERROR input " << endl; 
		} while (Insert_Left_Right > 2 || Insert_Left_Right < 1);// check
//-----------------------------------------------------------------------------------------
			switch (Insert_Left_Right)
			{
			case 1: { // LEFT
				cout << "MATRIX" << endl << endl; 
				Print_Arr(PtrArr, str, column);
				cout << endl;
				Cyclic_Shift_Left(PtrArr, str, column);
				cout << "***********DONE***********" << endl;
				cout << endl;
				Print_Arr(PtrArr, str, column);
				break;
			}
			case 2: { // RIGHT
				cout << "MATRIX" << endl << endl;
				Print_Arr(PtrArr, str, column);
				cout << endl;
				Cyclic_Shift_RIGHT(PtrArr, str, column);
				cout << "***********DONE***********" << endl;
				cout << endl;
				Print_Arr(PtrArr, str, column);
				break;
			}
		}
//-----------------------------------------------------------------------------------------
			cout << endl; 
		cout << "Begin = 'y'" << endl; 
		cin >> GO; 
	} while (GO == 'y'); // BEGIN PROGRAM 
	cout << endl; 
	cout << "END PROGRAMM" << endl; 
	Stop_Console // windows cmd STOP
}	

array