Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2016, 20:22   #1
Dermand
Новичок
Джуниор
 
Регистрация: 16.08.2016
Сообщений: 2
Восклицание Двумерный массив

Создать двумерный массив. Заполнить его случайными числами в диапазоне от 0 до 9 включительно. Дать пользователю возможность ввести количество строк и колонок , сколько он хочет увидеть. Показать массив на экран. Пользователь выбирает количество оползней и положение ( влево , вправо , вверх , вниз). Выполнить сдвиг массива и показать на экран полученный результат. Смещение циклический.Вот кстати скрин;
http://imgur.com/a/qJ3Nb
Я пытался(не халявщик) вот код, но у меня получается только сдвиг на 1, пытался сунуть сдвиг в цикл но насколько я понял нужно изменить сам код сдвига.

#include <iostream>
#include <time.h>
#include <windows.h>
#include <iomanip>


using namespace std;
void main() {
srand(time(NULL));
setlocale(LC_ALL, "ukr");
const int m = 5,n = 5;
int ar[m][n], min, max;
for (int i = 0;i < m;i++) {
for (int j = 0;j < n;j++) {
ar[i][j] = rand()%100-50;
}
}
for (int i = 0;i < m;i++) {
for (int j = 0;j < n;j++) {
cout << setw(5) << ar[i][j];
}
cout << endl;
}
cout << endl;
cout << ("Right") << endl;
for (int i = 0;i < m;i++) { // right
for (int j = 0;j < n;j++) {
if (j == 0) {
cout << setw(5) << ar[i][n-1];
}
else {
cout << setw(5) << ar[i][j - 1];
}


}
cout << endl;
}
cout << endl;
cout << ("Left") << endl;
for (int i = 0;i < m;i++) { // left
for (int j = 0;j < n;j++) {
if (j == 4) {
cout << setw(5) << ar[i][0];
}
else {
cout << setw(5) << ar[i][j + 1];
}


}
cout << endl;
}
cout << endl;
cout << ("Up") << endl;
for (int i = 0;i < m;i++) { // up
for (int j = 0;j < n;j++) {
if (i == 4) {
cout << setw(5) << ar[0][j];
}
else {
cout << setw(5) << ar[i + 1][j];
}

}
cout << endl;
}
cout << endl;
cout << ("Down") << endl;
for (int i = 0;i < m;i++) { // down
for (int j = 0;j < n;j++) {
if (i == 0) {
cout << setw(5) << ar[4][j];
}
else {
cout << setw(5) << ar[i - 1][j];
}

}
cout << endl;
}
cout << endl;



system("pause");
}
Вложения
Тип файла: txt Новый текстовый документ.txt (1.5 Кб, 139 просмотров)

Последний раз редактировалось Dermand; 16.08.2016 в 20:29.
Dermand вне форума Ответить с цитированием
Старый 19.08.2016, 16:07   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Протестируй хорошенько, а то я делаю тяп-ляп. Управление параметрами в месте:


1.jpg




Код:
#include <iostream> 
#include <time.h>
#include <windows.h>
#include <iomanip>


using namespace std;
void main() {
	srand(time(NULL));
	setlocale(LC_ALL, "ukr");
	const int m = 5, n = 5;
	int ar[m][n];
	int SS[m][n];
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			SS[i][j] = ar[i][j] = rand() % 100 - 50;
		}
	}
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			cout << setw(5) << ar[i][j];
		}
		cout << endl;
	}
	cout << endl;

	int Right = 3;
	int Left = 0;
	int Up = 0;
	int Down = 0;

	// Преобразование матрицы right
	for (int k = 0; k < Right; k++)
	{
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (j == 0)
				{
					SS[i][j] = ar[i][n - 1];
				}
				else
				{
					SS[i][j] = ar[i][j - 1];
				}
			}
		}
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				ar[i][j] = SS[i][j];
			}
		}
	}
	// Преобразование матрицы left
	for (int k = 0; k < Left; k++)
	{
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (j == 4)
				{
					SS[i][j] = ar[i][0];
				}
				else
				{
					SS[i][j] = ar[i][j + 1];
				}
			}
		}
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				ar[i][j] = SS[i][j];
			}
		}
	}
	// Преобразование матрицы Up
	for (int k = 0; k < Up; k++)
	{
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (i == 4)
				{
					SS[i][j] = ar[0][j];
				}
				else
				{
					SS[i][j] = ar[i + 1][j];
				}
			}
		}
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				ar[i][j] = SS[i][j];
			}
		}
	}
	// Преобразование матрицы Down
	for (int k = 0; k < Down; k++)
	{
		for (int i = 0; i < m; i++)
		{
		for (int j = 0; j < n; j++)
			{
				if (i == 0)
				{
					SS[i][j] = ar[4][j];
				}
				else
				{
					SS[i][j] = ar[i - 1][j];
				}
			}
		}
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				ar[i][j] = SS[i][j];
			}
		}
	}
			// Вывод на экран матрицы
	cout << ("Vvuvod matrici") << endl;
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << setw(5) << SS[i][j];
		}
		cout << endl;
	}
	cout << endl;
	//
	
	system("pause");
}
ura_111 вне форума Ответить с цитированием
Старый 22.08.2016, 18:50   #3
Dermand
Новичок
Джуниор
 
Регистрация: 16.08.2016
Сообщений: 2
По умолчанию Все сделал как надо

Спасибо
Dermand вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40