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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 22:48   #1
killeraleksana
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию с++ массив двумерный

Приветствую Вас,уважаемые)
я студентка 1-го курса направления прикладная матем-ка и информатика,С++ изучаю с сентября. срочно нужно сдать несколько задач,но что-то у меня не сходится в этой
Задание: дан двумерный массив размерности nxn. необходимо поменять местами 2 средних столбца,если кол-во столбцов четное, и первый со средним столбцом если кол-во столбов нечетное.

#include <iostream>
using namespace std;
int main()
{int a[1000][1000];
int k,d,n;
cout<<"n=";
cin>>n;
for (int i=0; i<n; i++)
for (int j=0; j<n;j++)

{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for (int i=0; i<n; i++)
for (int j=0; j<n;j++)
{if (n%2=0)
k=n/2-1; // k и d-номера столбцов
d=n/2;
a[i][k]=a[i][d];


else if (n%2!=0)
k=0;d=n/2;
a[i][k]=a[i][d];

}
for (int i=0; i<n;i++) //вроде должен быть вывод получившегося массива
for (int j=0; j<n;j++)
cin>>a[i][j];

return 0;}
killeraleksana вне форума Ответить с цитированием
Старый 14.12.2011, 23:20   #2
killeraleksana
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию

пожалуйста укажите на ошибку(( который день не могу понять в чем проблема
killeraleksana вне форума Ответить с цитированием
Старый 14.12.2011, 23:34   #3
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

Цитата:
Сообщение от killeraleksana Посмотреть сообщение
for (int i=0; i<n;i++) //вроде должен быть вывод получившегося массива
for (int j=0; j<n;j++)
cin>>a[i][j];

return 0;}
для вывода используется сиоут, а в самой задаче что-бы поменять местами нужно использовать переменную-буфер, а вы просто значения 1 столбца присваиваете другому
9i. вне форума Ответить с цитированием
Старый 14.12.2011, 23:43   #4
killeraleksana
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию

#include <iostream>
using namespace std;
int main()
{int a[1000][1000];
int k,d,n,t;
cout<<"n=";
cin>>n;
for (int i=0; i<n; i++)
for (int j=0; j<n;j++)

{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for (int i=0; i<n; i++)
for (int j=0; j<n;j++)
{if (n%2=0)
k=n/2-1; // k и d-номера столбцов
d=n/2;
a[i][k]=a[i][d];
a[i][d]=t;


else if (n%2!=0)
k=0;d=n/2;
a[i][k]=a[i][d];
a[i][d]=t;

}
for (int i=0; i<n;i++) //вроде должен быть вывод получившегося массива
for (int j=0; j<n;j++)
cout<<a[i][j];

return 0;}




так сойдет?
killeraleksana вне форума Ответить с цитированием
Старый 15.12.2011, 01:37   #5
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

Цитата:
Сообщение от killeraleksana Посмотреть сообщение
a[i][k]=a[i][d];
a[i][d]=t;


else if (n%2!=0)
k=0;d=n/2;
a[i][k]=a[i][d];
a[i][d]=t;




так сойдет?
а что у вас хранится в Т?
9i. вне форума Ответить с цитированием
Старый 15.12.2011, 03:55   #6
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Код:

#include <iomanip.h>

int main()
{
	int n;
	int row, col;

	cout << "Enter size of array: ";
	cin >> n;

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

	int **arr = new int*[n];	// создание двумерного массива размер nxn
	for (int i = 0; i < n; i++)
		arr[i] = new int[n];

	// заполнение массива
	for (row = 0; row < n; row++)
		for (col = 0; col < n; col++)
		{
			cout << "arr[" << row << "][" << col << "] = ";
			cin >> arr[row][col];
		}

	// печать 
	for (row = 0; row < n; row++)
	{
		for (col = 0; col < n; col++)
			cout << setw(4) << arr[row][col];
		cout << endl;
	}



	int temp;
	if (n%2 == 0)	// если число столбцов четное меняем два средних столбца
		for (row = 0; row < n; row++)
		{
			temp = arr[row][n/2-1];
			arr[row][n/2-1] = arr[row][n/2];
			arr[row][n/2] = temp;
		}
	
	if (n%2 != 0)	// если число столбцов нечетное меняем 1 и средний местами
		for (row = 0; row < n; row++)
		{
			temp = arr[row][0];
			arr[row][0] = arr[row][n/2];
			arr[row][n/2] = temp;
		}

	cout << endl;
	
	// результат
	for (row = 0; row < n; row++)
	{
		for (col = 0; col < n; col++)
			cout << setw(4) << arr[row][col];
		cout << endl;
	}


	cin.get();
	cin.get();
	return 0;
}
viron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив qwertyuiop12 Паскаль, Turbo Pascal, PascalABC.NET 4 19.05.2010 21:42
Двумерный массив Бибик Помощь студентам 18 06.01.2010 15:31
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40