powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Здачка для школьника
76 сообщений из 76, показаны все 4 страниц
Здачка для школьника
    #36829296
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вводят действительное число х. Надо получить целое: если число положительное ответ 1, если 0 то 0, а если отрицательное то -1.
Без операторов условия и циклов.

Весь моск уже сломал (
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829321
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, юзай оператор case или функцию Sign в Delphi :-)
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829330
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще :-)

function GetSign(Value: Integer): Integer;
begin
try
Result:=Value div Abs(-Value)
except
Result:=0
end
end;
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829333
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хитро. )
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829334
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, минус внутри Abs() не забудь убрать, чтобы не заметили что на этом форуме код взял )))
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829346
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Язык-то какой? Компилятор какой? Условия бы доопределить. Во многих языках это тривиально (тупо встроенной функцией), в некоторых чуть сложнее.
Но если для школьника, то конечно подразумевается знание внутреннего представления чисел.
Вот на Си, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int foo(double x) {
	union {
		double x;
		unsigned long long l;
	} u;
	u.x = x;
	unsigned long long sign = (u.l & ((unsigned long long) 1  <<  63 )) >>  63 ;
	u.l &= ~((unsigned long long) 1  <<  63 );
	unsigned long long not_empty = ((-u.l) & ((unsigned long long) 1  <<  63 )) >>  63 ;
	return not_empty * (not_empty -  2  * sign);
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829362
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего-то я перемудрил, всё, в общем, попроще выглядит.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
int foo(double x) {
	union {
		double x;
		unsigned long long l;
	} u;
	u.x = x;
	char sign = u.l >>  63 ;
	char not_empty = (-((u.l <<  1 ) >>  1 )) >>  63 ;
	return not_empty * (not_empty -  2  * sign);
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829415
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот так можно извратиться на сишарпе.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        private static int sign(double x)
        {
            Dictionary<string, int> d = new Dictionary<string, int>();
            d["NaN"] =  0 ;
            d["1"] =  1 ;
            d["-1"] = - 1 ;
            return d[(x / Math.Abs(x)).ToString()];
        }
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829608
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

псевдокод
Код: plaintext
out = array(- 1 ,  0 ,  1 )[(int)(in >=  0 ) + (int)(in >  0 )]

Смысл думаю понятен.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829611
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё псевдоговнокод:

Код: plaintext
1.
floor(abs( 1 +x)/(abs(x)+ 1 )) - floor(abs( 1 -x)/(abs(x)+ 1 ))

floor - округление до целого в меньшую сторону, floor(2.1) = floor(2.8) = 2
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829621
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymHett,

псевдокод
Код: plaintext
out = array(- 1 ,  0 ,  1 )[(int)(in >=  0 ) + (int)(in >  0 )]

Смысл думаю понятен.
Даже проще.

Код: plaintext
out = (int)(in >=  0 ) + (int)(in >  0 ) - 1 ;
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829691
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
round(x/abs(x))
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829692
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
eNoseround(x/abs(x)) хотя нет, с нулем проблемы :)
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первым двум символам введённым с клавиатуры уже можно дать ответ. Но автора ограничили отсутствием операторов условий и поэтому единственно верным решением здесь будет математическое определение сигнума (SGN) как написали в 3 посте, или жонглирование битами в целом (или вещественном) числе что само по себе неконцептуально.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829798
aradzabov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eNoseeNoseround(x/abs(x)) хотя нет, с нулем проблемы :)

ЛОЛ, добавь try catch в исключении принт 0 :)

если учесть что у нас школьник то вариант будет самым правильным, т.к. наш школьник математику знает и учит скорей всего примитивные операторы бейсика
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829922
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
aradzaboveNoseeNoseround(x/abs(x)) хотя нет, с нулем проблемы :)

ЛОЛ, добавь try catch в исключении принт 0 :) это есть не во всех языках. а в условии язык не указан.
с try catch будет неуниверсально.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36829990
Нелояльный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант:
Код: plaintext
1.
2.
3.
function Sign(AValue: Extended): Integer;
begin
  Result := Ceil(Tanh(AValue) *  0 . 5 ) + Floor(Tanh(AValue) *  0 . 5 );
end;
P.S. Если на больших числах выскакивает ошибка, претензии надо предъявлять к компилятору (гипертангенс определен на всей области действительных чисел).
...
Рейтинг: 0 / 0
Здачка для школьника
    #36830251
eee-pc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#include <iostream>

__int64 h(double tt)
{
	__int64 t = *(__int64*)&tt;
	__int64 a = (t>> 63 )&__int64( 1 );
	__int64 e = (t>> 52 )&__int64(0x7FF);
	__int64 m = (t>> 0  )&__int64(0x000FFFFFFFFFFFFF);

	__int64 b = -e*m;			// -val(tt!= 0 ) or  0 (tt== 0 )
	__int64 c = (b>> 63 );		// - 1 (tt!= 0 ) or  0 (tt== 0 )

	__int64 d = (a<< 63 )>> 62 ;	// - 2 (tt< 0 ) or  0 (tt>= 0 )
	
	__int64 r = (d+ 1 )*c;

	return r;
}

#define SHOW(A) std::cerr << A << '\t' << h(A) << std::endl;
void main()
{
	SHOW(- 2 . 2 );
	SHOW( 0 );
	SHOW( 2 . 3 );
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36830254
eee-pc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym
Код: plaintext
out = (int)(in >=  0 ) + (int)(in >  0 ) - 1 ;

формально, in>=0 - условие, причем не все языки трактуют истину как 1, например некоторые трактуют -1 как true... а некоторые - вообще не знают как переводить bool в int...
...
Рейтинг: 0 / 0
Здачка для школьника
    #36830459
eee-pc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eee-pc
Код: plaintext
1.
	__int64 b = -e*m;			// -val(tt!= 0 ) or  0 (tt== 0 )

эту строчку надо рассматривать под разными углами: надо пару тестовых запусков, но мне влом.
например, возможен следующий вариант:
Код: plaintext
1.
	__int64 b = -(e*m|m);			// -val(tt!= 0 ) or  0 (tt== 0 )

в любом случае "-b" будет положительной, неравной нулую при ненулевом входном аргументе
...
Рейтинг: 0 / 0
Здачка для школьника
    #36830721
hellium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
#!perl -w
sub foo {
  - ($_[ 0 ] =~ /^-/);
}
print foo( 1 . 2 ), ' ', foo( 0 ), ' ', foo(- 3 . 45 ), "\n";
Код: plaintext
0 0 -1
...
Рейтинг: 0 / 0
Здачка для школьника
    #36830746
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Код: plaintext
1.
2.
3.
4.
5.
select 
DECODE
(
  SUBSTR(TO_CHAR(x),  1 ,  1 ), '0',  0 , '-', - 1 ,  1 
)
from dual

работает :)
...
Рейтинг: 0 / 0
Здачка для школьника
    #36830827
hellium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hellium
Код: plaintext
1.
2.
3.
4.
#!perl -w
sub foo {
  - ($_[ 0 ] =~ /^-/);
}
print foo( 1 . 2 ), ' ', foo( 0 ), ' ', foo(- 3 . 45 ), "\n";
Код: plaintext
0 0 -1
упс, облажался. не заметил, что для положительных нужно 1.
тогда так:
Код: plaintext
1.
2.
3.
4.
#!perl -w
sub foo {
  ($_[ 0 ] >  0 ) || - ($_[ 0 ] <  0 );
}
print foo( 1 . 2 ), ' ', foo( 0 ), ' ', foo(- 3 . 45 ), "\n";
Код: plaintext
1 0 -1
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831062
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hellium
Код: plaintext
1.
2.
3.
4.
#!perl -w
sub foo {
  - ($_[ 0 ] =~ /^-/);
}
print foo( 1 . 2 ), ' ', foo( 0 ), ' ', foo(- 3 . 45 ), "\n";
Код: plaintext
0 0 -1

низачот - есть условие
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831065
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose
Код: plaintext
1.
2.
3.
4.
5.
select 
DECODE
(
  SUBSTR(TO_CHAR(x),  1 ,  1 ), '0',  0 , '-', - 1 ,  1 
)
from dual

работает :)
низачот. есть оператор выбора (условие)
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831112
hellium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берлuнгернизачот. есть оператор выбора (условие)
низачот. decode - функция, а не оператор.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831144
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helliumdecode - функция, а не оператор.
Принципиальной разницы нет.
Фактически, оператор -- это и есть функция, только с условием на ленивую стратегию вычисления.
Но гораздо хуже, что для "0.1" этот запрос вернёт "0", что неверно.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831163
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
junior idiotНо гораздо хуже, что для "0.1" этот запрос вернёт "0", что неверно.

не вернет. формат для TO_CHAR не указан, получится строка ".1".
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831220
eee-pc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helliumБерлuнгернизачот. есть оператор выбора (условие)
низачот. decode - функция, а не оператор.
ниважна в данном контексте
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831230
eee-pc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseне вернет. формат для TO_CHAR не указан, получится строка ".1".
в sql существует "-0" ?


вообще сам факт перевода в строку содержит некоторое количество циклов и условий....
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831249
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сабж напомнил Иднусский код

Код: plaintext
1.
2.
3.
4.
bool IsNumber (string str)
{
return (str.Replace ("0", "").Replace ("1", "").Replace ("2", "").Replace ("3", "").Replace ("4", "").Replace ("5", "").Replace ("6", "").Replace ("7", "").
Replace ("8", "").Replace ("9", "").Length ==  0 );
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831465
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
eee-pcв sql существует "-0" ? да, но оракл обрабатывает это правильно. возвращает 0.


eee-pcвообще сам факт перевода в строку содержит некоторое количество циклов и условий.... в данном примере (с декоде) - да, но можно и более универсально написать, с реплэйсом.
тогда никаких if`ов не будет :)
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831632
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно еще так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int getValue(int x)
try
{
return x/abs(x).
}
catch
{
   return  0 
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831638
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioможно еще так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int getValue(int x)
try
{
return x/abs(x).
}
catch
{
   return  0 
}
баян
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831653
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечrstudioможно еще так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int getValue(int x)
try
{
return x/abs(x).
}
catch
{
   return  0 
}
баян

Можно еще без трай кетча, прогу с багом один на миллиард, можно в принципе выпускать в продакшин

Код: plaintext
return (x+ 123456789 )/abs(x+ 123456789 );
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831681
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя нет, стормозил, работать не будет последний вариант
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831705
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
лень думать код.

алгоритм: преобразуем в строку в формате без ведущего нуля.
тогда получается три варианта первого символа:
1) 0
2) -
3) цифра (не ноль) или точка.

вот с ними и работаем (реплэйсим) "-" на "-1" и 3-й вариан (цифры кроме 0 на "1").

и результат преобразовываем в интеджер.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831716
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, покритикуйте мой вариант
А то у меня фобия, что "все игнорируют"
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831742
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettВводят действительное число х. Надо получить целое: если число положительное ответ 1, если 0 то 0, а если отрицательное то -1.
Без операторов условия и циклов.

Весь моск уже сломал (

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
try
{
   result = a / abs(a);
}
catch(чего тут в VB пишут, не помню)
{
   result =  0 
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831743
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну так вот же уже было в самом начале темы!

fd00chвот еще :-)

function GetSign(Value: Integer): Integer;
begin
try
Result:=Value div Abs(-Value)
except
Result:=0
end
end;
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831745
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечКоллеги, покритикуйте мой вариант
А то у меня фобия, что "все игнорируют"

индусы массово увольняются
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831750
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonА, ну так вот же уже было в самом начале темы!

fd00chвот еще :-)

function GetSign(Value: Integer): Integer;
begin
try
Result:=Value div Abs(-Value)
except
Result:=0
end
end;

да, правда я думал что div это деление с остатком :)
Что действительно див в делфях это обычное деление ?
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831778
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioЧто действительно див в делфях это обычное деление ?В Делфях это целочисленное деление, 3 div 2 = 1
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831786
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseeee-pcв sql существует "-0" ? да, но оракл обрабатывает это правильно. возвращает 0.


eee-pcвообще сам факт перевода в строку содержит некоторое количество циклов и условий.... в данном примере (с декоде) - да, но можно и более универсально написать, с реплэйсом.
тогда никаких if`ов не будет :)
а реплейс конечно же ветвлений не содержит...
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831788
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
try
{
   result = a / abs(a);
}
catch(чего тут в VB пишут, не помню)
{
   result =  0 
}

Чета не нравится мне деление. Еще и сингулярность надо проверять. Может одним XOR-ом обойтись?
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831790
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечrstudioможно еще так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int getValue(int x)
try
{
return x/abs(x).
}
catch
{
   return  0 
}
баян
мало что боян, так еще и не работает: у меня почему то деление на ноль ... ноль возвращает без ексепшнов
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831796
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берлuнгермало что боян, так еще и не работает: у меня почему то деление на ноль ... ноль возвращает без ексепшновНу значит работает, при ноле и должен быть ноль
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831814
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечКоллеги, покритикуйте мой вариант
А то у меня фобия, что "все игнорируют"
вроде работает - к тому же пока самое приличное из всех (если считать разрешенными функции floor -- как аппаратную, а abs -- как наложение маски)
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831825
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечrstudioЧто действительно див в делфях это обычное деление ?В Делфях это целочисленное деление, 3 div 2 = 1
в манагет языках такое деление выдаст ексепшн может быть. а в с-ах может и не выдать...
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831829
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечБерлuнгермало что боян, так еще и не работает: у меня почему то деление на ноль ... ноль возвращает без ексепшновНу значит работает, при ноле и должен быть ноль
я еще видел когда деление возвращало первый операнд...
...
Рейтинг: 0 / 0
Здачка для школьника
    #36831994
Ed.Kondakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim I As Integer

I = 0
Debug.Print I * ((I = 0) + 1) / Abs(I + (I = 0))

I = -666
Debug.Print I * ((I = 0) + 1) / Abs(I + (I = 0))

I = 666
Debug.Print I * ((I = 0) + 1) / Abs(I + (I = 0))
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832015
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with t as ( select - 25 . 5  num from dual union all
            select -(-(- 5 )) num from dual union all--ну так, поржать
            select - 0  num from dual union all
            select -(- 0 . 0000003 ) num from dual union all
            select . 45  num from dual union all
            select  14 . 9  num from dual)
select
num, round(num/abs(To_NUMBER(replace(TO_CHAR(num, '09.9EEEE'),'0.0E+00','1.0E+00'),'09.9EEEE'))) smile
from t
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832028
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БерлuнгерЯростный МечКоллеги, покритикуйте мой вариант
А то у меня фобия, что "все игнорируют"
вроде работает - к тому же пока самое приличное из всех (если считать разрешенными функции floor -- как аппаратную, а abs -- как наложение маски)
А при -1 и 1 в той формуле разве нет деления на ноль? )) В ней их еще больше. Так что, от a / abc(a) она ничем не отличается. Только абсов в ней 4, делений 2, проблемных точек, в которых происходит деление на ноль - тоже две. А смысл тот же ))
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832039
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но округление необходимо конечно же, я упустил что в задании на входе не целое, а на выходе целое. Только округление, которое возвращает целое. Если floor возвращает int значит его, если нет - значит надо посмотреть справочник по функциям.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832042
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonБерлuнгерЯростный МечКоллеги, покритикуйте мой вариант
А то у меня фобия, что "все игнорируют"
вроде работает - к тому же пока самое приличное из всех (если считать разрешенными функции floor -- как аппаратную, а abs -- как наложение маски)
А при -1 и 1 в той формуле разве нет деления на ноль? ))А подумать?
abs(x)+1 может ли быть нулем?
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832045
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

А, в скобках запутался ))) Сорри
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832053
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, всем решившим можно присвоить звание "Почетный школьник форума". И закрыть топик.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832056
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonНо округление необходимо конечно же, я упустил что в задании на входе не целое, а на выходе целое.

Зачем округление ?
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832069
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonБерлuнгерЯростный МечКоллеги, покритикуйте мой вариант
А то у меня фобия, что "все игнорируют"
вроде работает - к тому же пока самое приличное из всех (если считать разрешенными функции floor -- как аппаратную, а abs -- как наложение маски)
А при -1 и 1 в той формуле разве нет деления на ноль? )) В ней их еще больше. Так что, от a / abc(a) она ничем не отличается. Только абсов в ней 4, делений 2, проблемных точек, в которых происходит деление на ноль - тоже две. А смысл тот же ))
деления на ноль не будет.
от a / abc(a) она отличается
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832096
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioEdd.DragonНо округление необходимо конечно же, я упустил что в задании на входе не целое, а на выходе целое.

Зачем округление ?
Потому что преобразование типа вовсе не обязано преобразовать число из float-формата в int-формат. Т.е. нужна функция, которая возвращает в формате int целую часть переданного ей числа. Если преобразование типа в конкретном языке так же поступает - отлично. Если нет, ищем.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832112
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonrstudioEdd.DragonНо округление необходимо конечно же, я упустил что в задании на входе не целое, а на выходе целое.

Зачем округление ?
Потому что преобразование типа вовсе не обязано преобразовать число из float-формата в int-формат. Т.е. нужна функция, которая возвращает в формате int целую часть переданного ей числа. Если преобразование типа в конкретном языке так же поступает - отлично. Если нет, ищем.

не понял, речь о решении
х/abc(x) ?

Какая разница, -0.001/abc(-0.001) = -0.001/0.001 = -1
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832121
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio
Какая разница, -0.001/abc(-0.001) = -0.001/0.001 = -1
-0.001/0.001 = -1.000. А в условии задачи требуют вернуть целое, т.е. int
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832145
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, тогда округление нужно. Но конечно эта часть от языка зависимая.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832152
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioда, тогда округление нужно. Но конечно эта часть от языка зависимая.
floor - вообще то штука аппаратная и почти во всех языках пристуствует
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832187
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берлuнгерrstudioда, тогда округление нужно. Но конечно эта часть от языка зависимая.
floor - вообще то штука аппаратная и почти во всех языках пристуствует

может быть неявное приведение типов

например в бесике

Код: plaintext
1.
2.
3.
4.
function F() as Integer

   return  1 . 000 

end function

успешно вернет один
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832290
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioможет быть неявное приведение типов
обычно это делается так: константа на уровне компилятора приводится к наиболее удобному типу.
если же типы не совпадают и происходит обрезание (например double к int), то выводится варинг
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832629
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Платформенно-независимая версия варианта eee-pc:
Код: plaintext
1.
2.
3.
4.
5.
6.
int mySign(int c)
{
    const int shiftSize = sizeof(c) * CHAR_BIT -  1 ;
    int zeroBit = (((c | -c) & (0x1 << shiftSize)) >> shiftSize) & 0x1;
    int negativeBit = ((c & (0x1 << shiftSize)) >> shiftSize) & 0x1;
    return zeroBit * ( 1  -  2  * negativeBit);
}
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832656
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, не забываем, что х - не обязательно целое.
авторВводят действительное число х.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832727
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно что до сих пор ничего не известно о ЯП. Кст. мне вспоминается шаблон... кажется назывался "Replace Condition With Polymorphism" и мне кажется что, жонглируя булевыми, битовыми операциями и ссылками на функции можно иммитировать работу условного оператора. Хотя... кому нужен этот онанизм? Всего лишь одному преподу, чтоб потешить своё самолюбие и студенту чтобы получить наконец зачот.
...
Рейтинг: 0 / 0
Здачка для школьника
    #36832987
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
на делфи реплэйсами добился результата, но пришлось поискать нужный format выходной строки.
код приводить не буду, ибо получилось некрасиво (два преобразования6 в стринг и обратно) и громоздко...
...
Рейтинг: 0 / 0
Здачка для школьника
    #36833101
fedoseev_sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett
Member

Откуда: Бийск
Сообщений: 2384

==========================
Как можно было написать на форуме столько сообщений и "сломать мозг" над этой задачей? Холивар?

Открыл Access, получилось так:
----------------------------------
Dim i As Double
i = 0 // Здесь подставить входное значение
Dim result As Integer
result = 0
If i < 0 Then result = -1 Else
If i > 0 Then result = 1
MsgBox CStr(result)

вот и все. Достойная тема дляSQL.ru!
...
Рейтинг: 0 / 0
Здачка для школьника
    #36833178
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoseev_sv, молодец, ставлю 2.

Модератор:
мы обсуждаем тему, но не обсуждаем обсуждающих
...
Рейтинг: 0 / 0
Здачка для школьника
    #36833401
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoseev_sv,

ну и неплохо было бы действитеьлно "сломать мозг" и дочитать задание до конца )))

авторВводят действительное число х. Надо получить целое: если число положительное ответ 1, если 0 то 0, а если отрицательное то -1.
Без операторов условия и циклов.

Ваш пример (не забываем про теги src, этому специальный раздел форума посвящен):
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim i As Double
i =  0  // Здесь подставить входное значение
Dim result As Integer
result =  0 
If i <  0  Then result = - 1  Else
If i >  0  Then result =  1 
MsgBox CStr(result)

поясню: вот это операторы сравнения:
Код: plaintext
1.
2.
If i <  0  Then result = - 1  Else
If i >  0  Then result =  1 
...
Рейтинг: 0 / 0
Здачка для школьника
    #36835347
Eduard Kondakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что, решение мое для VB не подходит ?

I * ((I = 0) + 1) / Abs(I + (I = 0))
...
Рейтинг: 0 / 0
Здачка для школьника
    #36835543
Берлuнгер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eduard KondakovА что, решение мое для VB не подходит ?

I * ((I = 0) + 1) / Abs(I + (I = 0))
l=0 -- это условие вообще говоря

к тому же неизвестно что оно вернут: некоторые языки возвращяют в качестве true 1, некоторые -1, а некоторые вообще не умеют напрямую (без явных привидений) превращять bool в int
...
Рейтинг: 0 / 0
Здачка для школьника
    #36835949
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берлuнгер(без явных привидений)
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Здачка для школьника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]