Рекомендация: прочитайте задачу! Выполните ее и сравните полученный результат с картинкой 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
}
Написать программу, *
* которая выполняет циклический сдвиг строк массива на один элемент в указанную сторону *
* (в конец или в начало).
//#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
}