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

Вінницький форум (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
пришел к такому выходу что найбольшее произведение будет или меньше нуля (если в масиве есть или только одно плюсовое или все минусовые) или ноль(если произведение всех чисел дайет меньше нуля) или же плюсовое( два самых маленьких минуса и самый большой плюс)...

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

Magnetto 22-10-2006 20:01

Цитата:

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

и умножить ее на максимальное положительное которое заменилось на ноль....

щас пойду похаваю....потестирую на разных видах масивов....скажу если что не так...
спасибо :good:

Cronus 22-10-2006 20:04

Цитата:

Повідомлення від Magnetto
и умножить ее на максимальное положительное которое заменилось на ноль....

щас пойду похаваю....потестирую на разных видах масивов....скажу если что не так...
спасибо :good:

А зачем еще что-то множить? Задание просит вывести именно тройку чисел, а не само произведение.

Пожалуйста :) Для меня это тоже неплохая гимнастика для мозга ;)

Magnetto 22-10-2006 20:16

Цитата:

Повідомлення від Cronus
А зачем еще что-то множить? Задание просит вывести именно тройку чисел, а не само произведение.

Пожалуйста :) Для меня это тоже неплохая гимнастика для мозга ;)

таки да...твоя идея самая правильная...
не могу найти такой набор чисел который бы не подходил к твоей идеи...
спс...=)...

Cronus 22-10-2006 20:18

Цитата:

Повідомлення від Magnetto
таки да...твоя идея самая правильная...
не могу найти такой набор чисел который бы не подходил к твоей идеи...
спс...=)...

Всегда пожалуйста :)
ЗЫ: видно, годы обучения в лицее таки не прошли даром :)

EvoLuTioN | rOleX 25-04-2007 18:14

Вкладень: 1
Кто шарит в Turbo Pascal"е, просьба написать на этом языке пару задач. И по возможности обьяснить ход действий.

Teoden 25-04-2007 18:15

Цитата:

Повідомлення від EvoLuTioN | rOleX
Кто шарит в Turbo Pascal"е, просьба написать на этом языке пару задач. И по возможности обьяснить ход действий.

тебе это просто посчитать надо?

EvoLuTioN | rOleX 25-04-2007 18:25

Вкладень: 1
№2

Трикутник задано координатами вершин. Знайти периметр трикутника.

№3

Скласти програму обчислювального процесу:

а) з вик. повного розгалуження
б) з вик. короткого розгалуження

EvoLuTioN | rOleX 25-04-2007 18:26

Цитата:

Повідомлення від Teoden
тебе это просто посчитать надо?

Нет. Мне надо полный листинг программы.

*Barthez 25-04-2007 18:28

Помогите решить систему

Magnetto 25-04-2007 20:35

Цитата:

Повідомлення від EvoLuTioN | rOleX
№2

Трикутник задано координатами вершин. Знайти периметр трикутника.

№3

Скласти програму обчислювального процесу:

а) з вик. повного розгалуження
б) з вик. короткого розгалуження

№2
пусть координаты четырехугольника будут A(ax,ay) B(bx,by) C(cx.cy) D(dx,dy)
тогда периметр будет считатся за такой формулой
длина AB = sqrt(sqr(bx-ax) + (by - ay))
аналогично считаются все стороны...
№3
в первом случае делается
If
.then
..Begin
...//some code here
..End
.Else
..Begin
...//some code here
..End;

во втором
If
.Then
..Begin
...// some code here
..End;
и снова можно повторять разветвление

Teoden 25-04-2007 20:52

Program xz;
var a,b,c,rez:real;
begin a=3; b=4; c=7;
rez:=((3*sin( a+(b/c))/((sin(c-b)/cos(c-b))+a*a))+b*c;
writeln(rez);
end;
если я правильно понял условие 1 задачи

EvoLuTioN | rOleX 26-04-2007 12:44

To Magnetto & Teoden

Спасибо большое


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

Copyright ©2000 - 2025