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

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

Войти
Регистрация
Восстановить пароль
 
Zazy
42 / 42 / 13
Регистрация: 14.04.2013
Сообщений: 181
#1

Кому не трудно, нужна идея как сделать проще - C++

11.12.2013, 01:35. Просмотров 417. Ответов 1
Метки нет (Все метки)

Всем добра! собственно вот задание
Дана целочисленная матрица A(M,N). Продублировать в матрице каждый столбец,
являющийся перестановкой натуральных чисел от 1 до М.
т.е. что нужно сделать допустим исходный массив
1, 2, 3, 4, 5
2, 1, 8, 9, 0
если столбе равен перестановкой натуральных чисел от 1 до М, дописать этот столбец в конце
результат
1, 2, 3, 4, 5, 1, 2
2, 1, 8, 9, 0, 2, 1
мой алгоритм мне кажется муторным, может кто каких идей подбросит:
А[2][5] =
{{1, 2, 3, 4, 5},
{2, 1, 8, 9, 0}};
Создать два массива размерностью T1[M], T2[M], первый заполнить от 1 до М T1[M] = {1, 2}, во второй массив помещать столбцы массива А1 делать сортировку и сравнивать с T1, если массивы равны счетчик увеличить на 1 (это для создания динамического массива куда будет занесен результат), создаю двумерный динамический массив, еще раз запускаю цикл на сравнения, те что проходят по условию записываю в конец массива (i =1, N + i, это момент еще не до конца продуман) а потом просто заполняю динамический массив элементами A[M][N]
фух надеюсь понятно изложил.
ЗЫ. только идеи, прошу код не писать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2013, 01:35     Кому не трудно, нужна идея как сделать проще
Посмотрите здесь:

задачи c++ кому не трудно решите - C++
Matrix14. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вы- вести ее элементы следующим образом («уголками»): все...

задачи c++ кому не трудно решите - C++
Matrix25. Дана матрица размера M × N. Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение...

Кому не трудно допишите пожалуйста комментарии! - C++
#include <iostream.h> #include <conio.h> #include <math.h> int main () { int i,b=10,k=5,t=0.5,s=100,n=100; int kv,tv; int...

Составьте блок схему пожалуйста кому не трудно - C++
очень надо , просто я не понял эту тему болел , а надо сдавать

Как сделать проще? - C++
Здравствуйте, вот написал программу, которая реализовывает функцию определения значения некоторой элементарной функции, зависящей от...

Как проще всего сделать интерфейс для программы на С++? - C++
Подскажите в какой как и с помощью какой программы проще всего сделать интерфейс для программы написанной на С++ :)

Как можно сделать данный кусок кода меньше и проще? - C++
Задние: Заменить все элементы с четными номерами на значение второго положительного элемента массива. void change() //замена элементов...

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

Нужна идея для написания программы - C++
Я хочу создать какую нибудь программку,что бы мои друзья удивились!Просто я неплохо знаю С++.И хочу написать какую нибудь полезную...

Нужна идея или хотя бы пример (задание по теории автоматов) - C++
Входной язык содержит операторы цикла типа for (…; …; …) do, разделенные символом ; (точка с запятой). Операторы цикла содержат...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
11.12.2013, 07:53     Кому не трудно, нужна идея как сделать проще #2
Кодом, пожалуй, нагляднее будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const unsigned M = 10;
bool Is1toM(unsigned* arr)
{
bool Found[M] = { false };
for (unsigned i = 0; i < M; ++i)
 {
 unsigned val = arr[i] - 1;
 if (val < 0 || val >= M)   //Вообще-то unsigned не может быть меньше нуля, это для иллюстрации и на случай замены на signed
  return false;
 if (Found[val])
  return false;
 Found[val] = true;
 }
return true;
}
То есть для всех чисел от 1 до М у нас есть флаги в массиве, что данное число уже обнаружено при просмотре входного массива. Если элемент входного массива не есть число от 1 до М - фейл, если обнаруживаем второе вхождение - аналогично.
Ответ Создать тему
Опции темы

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