Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как вычислить ближайшее значение к другому значению?
 
 автор: NeO   (09.10.2007 в 07:40)   письмо автору
 
 

сорри если непонятно назвал тему..
в общем нужно примерно такое:

<?
$per1 
"150";
$per2 "155";

$per3 "153";

вот как тут узнать что переменная 3 имеет значение ближе к переменной 2?

   
 
 автор: Valick   (09.10.2007 в 08:02)   письмо автору
 
   для: NeO   (09.10.2007 в 07:40)
 

Этож чистой воды математика....
Вычитаете из первой третью и из второй третью и сравниваете по модулю.

   
 
 автор: Unkind   (09.10.2007 в 08:04)   письмо автору
 
   для: NeO   (09.10.2007 в 07:40)
 

Наверное,

<?php
$var1 
150;
$var2 155;

$var3 153;

if( 
abs($var1 $var3) < abs($var2 $var3) )
{
    
//$var1
}
else if( 
abs($var1 $var3) > abs($var2 $var3) )
{
    
//$var2
}
else
{
    
//eq
}
?>


Как Вы считаете?

   
 
 автор: NeO   (09.10.2007 в 08:14)   письмо автору
 
   для: Unkind   (09.10.2007 в 08:04)
 

в общем то да, но как быть если сравнивать с большим количеством чисел? (например 10)

   
 
 автор: sim5   (09.10.2007 в 08:20)   письмо автору
 
   для: NeO   (09.10.2007 в 08:14)
 

И к каму из 10 вам надо? От 0 до 9 - диапазон, что вы хотите узнать, если $per3 = 4?

   
 
 автор: NeO   (09.10.2007 в 08:32)   письмо автору
 
   для: sim5   (09.10.2007 в 08:20)
 

эммм... туплю :) часов 20 не спал.. :(
можете код написать, если не затруднит??

   
 
 автор: sim5   (09.10.2007 в 08:36)   письмо автору
 
   для: NeO   (09.10.2007 в 08:32)
 

Код чего? Что вы знать то хотите в случае с массовым набором чисел? У вас десять чисел - от 0 до 9, например. Есть число 3, и что в этом случае вы хотите знать?

   
 
 автор: NeO   (09.10.2007 в 08:42)   письмо автору
 
   для: sim5   (09.10.2007 в 08:36)
 

что например тут:

<?php 
$per0 
52
$per1 155
$per2 15152
$per3 15512
$per4 1552
$per5 15455
$per6 1252
$per7 1155
$per8 152
$per9 1575

$ky 153

переменная $ky ближе (а может вообще равна) к переменной $per8
зы.. пойду ка я посплю наверн чуток :(

   
 
 автор: sim5   (09.10.2007 в 08:51)   письмо автору
 
   для: NeO   (09.10.2007 в 08:42)
 

А зачем это? Случайно не для того чтобы рассортировать?

   
 
 автор: NeO   (09.10.2007 в 09:08)   письмо автору
 
   для: sim5   (09.10.2007 в 08:51)
 

нет... просто нужно узнать одно число..

   
 
 автор: sim5   (09.10.2007 в 09:14)   письмо автору
 
   для: NeO   (09.10.2007 в 09:08)
 

Тайное?) Ну если из всего, то видимо надо найти к нему два крайних ближайших значения. А вот дальше что, определять чему оно более "пренадлежит"?

   
 
 автор: sim5   (09.10.2007 в 08:05)   письмо автору
 
   для: NeO   (09.10.2007 в 07:40)
 


<?
if ($per3 > ($per1 $per2)/2//$per3 тяготеет $per2  

   
 
 автор: Valick   (09.10.2007 в 08:08)   письмо автору
 
   для: sim5   (09.10.2007 в 08:05)
 

у вас равенство пропало)

   
 
 автор: sim5   (09.10.2007 в 08:10)   письмо автору
 
   для: Valick   (09.10.2007 в 08:08)
 

Куда?

   
 
 автор: Valick   (09.10.2007 в 08:58)   письмо автору
 
   для: sim5   (09.10.2007 в 08:10)
 

В у словии не сказано, что при "посередине" переменная 3 тяготеет к переменной 2)

   
 
 автор: sim5   (09.10.2007 в 09:09)   письмо автору
 
   для: Valick   (09.10.2007 в 08:58)
 

В условии сказано, чему более тяготеет 153 - к 150, или к 155. Другими словами, если вторым числом было бы 190, то:
150 + 190 = 340 / 2 = 170. В этом случае 153 не больше 170, и явно тяготеет к 150.
В чем я не прав?

   
 
 автор: Valick   (09.10.2007 в 09:39)   письмо автору
 
   для: sim5   (09.10.2007 в 09:09)
 

а терь тоже самое для 100, 200 и 150...

   
 
 автор: sim5   (09.10.2007 в 09:49)   письмо автору
 
   для: Valick   (09.10.2007 в 09:39)
 

Запросто - в этом случае это "золотая середина", а значит 150 равно может тяготеть и первому, и второму из чисел. Я опять не прав?

   
 
 автор: Valick   (09.10.2007 в 10:17)   письмо автору
 
   для: sim5   (09.10.2007 в 09:49)
 

цитирую сам себя:
автор: Valick (09.10.2007 в 08:58) письмо автору
В у словии не сказано, что при "посередине" переменная 3 тяготеет к переменной 2)


А раз не сказано то мы не можем не принимать во внимание это.

Более того, скажу честно ваш вариант мне нравиться, только условие надо подкорректировать под него и всё станет на свои места)

   
 
 автор: sim5   (09.10.2007 в 10:27)   письмо автору
 
   для: Valick   (09.10.2007 в 10:17)
 

1. В баке моей машины 100 л бензина, я знаю на 100%, что не доеду до пункта В.
2. В баке моей машины 200 л бензина, я знаю на 100%, что доеду до пункта В.
3. В баке моей машины 150 л бензина, я знаю, что могу доехать до пункта В, а могу и не дехать.

В третьем случае - это риск, и мне просто надо решить, что делать, рисковать или нет. Так и с этими числами, все это практически то же, что и правила округления чисел. Или не так?
А у словия пишут исходя из требуемого - на здоровье, как атору нужно, пусть так и пишет. Или я опять не прав? )

   
 
 автор: bronenos   (09.10.2007 в 10:31)   письмо автору
 
   для: sim5   (09.10.2007 в 10:27)
 

все зависит от ветра и кол-ва заправок на дороге + надо ехать на низкой скорости =)

   
 
 автор: sim5   (09.10.2007 в 10:33)   письмо автору
 
   для: bronenos   (09.10.2007 в 10:31)
 

Вот-вот, это как раз для Valick'a резюме будет. :)

   
 
 автор: Valick   (09.10.2007 в 10:41)   письмо автору
 
   для: sim5   (09.10.2007 в 10:27)
 

Вот здесь вы точно не правы))
Программа для того и программа что бы вам не приходилось выбирать "рисковать или нет, доедете или нет", всё должно быть чётко заранее оговорено. И в приведённом условии (не устану повторять) ничего не сказано про золотую середину, а следовательно нельзя исключать третий вариант (=).
Блин, всё что я пытаюсь этим доказать так это только то что надо грамотно подходить к постановке задачи, и доказать не вам а NeO. Лично я в вас не сомневаюсь и знаю, что вы доедете до пункта "В", хотябы по той причине, что знаете как "вызвать эвакуатор" в случае если у вас кончиться бензин. (а то и конистрочка в загашнике имеется ;) )

   
 
 автор: sim5   (09.10.2007 в 10:58)   письмо автору
 
   для: Valick   (09.10.2007 в 10:41)
 

Соображаем на двоих:


<?php
$n1 
100;
$n2 300;
$n3 150;
switch(
$r = ($n1 $n2)/2) {
 case 
$n3 $r: echo 'Сообразить лучше со вторым!';
                break;
 case 
$n3 $r: echo 'Сообразить лучше с первым!';
                break;
 default: echo 
'Без разницы с кем пить.';
}
?>

В этом случае я все предусмотрел? Я думаю, если не напьюсь, то доеду, либо одно из трех. ))

   
 
 автор: Valick   (09.10.2007 в 11:05)   письмо автору
 
   для: sim5   (09.10.2007 в 10:58)
 

В вашем случае напьётесь однозначно))
Предлагаю заменить 'Без разницы с кем пить.' на 'Поеду трезвым.', всё равно шансов мало для третьего варианта))))

Или 'Пьем втроём, удочки не брать из машины не выходить!!!' - тоже неплохо.

Ох придёт модератор, придётся и ему наливать, иначе как пить дать поудаляет и нихто никуда не поедет)

   
 
 автор: sim5   (09.10.2007 в 11:21)   письмо автору
 
   для: Valick   (09.10.2007 в 11:05)
 

Я это не для модератора - пусть пьет, если хочет. Я к тому, что все зависит от того, чего я хочу, а может мне хватит и 100 руб. первого товарища, подумаешь не допью, но если мне этого достаточно, то дальше я вправе уже не думать (соображать:)).

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования