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

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

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

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
407 / 500 / 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
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.06.2011, 16:59     Процедура обмена столбца #3
Т.е. нужно поменять столбец со строкой, первые элементы которых совпадают?

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

ну ведь далеко не факт что он будет единственный.
если правильно написал - пробежаться по каждому началу столбца и сравнить его с каждым началом строки.
dihlofos
Бродяга
303 / 257 / 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
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
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
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     Процедура обмена столбца
Еще ссылки по теме:

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

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

Не получается умножить каждый элемент столбца на минимальный элемент этого столбца - C++
Преобразовать двумерный массив 4х6, умножив элементы каждого столбца на минимальный элемент этого столбца. Данные в массив ввести в...

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

оптимизация обмена - C++
помогите пожалуйста немного переделать код программы! вот условие: Дан файл типа BYTE размером не менее 256 Кбайт. Скопировать...


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

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
407 / 500 / 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     Процедура обмена столбца
Ответ Создать тему
Опции темы

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