Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Елена Погодина
4 / 4 / 1
Регистрация: 23.10.2010
Сообщений: 161
#1

Процедура обмена столбца - C++

10.06.2011, 16:44. Просмотров 851. Ответов 13
Метки нет (Все метки)

Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы первые элементы которых совпадают. Помогите пожалуйста решить данную задачу!!! Может у кого то какие мысли есть по этому поводу!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2011, 16:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Процедура обмена столбца (C++):

Процедура обмена столбца и строки двухмерного массива - C++
Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых...

Двумерные массивы. Разделить элементы каждого столбца на последний элемент столбца - C++
Уважаемые, нужна помощь. Дано матрицу Т размером 6х5. Разделить элементы каждого столбца на последний элемент столбца. Преобразованную...

Массивы. Поделить элементы каждой строки столбца на последний элемент столбца - C++
Дано матрицу Т размером 8х9. поділіть элементы каждой строки столбца на последний элемент столбца. Превращенную матрицу напечатать

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца - C++
Разделить элементы каждого столбца заданной матрицы на последний элемент столбца.

Каждый элемент столбца матрицы разделить на среднее арифметическое элементов данного столбца - C++
Заданный массив действительных чисел А (n, n). Необходимо каждый элемент столбца разделить на среднее арифметическое элементов данного...

В прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого столбца - C++
Решить задачу: в прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого столбца.

13
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
10.06.2011, 16:59 #2
C++
1
2
3
4
5
6
7
8
int tmp;
int matr [ N ] [ N ] 
 
for (int i = 0; i < N; i ++ ) 
  for ( int j = 0; j < N; j++ )
       if (matr [i][0] == matr [0] [j] )   
       for (int k = 1; k < N; k++ ) 
           {  tmp = matr [i][k]; matr [i][k] = matr [k][j]; matr [k][j] = tmp; }
вроде вот так должна быть тушка процедуры.
не могу проверить. да и конец рабочего дня


и меньше 3-х циклов тоже что то не догоняю как сделать. и можно ли вобще о_О
вобщем, надеюсь что будет работать пробуйте!
2
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.06.2011, 16:59 #3
Т.е. нужно поменять столбец со строкой, первые элементы которых совпадают?

Добавлено через 20 секунд
Хотя не... тогда будет всегда меняться первый столбец с первой строкой...
1
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.06.2011, 17:03 #4
Вот тут посмотрите: Поменять местами строки и столбцы матрицы
1
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
10.06.2011, 17:07 #5
первый столбец и будет меняться.

ну ведь далеко не факт что он будет единственный.
если правильно написал - пробежаться по каждому началу столбца и сравнить его с каждым началом строки.
1
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.06.2011, 17:12 #6
Цитата Сообщение от co6ak Посмотреть сообщение
ну ведь далеко не факт что он будет единственный.
Это да... Но после первого прохода исходная матрица всё равно испортится, т.к. все первые элементы столбцов поменяются (возможно тут правильнее будет использовать вспомогательную матрицу?).
К тому же на какой столбец нужно заменить строку, если таких столбцов несколько? На самый последний найденный? А может на первый? Задание какое-то...
0
Елена Погодина
4 / 4 / 1
Регистрация: 23.10.2010
Сообщений: 161
10.06.2011, 19:39  [ТС] #7
Цитата Сообщение от Nursik77 Посмотреть сообщение
Не рабочий код или же написанно в bc незнаю запуталась вся
0
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.06.2011, 19:46 #8
Цитата Сообщение от Елена Погодина Посмотреть сообщение
Не рабочий код или же написанно в bc незнаю запуталась вся
Почему же? там написано что код не коего IrineK правильен, да и сам код написан в С++.

Добавлено через 55 секунд
Да и организовано с функциями.
0
Елена Погодина
4 / 4 / 1
Регистрация: 23.10.2010
Сообщений: 161
10.06.2011, 19:48  [ТС] #9
Цитата Сообщение от Nursik77 Посмотреть сообщение
Почему же? там написано что код не коего IrineK правильен, да и сам код написан в С++.

Добавлено через 55 секунд
Да и организовано с функциями.
Вставляю не пашет вернее прога запускается но никаких действий кот она выполняет я не увидела
0
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.06.2011, 19:59 #10
Там же вроде надо размер вручную вводить, вы ничего не пробовали вводить? Просто у меня компилятор турбо си и я не могу проверить.
0
Елена Погодина
4 / 4 / 1
Регистрация: 23.10.2010
Сообщений: 161
10.06.2011, 21:12  [ТС] #11
Цитата Сообщение от Nursik77 Посмотреть сообщение
Там же вроде надо размер вручную вводить, вы ничего не пробовали вводить? Просто у меня компилятор турбо си и я не могу проверить.
Вот именно до этого иоиента и работает программа когда вводишь размер она тоже закрывается
0
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.06.2011, 21:45 #12
Ну для задержки экрана существуют спец. функции. К примеру в си нужно прописать дополнительную библиотеку, называется conio.h (#include<conio.h>), после, в самом конце, перед закрытием тела основной функции нужно прописать getch();. У вас какой компилятор? Я не знаю какие в с++ есть функции для этого, вроде бы есть какая-то функция называется system pause, ну что-то вроде этого. По гуглите.

Добавлено через 3 минуты
Вот тут посмотрите: Задержка экрана
0
Елена Погодина
4 / 4 / 1
Регистрация: 23.10.2010
Сообщений: 161
12.06.2011, 13:12  [ТС] #13
Спасибо я и совсем забыла про это сейчас попробую!!

Добавлено через 21 час 49 минут
Код
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;

void inp(int** x,int n);
void out(int** x,int n);
void replace(int** x,int n);


void main()
{
		int n;
		cout<<"n=";
		cin>>n;
		int** x=new int*[n];

		for(int i=0;i<n;i++)
				x[i]=new int[n];

		inp(x,n);
        out(x,n);
		replace(x,n);
        cout<<endl<<endl;
		out(x,n);

		for(int i=0;i<n;i++)
				delete[] x[i];

		delete[] x;
}

void inp(int** x,int n)
{
		srand(time(0));
		for(int i=0;i<n;i++)
				for(int j=0;j<n;j++)
						*(*(x+i)+j)=rand()%10;
}

void out(int** x,int n)
{
        for(int i=0;i<n;i++)
        {
				for(int j=0;j<n;j++)
                        cout<<*(*(x+i)+j)<<" ";
                cout<<endl;
        }

}

void replace(int** x,int n)
{
		int buff;
        for(int i=0;i<n;i++)
                  for(int j=0;j<i;j++)
                {
                        buff=*(*(x+i)+j);
						*(*(x+i)+j)=*(*(x+j)+i);
                        *(*(x+j)+i)=buff;
				} getch();
}
Осталось поменять строки и столбцы может ктото знает???

Добавлено через 14 часов 55 минут
[QUOTE=Елена Погодина;1748751]Спасибо я и совсем забыла про это сейчас попробую!!

Добавлено через 21 час 49 минут
Код
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;

void inp(int** x,int n);
void out(int** x,int n);
void replace(int** x,int n);


void main()
{
		int n;
		cout<<"n=";
		cin>>n;
		int** x=new int*[n];

		for(int i=0;i<n;i++)
				x[i]=new int[n];

		inp(x,n);
        out(x,n);
		replace(x,n);
        cout<<endl<<endl;
		out(x,n);

		for(int i=0;i<n;i++)
				delete[] x[i];

		delete[] x;
}

void inp(int** x,int n)
{
		srand(time(0));
		for(int i=0;i<n;i++)
				for(int j=0;j<n;j++)
						*(*(x+i)+j)=rand()%10;
}

void out(int** x,int n)
{
        for(int i=0;i<n;i++)
        {
				for(int j=0;j<n;j++)
                        cout<<*(*(x+i)+j)<<" ";
                cout<<endl;
        }

}

void replace(int** x,int n)
{
		int buff;
        for(int i=0;i<n;i++)
                  for(int j=0;j<i;j++)
                {
                        buff=*(*(x+i)+j);
						*(*(x+i)+j)=*(*(x+j)+i);
                        *(*(x+j)+i)=buff;
				} getch();
}
Помогите доделать пожалуйста!!!
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
14.06.2011, 10:47 #14
Цитата Сообщение от co6ak Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int tmp;
int matr [ N ] [ N ] 
 
for (int i = 0; i < N; i ++ ) 
  for ( int j = 0; j < N; j++ )
       if (matr [i][0] == matr [0] [j] )   
       for (int k = 1; k < N; k++ ) 
           {  tmp = matr [i][k]; matr [i][k] = matr [k][j]; matr [k][j] = tmp; }
вроде вот так должна быть тушка процедуры.
не могу проверить. да и конец рабочего дня


и меньше 3-х циклов тоже что то не догоняю как сделать. и можно ли вобще о_О
вобщем, надеюсь что будет работать пробуйте!
у меня тут мысль появилась.если тема еще актуальна конечно.
надо проходить проверку массива с обратной стороны. т.е.
C++
1
2
3
4
5
6
7
int matr [ N ] [ N ] 
 
for (int i = N; i > 0; --i ) 
  for ( int j = N; j > 0; --i )
       if (matr [i][0] == matr [0] [j] )   
       for (int k = 1; k < N; k++ ) 
           {  tmp = matr [i][k]; matr [i][k] = matr [k][j]; matr [k][j] = tmp; }
в этом случае не должны меняться первая строка и первый столбец. они конечно один фиг поменяются в конце, и будет довольно забавная кашка

самым точным вариантом будет создание второй матрицы двумерной и уже в нее закидывать измененные/не измененные данные
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 10:47
Привет! Вот еще темы с ответами:

Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой простых чисел этого столбца, пер - C++
Надо решить такую задачу,помогите,а то не шарю що делать: Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой...

Сформировать B, элементы которого Bj равны 1, если хотя бы один элемент j-го столбца матрицы A больше суммы элементов этого столбца... - C++
Помогите написать задачу. &quot;Сформировать одномерный массив B, элементы которого Bj равны 1, если хотя бы один элемент j-го столбца матрицы...

Дано матрицу А размером 8x7. Разделить каждый элемент столбца на элемент этого столбца... - C++
Дано матрицу А размером 8x7. разделить каждый элемент столбца на элемент этого столбца, который находится на главной диагонали, если этот...

Умножить каждый элемент столбца матрицы A(n, m) на первый элемент данного столбца. - C++
Помогите, пожалуйста, написать программу: Умножить каждый элемент столбца матрицы A(n, m) на первый элемент данного столбца. Она кажется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
14.06.2011, 10:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru