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

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

Восстановить пароль Регистрация
 
Елена Погодина
 Аватар для Елена Погодина
4 / 4 / 1
Регистрация: 23.10.2010
Сообщений: 161
10.06.2011, 16:44     Процедура обмена столбца #1
Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы первые элементы которых совпадают. Помогите пожалуйста решить данную задачу!!! Может у кого то какие мысли есть по этому поводу!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2011, 16:44     Процедура обмена столбца
Посмотрите здесь:

Двумерные массивы. Разделить элементы каждого столбца на последний элемент столбца C++
Сформировать B, элементы которого Bj равны 1, если хотя бы один элемент j-го столбца матрицы A больше суммы элементов этого столбца... C++
Процедура обмена столбца и строки двухмерного массива C++
определить номер столбца матрицы с минимальным количеством отрицательных элементов и прибавить значения этого столбца к соответствующим элементам всех C++
Массивы. Поделить элементы каждой строки столбца на последний элемент столбца C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 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-х циклов тоже что то не догоняю как сделать. и можно ли вобще о_О
вобщем, надеюсь что будет работать пробуйте!
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.06.2011, 16:59     Процедура обмена столбца #3
Т.е. нужно поменять столбец со строкой, первые элементы которых совпадают?

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

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

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

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

Добавлено через 3 минуты
Вот тут посмотрите: Задержка экрана
Елена Погодина
 Аватар для Елена Погодина
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();
}
Помогите доделать пожалуйста!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 10:47     Процедура обмена столбца
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 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; }
в этом случае не должны меняться первая строка и первый столбец. они конечно один фиг поменяются в конце, и будет довольно забавная кашка

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

Текущее время: 15:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru