![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
RAVE |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Условие задачи: "Сформировать из строк матрицы B матрицу C, расположив строки так, чтобы количество положительных элементов в строке возрастало с увеличением её порядкового номера". Помогите решить её, плз. (процедуры и функции использоваться не должны).
|
samec |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
var вот как то так.... |
RAVE |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Немного не понял этот момент:
Цитата for k:=1 to n-1 do for i:=1 to n-k do Откуда взялись какие-то "k", "n-1", "n-k" ? Может должно быть так, если судить по Var'у:
Или может я ошибаюсь, и чего-то недопонял. Поясни, если не сложно. |
samec |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
Немного не понял этот момент: Откуда взялись какие-то "k", "n-1", "n-k" ? Может должно быть так, если судить по Var'у:
Или может я ошибаюсь, и чего-то недопонял. Поясни, если не сложно. Нет, в коде всё верно, это метод пузырьковой сортировки. Просто я забыл переменную k объявить. в разделе объявления переменных нужно вот так написать:
|
RAVE |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
А нельзя как-нибудь обойтись без "пузырьковой сортировки", а то я такого не проходил вообще...
|
samec |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
А нельзя как-нибудь обойтись без "пузырьковой сортировки", а то я такого не проходил вообще... почему же нельзя, можно. Выбирай любой алгоритм: Алгоритмы сортировок |
RAVE |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Посмотрел алгоритмы и наткнулся в "Сортировке простой вставкой " на такие вещи:
Pred(i) Succ(j) Dec(j) move(source, sorted, SizeOf(arrType)) Что они значат? |
мисс_граффити |
![]()
Сообщение
#8
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
pred(x) - предыдущее целое
succ(x) - следующее целое dec(x) - x:=x-1 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата move(source, sorted, SizeOf(arrType)) Перемещает блок данных размером SizeOf(arrType) из source в store, проще говоря копирует масств source в stored -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
RAVE |
![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хммм.... чёт у мя не вяжется
Вот задача на основе моих знаний +совет выше:
Но чёт не пашет... Подскажите, если где ошибка(и) есть Сообщение отредактировано: RAVE - 4.05.2007 14:31 |
samec |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
так нужно не количества положительных элементов менять местами:
а строчки матрицы U[i,j] и U[i+1,j] сделать можно вот так:
Сообщение отредактировано: samec - 4.05.2007 14:25 |
RAVE |
![]()
Сообщение
#12
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Урааа.... прога заработала!
![]() Но если не сложно, можешь мне пояснить вот этот момент For k:=1 to m-1 do For i:=1 to m-k do begin почему именно так? И можно ли это представить как-нить попроще\попонятней? Сообщение отредактировано: RAVE - 5.05.2007 12:45 |
samec |
![]() ![]()
Сообщение
#13
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
Это циклы, составляющие метод сортировки "пузырьком".
Суть метода в следующем: Для примера возьмём m=5, A=(32861), сортиовать будем по возрастанию, т.е. в конце получаем следующую последователоьность А=(12368). 1 просмотр - просмативаем последовательность 32861, сравнивая слева направо два соседних элемента и переставляя их, если надо: 1 сравнение: 32861 ---> 23861 2 сравнение: 23861 3 сравнение: 23861 ---> 23681 4 сравнение: 23681 ---> 23618 Наибольший элемент 8 "всплыл" (поэтому метод и назывется "пузырьковый":) ) в конце последовательности. 2 просмотр - просмативаем последовательность 2361, сравнивая слева направо два соседних элемента и переставляя их, если надо: 1 сравнение: 2361 2 сравнение: 2361 3 сравнение: 2361 ---> 2316 Наибольший элемент 6 "всплыл" в конце последовательности. 3 просмотр - просмативаем последовательность 231, сравнивая слева направо два соседних элемента и переставляя их, если надо: 1 сравнение: 231 2 сравнение: 231 ---> 213 Наибольший элемент 3 "всплыл" в конце последовательности. 4 просмотр - просмативаем последовательность 21, сравнивая слева направо два соседних элемента и переставляя их, если надо: 1 сравнение: 21 ---> 12 Наибольший элемент 2 "всплыл" в конце последовательности. Итак, для последовательности из из m элементов число просмотров будет равно (m-1). В каждом k-ом просмотре производится (m-k) сравнений элементов. В результате каждого просмотра в конце текущей просматриваемой последовательности "всплывает" наибольший элемент. Вот подробное словесное описание алгоритма: 1 просмотр. Последовательность из m элементов просматривается с лева на право. Каждые 2 соседних элемента А[i] и А[i+1] сравниваются (то есть 1-ый и 2-ой, 2-ой и 3-ий и т.д.) и, если А[i] > А[i+1], то эти элементы ереставляются. В результате наибольший элемент "всплывает" в конце рассматриваемой последовательности из m элементов. 2 просмотр. Последовательность из (m-1) первых элеентов просматривается слева направо. Каждые 2 соседних элемента А[i] и А[i+1] сравниваются (то есть 1-ый и 2-ой, 2-ой и 3-ий и т.д.) и, если А[i] > А[i+1], то эти элементы ереставляются. В результате наибольший элемент "всплывает" в конце рассматриваемой последовательности из (m-1) элементов. ... (m-1) просмотр. Последовательность из m-(m-2)=2, то есть из 2-х элементов просматривается слева направо... теперь стало понятнее??? ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:29 |