Вінницький форум

Вінницький форум (https://forum.vn.ua//index.php)
-   Технічний форум (https://forum.vn.ua//forumdisplay.php?f=8)
-   -   Pascal (https://forum.vn.ua//showthread.php?t=3859)

reider 29-08-2006 23:25

Цитата:

Повідомлення від Smartfon
запишешь?

Постараюсь. Если че напишу, просто у меня сидюк не пишущий нада к друзякам идти.

LittlIS 09-10-2006 17:24

как открывать файл для чтения...я забув :(
assign(f,'fail');
а потом?

Ну я 09-10-2006 17:35

Var fiiii:text;
Reset(fiii);
Read(fiii, ///);
Close (fiiii);

LittlIS 09-10-2006 17:37

Цитата:

Повідомлення від Ну я
Var fiiii:text;
Reset(fiii);
Read(fiii, ///);
Close (fiiii);

спасибо =)

Magnetto 22-10-2006 19:21

є массив чисел які не більші 3000 по модулю...потрібно знайти таких три числа добуток яких найбільший з цих всіх чисел....вивести ці числа(з котрих добуток найбільший) на екран...
допоможіть будь ласка...

Magnetto 22-10-2006 19:42

Цитата:

Повідомлення від Cronus
Найди тройку чисел с самыми большими модулями так, чтобы либо они все были со знаком "+", либо два из них были со знаком "-".
Сырой вариант алгоритма:
1. Отсортируй массив по спаданию модуля числа (т.е. получи что-то такого плана: [-10 -9 8 7 5 -3 2 1 0].
2. Бери первую тройку (-10, -9, 8), проверяй условие: ЕСЛИ произведение >=0 ТОГДА вывести его на экран ИНАЧЕ:
1) Если все числа негативные - отбрось меньшее из них и замени его ближайшим по отсортированному массиву позитивным;
2) Если два поз. и одно нег. - отбрось меньшее по модулю и замени на ближайшее число по массиву с противоположным знаком;
Вроде бы так :rolleyes:

у меня что то типа твоей идеи была....но застрял я на том что если например взять ряд чисел например 9 8 0 -1 то походу часое большое число должно быть из 9 8 и 0 ....но оно не проходит... так как даст ноль...
возможен такой быть вариант...
чтоб его нету нужно проверить все виды соединения чисел...вот тут я и соатновился...мозги уже не работают.. :cry:

нада чтоб было максимальное из всех возможных..

http://zvn.uriit.ru/
задание третьего занятия...
може тут лучше описано

Cronus 22-10-2006 19:53

Цитата:

Повідомлення від Magnetto
у меня что то типа твоей идеи была....но застрял я на том что если например взять ряд чисел например 9 8 0 -1 то походу часое большое число должно быть из 9 8 и 0 ....но оно не проходит... так как даст ноль...
возможен такой быть вариант...
чтоб его нету нужно проверить все виды соединения чисел...вот тут я и соатновился...мозги уже не работают.. :cry:

нада чтоб было максимальное из всех возможных..

http://zvn.uriit.ru/
задание третьего занятия...
може тут лучше описано

Если ты отсортируешь именно по модулю, то все нули соберутся в конце массива, и в выбранные тобой числа не попадут.
Т.е. твой пример [9 8 0 -1] будет отсортирован в вид [9 8 -1 0]. Так, как произведение первых трех меньше нуля, тогда макс. произведение, удовлетворяющее условие задачи, действительно будет ноль!
Можно еще и так:
1. Найти макс число во всем массиве.
2. Заменить его на ноль и продолжать поиск с таким рассчетом, чтобы произведение было найбольшим. И т.д, и т.п.
Но этот алгоритм не пройдет такой тест:
10 9 -8 -7 6 5 4, т.к.: 10*9*6=540, а 10*(-8)*(-7)=560.
Хотя, в принципе, и первый алгоритм не пройдет этот тест. Мда, надо подумать...

Magnetto 22-10-2006 19:57

Цитата:

Повідомлення від Cronus
Если ты отсортируешь именно по модулю, то все нули соберутся в конце массива, и в выбранные тобой числа не попадут.
Т.е. твой пример [9 8 0 -1] будет отсортирован в вид [9 8 -1 0]. Так, как произведение первых трех меньше нуля, тогда макс. произведение, удовлетворяющее условие задачи, действительно будет ноль!
Можно еще и так:
1. Найти макс число во всем массиве.
2. Заменить его на ноль и продолжать поиск с таким рассчетом, чтобы произведение было найбольшим. И т.д, и т.п.
Но этот алгоритм не пройдет такой тест:
10 9 -8 -7 6 5 4, т.к.: 10*9*6=540, а 10*(-8)*(-7)=560.
Хотя, в принципе, и первый алгоритм не пройдет этот тест. Мда, надо подумать...

просто уже пятый час сижу над задачками....к вечеру голова вообще не варит...+ еще заболел..температура...

пришел к такому выходу что найбольшее произведение будет или меньше нуля (если в масиве есть или только одно плюсовое или все минусовые) или ноль(если произведение всех чисел дайет меньше нуля) или же плюсовое( два самых маленьких минуса и самый большой плюс)...

если же отсеивать по модулю тогда будет намного больше гемороя со знаком числа
чем сеять по фактическому значению числа

Cronus 22-10-2006 19:58

ОК, идея такова:
1. Найти максимальное число Max_poz, т.е. найбольшее из положительных. Заменить его в массиве на ноль.
2. Найти ДВЕ пары числе: 2 найбольших положительных и два найбольших (по модулю) отрицательных. Проверить, что больше: Poz1*Poz2 или Neg1*Neg2. Вывести в файл Max_poz, и соответствующую пару чисел.

Cronus 22-10-2006 20:00

Цитата:

Повідомлення від Magnetto
пришел к такому выходу что найбольшее произведение будет или меньше нуля (если в масиве есть или только одно плюсовое или все минусовые) или ноль(если произведение всех чисел дайет меньше нуля) или же плюсовое( два самых маленьких минуса и самый большой плюс)...

Если есть хоть одно положительное число в массиве, то можно найти произведение, что будет больше нуля (минус на минус дает плюс).


Поточний час: 16:21. Часовий пояс GMT +3.

Copyright ©2000 - 2025