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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2017, 17:02   #11
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ребята, вы 1-е задание читали?
Зачем вы сортируете "по значению", когда надо "по индексу столбца"?

Может так (протестируй хорошенько):

Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;


void sort(int **ARR, int N, int M)
{
	int i, j, temp;
	for (i = 0; i < N; i++) 
	{
		if (i % 2 == 0)
		{
			; // ничего не делаем, т.к. индекс столбцов уже в порядке возрастания
		}
		else
		{ 
			int k;
			for (k = 0; k < M; k++)
			{
				for (j = k+1; j < M; j++)
				{
					temp = ARR[i][k];
					ARR[i][k] = ARR[i][j];
					ARR[i][j] = temp;
				}
			}
		}

	}

}

int main()
{
	setlocale(0, "");
	int n, m;
	cout << "Введите n: "; cin >> n;
	cout << "Введите m: "; cin >> m;
	cout << endl;

	srand(time(NULL));
	int i, j;
	int **arr = new int*[n]; // строки
	for (i = 0; i < n; i++)
	{
		arr[i] = new int[m]; // столбцы
		for (j = 0; j < m; j++)
		{
			arr[i][j] = -20 + rand() % 30;
		}
	}

	cout << "Исходный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	sort(arr, n, m);

	cout << "Преобразованный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	for (i = 0; i < n; i++)
	{
		delete[] arr[i];
	}
	delete[] arr;

	system("pause");
	return 0;
}
ura_111 вне форума Ответить с цитированием
Старый 26.10.2017, 18:46   #12
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Вопрос

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Ребята, вы 1-е задание читали?
Зачем вы сортируете "по значению", когда надо "по индексу столбца"?

Может так (протестируй хорошенько):

Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;


void sort(int **ARR, int N, int M)
{
	int i, j, temp;
	for (i = 0; i < N; i++) 
	{
		if (i % 2 == 0)
		{
			; // ничего не делаем, т.к. индекс столбцов уже в порядке возрастания
		}
		else
		{ 
			int k;
			for (k = 0; k < M; k++)
			{
				for (j = k+1; j < M; j++)
				{
					temp = ARR[i][k];
					ARR[i][k] = ARR[i][j];
					ARR[i][j] = temp;
				}
			}
		}

	}

}

int main()
{
	setlocale(0, "");
	int n, m;
	cout << "Введите n: "; cin >> n;
	cout << "Введите m: "; cin >> m;
	cout << endl;

	srand(time(NULL));
	int i, j;
	int **arr = new int*[n]; // строки
	for (i = 0; i < n; i++)
	{
		arr[i] = new int[m]; // столбцы
		for (j = 0; j < m; j++)
		{
			arr[i][j] = -20 + rand() % 30;
		}
	}

	cout << "Исходный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	sort(arr, n, m);

	cout << "Преобразованный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	for (i = 0; i < n; i++)
	{
		delete[] arr[i];
	}
	delete[] arr;

	system("pause");
	return 0;
}
первая, третья и пятая строка не сортируются
это правильно?
Снимок.PNG
а не проще было бы сделать вот так в функции sort, может быть?
Код:
void sort(int **ARR, int N, int M)
{
	int i, j, temp;
	for (i = 0; i < N; i++) 
	{
		if (i % 2 != 0)
		{
			int k;
			for (k = 0; k < M; k++)
			{
				for (j = k+1; j < M; j++)
				{
					temp = ARR[i][k];
					ARR[i][k] = ARR[i][j];
					ARR[i][j] = temp;
				}
			}
		}

	}

}

Последний раз редактировалось nightofpromises; 26.10.2017 в 18:52.
nightofpromises вне форума Ответить с цитированием
Старый 26.10.2017, 18:53   #13
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я не знаю...
Задание у тебя какое?

А ну, реши какой-нибудь пример, то что называется "в ручную" и выложи здесь результаты (с этого надо было тебе начинать изначально).
ura_111 вне форума Ответить с цитированием
Старый 26.10.2017, 18:54   #14
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Я не знаю...
Задание у тебя какое?

А ну, реши какой-нибудь пример, то что называется "в ручную" и выложи здесь результаты (с этого надо было тебе начинать изначально).
Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.
nightofpromises вне форума Ответить с цитированием
Старый 26.10.2017, 18:56   #15
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Это ты скопировал с первого своего поста?
А где ручной счёт?
ura_111 вне форума Ответить с цитированием
Старый 26.10.2017, 19:13   #16
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Это ты скопировал с первого своего поста?
А где ручной счёт?
я недопонимаю условие задачи..
nightofpromises вне форума Ответить с цитированием
Старый 30.10.2017, 15:08   #17
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Это ты скопировал с первого своего поста?
А где ручной счёт?
Сортировка должна быть такая (пример):
Неотсортированный массив
3 2 5 -2
1 2 3 4
5 1 3 9
1 3 4 1

Отсортированный массив
3 3 5 1
1 1 3 9
5 2 3 4
1 2 4 -2
nightofpromises вне форума Ответить с цитированием
Старый 31.10.2017, 02:49   #18
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;


void sort(int **ARR, int N, int M)
{
	int i, j, temp;
	for (j = 0; j < M; j++)
	{
		if (j % 2 == 0)
		{
			; // ничего не делаем, т.к. индекс столбцов уже в порядке возрастания
		}
		else
		{
			int k;
			for (k = 0; k < N; k++)
			{
				for (i = k + 1; i < N; i++)
				{
					temp = ARR[k][j];
					ARR[k][j] = ARR[i][j];
					ARR[i][j] = temp;
				}
			}
		}
	}
}

int main()
{
	setlocale(0, "");

	int n = 4;
	int m = 4;
	//cout << "Введите n: "; cin >> n;
	//cout << "Введите m: "; cin >> m;
	cout << endl;

	srand(time(NULL));
	int i, j;
	int **arr = new int*[n]; // строки
	for (i = 0; i < n; i++)
	{
		arr[i] = new int[m]; // столбцы
		for (j = 0; j < m; j++)
		{
			arr[i][j] = -20 + rand() % 30;
		}
	}
	
	arr[0][0] = 3; arr[0][1] = 2; arr[0][2] = 5; arr[0][3] = -2;
	arr[1][0] = 1; arr[1][1] = 2; arr[1][2] = 3; arr[1][3] = 4;
	arr[2][0] = 5; arr[2][1] = 1; arr[2][2] = 3; arr[2][3] = 9;
	arr[3][0] = 1; arr[3][1] = 3; arr[3][2] = 4; arr[3][3] = 1;
	
	cout << "Исходный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	sort(arr, n, m);

	cout << "Преобразованный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	for (i = 0; i < n; i++)
	{
		delete[] arr[i];
	}
	delete[] arr;

	system("pause");
	return 0;
}
ura_111 вне форума Ответить с цитированием
Старый 31.10.2017, 09:25   #19
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;


void sort(int **ARR, int N, int M)
{
	int i, j, temp;
	for (j = 0; j < M; j++)
	{
		if (j % 2 == 0)
		{
			; // ничего не делаем, т.к. индекс столбцов уже в порядке возрастания
		}
		else
		{
			int k;
			for (k = 0; k < N; k++)
			{
				for (i = k + 1; i < N; i++)
				{
					temp = ARR[k][j];
					ARR[k][j] = ARR[i][j];
					ARR[i][j] = temp;
				}
			}
		}
	}
}

int main()
{
	setlocale(0, "");

	int n = 4;
	int m = 4;
	//cout << "Введите n: "; cin >> n;
	//cout << "Введите m: "; cin >> m;
	cout << endl;

	srand(time(NULL));
	int i, j;
	int **arr = new int*[n]; // строки
	for (i = 0; i < n; i++)
	{
		arr[i] = new int[m]; // столбцы
		for (j = 0; j < m; j++)
		{
			arr[i][j] = -20 + rand() % 30;
		}
	}
	
	arr[0][0] = 3; arr[0][1] = 2; arr[0][2] = 5; arr[0][3] = -2;
	arr[1][0] = 1; arr[1][1] = 2; arr[1][2] = 3; arr[1][3] = 4;
	arr[2][0] = 5; arr[2][1] = 1; arr[2][2] = 3; arr[2][3] = 9;
	arr[3][0] = 1; arr[3][1] = 3; arr[3][2] = 4; arr[3][3] = 1;
	
	cout << "Исходный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	sort(arr, n, m);

	cout << "Преобразованный массив: " << endl;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << setw(3) << arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;

	for (i = 0; i < n; i++)
	{
		delete[] arr[i];
	}
	delete[] arr;

	system("pause");
	return 0;
}
Спасибо
nightofpromises вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана целочисленная матрица размером MxN. Найти и напечатать номера Анна997 Паскаль, Turbo Pascal, PascalABC.NET 1 24.04.2016 08:49
Дана целочисленная матрица размером NxN. В строках,содержащих Анна997 Паскаль, Turbo Pascal, PascalABC.NET 4 24.04.2016 08:45
Помогите доделать!! Дана целочисленная матрица А размером nхm. Найти среднее арифметическое каждого столбца матрицы и сумму (на С) tomas88 Помощь студентам 1 27.04.2014 15:49
(C++) Дана целочисленная квадратная матрица A порядка n и вектор b размером n. Найти сумму положительных элементов вектора c=b*A AirC Помощь студентам 2 25.04.2014 16:39
Программа на языке Си: Определить является ли заданна целочисленная квадратная матрица размером n*n ортонормированной lyubov17 Помощь студентам 4 10.12.2013 21:17