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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2019, 00:50   #11
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,315
По умолчанию

Desc
Цитата:
Далее сравниваем массив A (не известно откуда нарисовался)
Это из условия:
Цитата:
Массив данных а размерностью МхN задан пользователем
Просто ТС ошибся в размере буквы.

Цитата:
Еще один P. S.
VLADOSW2001, Вы правильно сформулировали поставленное задание?
Подозреваю, что ТС писал по памяти, а не из пособия.

Цитата:
Далее сравниваем массив A (не известно откуда нарисовался) с массивом P
В условии нет задания сравнивать массив А с массивом Р. Посмотрите ещё раз внимательно.

Цитата:
Далее, в массиве A сортируем элементы (i) строк в столбцах массива A
И это придумано вами. Там речи о сортировке в массиве А нет. Там вообще нет речи о сортировке. Там говорится о
Цитата:
Сформировать двумерный массив В с
массива А, располагая в нем столбцы массива А в порядке,
заданном массивом Р, при этом порядок элементов в Столбцах
заменить на противоположный, то есть первый элемент должен стать
последним, второй - предпоследним и тому подобное.
Но это не сортировка, а перестановка.
При этом порядок перестановки столбцов задан массивом Р, а порядок перестановки строк описан словами - выделил жирным.

Так что проблем не вижу.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 27.09.2019, 01:25   #12
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

В моем понимании, перестановка это
Цитата:
Сообщение от VLADOS2001 Посмотреть сообщение
при этом порядок элементов в Столбцах
заменить на противоположный
-
А сортировка - отсортировали согласно какого то эталона. В данном случае по столбцам массива P.
Или я ошибаюсь?
Цитата:
Сообщение от ViktorR Посмотреть сообщение
В условии нет задания сравнивать массив А с массивом Р. Посмотрите ещё раз внимательно.
посмотрел внимательно
Цитата:
Сообщение от VLADOS2001 Посмотреть сообщение
располагая в нем столбцы массива А в порядке,
заданном массивом Р
P. S.
У автора темы, в результате диалога, все же возник вопрос относительно массива P. И, предположительно, по причине не корректного составления задания, или по причине искаженного его изложения в данной теме.
По поводу A не сразу понял. Ввели размер массива A>>однострочный P задан размерностью A>>дальше не обращаем внимание на P, т. к. порядок расположения у него тот же что и в A>>перестановка столбцов на противоположные и получаем>>B.
Если не так, тогда совсем совсем не понял постановку задачи.
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 27.09.2019 в 02:22.
Desc вне форума Ответить с цитированием
Старый 27.09.2019, 11:05   #13
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,315
По умолчанию

Desc
Цитата:
А сортировка - отсортировали согласно какого то эталона. В данном случае по столбцам массива P.
В массиве Р нет столбцов, это одномерный массив. Хотя в некотором приближении его можно считать матрицей в одну строку.
Вы написали
Цитата:
Далее, в массиве A сортируем элементы (i) строк в столбцах массива A
Из этого следует, что элементы каждого столбца массива А должны быть отсортированы. Но это не так, они должны быть переставлены.
Если принять ваше понятие сортировки, то сортируются только столбцы: в соответствии с порядком, который задан в массиве Р.

Расположить столбцы массива А в порядке, который задан массивом Р - это не есть сравнение массива А с массивом Р. Это установление некоторого соотношения между этими массивами.
Цитата:
Ввели размер массива A>>однострочный P задан размерностью A>>дальше не обращаем внимание на P
Ну почему же не обращаем внимание.
Значения элементов массива Р задают порядок размещения столбцов массива А в массиве В.

Цитата:
т. к. порядок расположения у него тот же что и в A
А вот это ваше замечание как понять? Что вы понимаете под порядком расположения элементов двухмерного массива А и одномерного массива Р?
Что значит, порядок расположения у него тот же?
Пример:
Код:
1 2 3 4 5 - номера столбцов массива А и сам массив
3 6 5 9 8
4 7 3 2 1
2 3 3 8 9

4 2 3 1 5 - значения элементов массива Р

8 3 3 2 9 - новый массив В
2 7 3 4 1
9 6 5 3 8
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 28.09.2019, 15:37   #14
VLADOS2001
Пользователь
 
Регистрация: 19.09.2019
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
А для меня эта задача противоречива, с необходимостью уточнения.
Исходя из условия(той части что понятна):
Задаем массив размером m на n (дальше х.з. что с ним делать).
Далее сравниваем массив A (не известно откуда нарисовался) с массивом P, и располагаем элементы в массиве A согласно поставленной задачи. А именно ...
Формируем массив P(i) размером n(j), и т. к. он одномерный i==1. Соответственно i=1 (одна строка).
i, j этого массива предположительно устанавливаем как константу (задаем размерность(если это лаба то можно и через рандом)).
Далее, в массиве A сортируем элементы (i) строк в столбцах массива A (здесь начинается бред, т.к. массив P содержит только одну строку) относительно элементов (i) строк столбцов массива P в противоположной последовательности.
Это то, как я понимаю понимательную часть поставленной задачи

P. S.
Если это лаба, интересно очень===очень, преподаватель знает правильное составление алгоритма по поставленному условию задачи?


Ошибаетесь все только начинается ...

Еще один P. S.
VLADOSW2001, Вы правильно сформулировали поставленное задание?
Код:
#include <iostream>

#include <cstdlib>

#include <ctime>

#include<chrono>

#include<thread>

using namespace std;

int main(int argc,char* argv[])
{
	srand((int)time(0));

	setlocale(NULL, "RUS");

	label:

	system("color 02");

	int n, m;

	cout << "N="; cin >> n;

	cout << "M="; cin >> m;
	
	if (m > 0 && n > 0) {

	float** A = new float* [n];
	for (int i = 0; i < n; i++)
		A[i] = new float[m];

	float** B = new float* [n];
	for (int i = 0; i < n; i++)
		B[i] = new float[m];

	int* P = new int[m];

	cout << "Введите двумерный массив А: " << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cout << "A[" << i + 1 << "] "; cin >> A[i][j];
		}
		cout << endl;
	}
	system("cls");

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{

			cout << A[i][j] << " ";
		}
		cout << endl;
	}

	for (int i = 0; i < n; i++)
		P[i] = i + 1;

	for (int i = 0; i < m; i++)
		swap(P[i], P[rand() % m]);

	cout << "Массив P: "<<endl;
	for (int i = 0; i < m; i++)
		cout << P[i] << " ";
	cout << endl;

	for (int j = 0; j < m; j++)
		for (int i = 0; i < n; i++)
			B[i][j] = A[i][P[j] - 1];

	cout << "Массив В: " << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
			cout << B[i][j] << " ";
		cout << endl;
	}

	for (int i = 0; i < n; i++)
		delete[]A[i];
	delete[]A;
	for (int i = 0; i < n; i++)
		delete[]B[i];
	delete[]B;
	delete[]P;

	}

	else {

		cout << "Введенное значение нарушает условие задачи" << endl;

		this_thread::sleep_for(chrono::seconds(5));

		system("cls");

		goto label;
	}


	system("pause");
	return 0;
}
Можете проверить правильно я его реализовал или нет, да это лаба преподаватели дают только задания но не учат
VLADOS2001 вне форума Ответить с цитированием
Старый 28.09.2019, 22:18   #15
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Код свой компилировать Пробовали?
Что в исходных данных, и что на выходе получается?
Запишите входной, эталонный и выходной массивы в файл(ы). И сами сможете проверить корректность выполнения задачи.
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 29.09.2019, 19:26   #16
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,315
По умолчанию

Это плохо:
Код:
	label:
...
goto label;
Используй
Код:
do
// тут вводятся переменные
...
while (m <= 0 && n <= 0);
Такой цикл сработает как минимум один раз. Если пользователь неверно ввёл данные, то будет повтор до выполнения условия.
Возможно с условиями что-то не так написал, но сам разбирайся.
Дальше по тексту не смотрел. С++ знаю весьма поверхностно.
Как замечание:
При тестировании программы исходные данные лучше генерировать в программе или читать из текстового файла, подготовленного в текстовом редакторе, а не вводить ручками. Ввод ручками - это муторно и затратно по времени.
Научись читать/писать текстовые файлы.
И да, после очередного шага обработки данных выводишь результат для контроля, например, в текстовый файл.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 29.09.2019, 21:08   #17
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

По поводу goto, набрел на интересную статью на Хабре:
>>Запретный плод GOTO сладок!<<
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 30.09.2019, 00:29   #18
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,315
По умолчанию

Когда-то её встречал эту статью (подобных статей много), но и тогда и сегодня делаю один вывод:
Цитата:
Пользоваться goto надо с умом.
Этот оператор есть не только в С, но и в других языках.
В данном примере, да и в соседнем посте ТС, этот оператор не к месту.
В том случае, если ему очень захочется его оставить, следует переставить ветки в условном операторе, что бы более короткая ветка (в данном случае та, которая попала в else) была первой, естественно изменив условие.

В статье делаются не совсем корректные сравнения.
ЯВУ - это обёртки, которые призваны упростить запись алгоритма и сделать его более читабельным.
В ассемблере безусловные и условные переходы нативные, в то время как в ЯВУ это больше экзотика, естественно на уровне самого языка, а не его подноготной.
На каждый единичный пример статьи можно предложить достаточно много контр примеров.
В этой статье рассмотрено несколько пассажей, которыми можно воспользоваться для получения оценки того, насколько с умом использован этот оператор.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с массивами на С++ Мирэхико Помощь студентам 0 02.04.2013 21:59
Задача с массивами на Си glebast Помощь студентам 3 01.10.2012 12:22
Задача с массивами my_blood_is_blue Помощь студентам 6 29.12.2011 00:08
Задача с массивами Arsenx777 Мультимедиа в Delphi 4 22.03.2011 23:08
Задача с массивами Artem04 Помощь студентам 2 17.06.2009 16:46