|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.11.2012, 22:04 | #1 |
Пользователь
Регистрация: 16.10.2012
Сообщений: 27
|
Сформировать вектор x так, чтобы в нем чередовались положительные и отрицательные элементы из матрицы n
Здравствуйте, помогите пожалуйста дописать программу.
Задание. Дана квадратная матрица порядка n(n=10).Сформировать вектор x так, чтобы в нем чередовались положительные и отрицательные элементы из матрицы n. Первый элемент отрицательный. Примечание. Разбить задачу на подзадачи, таким образом, чтобы решение каждой подзадачи описывалось процедурой, а основная программа состояла бы из последовательности вызова процедур. Вот что набрал. Turbo Pascal Код:
|
08.11.2012, 22:16 | #2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Как вариант (без долгих раздумий): завести 2 массива, в один выписать положительные, в другой отрицательные, потом слить в один.
Вариант 2. Отсортировать исходный по возрастанию, а потом в цикле запихнуть элементы как надо в массив. Цикл примерно такой: Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 09.11.2012 в 06:54. |
12.11.2012, 22:18 | #3 |
Пользователь
Регистрация: 16.10.2012
Сообщений: 27
|
Sciv, спасибо. А более подробных ответов ни у кого нет? Очень нужно.
Последний раз редактировалось Freedo; 13.11.2012 в 10:33. |
13.11.2012, 10:34 | #4 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 34
|
попробуйте так
Код:
|
13.11.2012, 12:40 | #5 |
Пользователь
Регистрация: 16.10.2012
Сообщений: 27
|
NinaSSS, Спасибо Вам огромное.
Немного переделал и теперь работает как мне надо. Почти как надо, после того как чередование элементов закончилось и остались какие либо элементы, то они выводятся в конце массива, но не полностью, хвост почему-то обрубается. Последний раз редактировалось Stilet; 13.11.2012 в 17:59. |
13.11.2012, 15:01 | #6 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 34
|
а вы попробуйте ничего не переделывать и все получится
|
13.11.2012, 15:08 | #7 |
Пользователь
Регистрация: 16.10.2012
Сообщений: 27
|
Даже в том коде что Вы привели есть такой косяк, но на таком диапазоне его трудно поймать (но можно). Но если уже изменить b,c,d:array[1..50] of integer; на b,c,d:array[1..100] of integer; и задать m и n равными 10, то он станет ещё отчётливее виден.
В коде ничего не менялось, вот видите, в финальном массиве должно выводиться 43 символа, а выводится только 37. Числа -5 -1 -5 -3 -4 -3 не выводятся, хотя должны, в отрицательном массиве они есть. Последний раз редактировалось Freedo; 13.11.2012 в 15:16. |
13.11.2012, 15:59 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Freedo, я не проверял код, просто хочу уточнить, понимаете ли Вы, что задача в общем случае решения НЕ ИМЕЕТ! Решение будет только в том (частном) случае, когда положительных и отрицательных элементов строго поровну.
возьмём простой пример. матрица 2X2: -5 -7 -4 11 как будет выглядеть сформированный вектор X ? |
13.11.2012, 16:24 | #9 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 34
|
за счет того что не одинаковое количество пол-х и отр-х элементов идет сбой в конце
|
13.11.2012, 17:10 | #10 |
Пользователь
Регистрация: 16.10.2012
Сообщений: 27
|
Допустим у нас два массива.
1 2 3 4 5 -1 -2 -3 -4 -5 -6 -7 -8 -9 После их объединения должно получиться -1 1 -2 2 -3 3 -4 4 -5 5 -6 -7 -8 -9 Пока элементов поровну, они чередуются, когда положительные элементы заканчиваются, отрицательные просто выводятся по порядку. Но в данном случае мы получаем вот такой массив. -1 1 -2 2 -3 3 -4 4 -5 5 -6 -7 Тоесть половина этого остатка обрубается. Или так и должно быть? Вобщем вот вопросы: можно ли сделать так чтобы все элементы исходного массива (кроме нулей) появлялись в создаваемом векторе (сначала чередуются, потом выводится остаток)? Или может можно вообще отрубить этот хвост и оставить только чередующиеся элементы? Спасибо что отвечаете, я Вас наверное уже достал. Последний раз редактировалось Freedo; 13.11.2012 в 17:31. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сформировать одномерный массив, элементами которого являются все положительные элементы исходного массива... | sev48fire | Помощь студентам | 11 | 07.06.2012 11:06 |
С генерировать одновременно как отрицательные так и положительные числа в массиве. | Leshii | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 13.11.2011 22:31 |
Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W | leha_demi | Помощь студентам | 2 | 24.09.2011 18:12 |
Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих | Lada05 | Помощь студентам | 1 | 27.10.2010 15:44 |
Сформировать новый массив,содержащий отрицательные элементы - Задача по PASCAl. | Waia | Помощь студентам | 2 | 17.12.2008 18:27 |