Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
sasiskav
Member

Откуда:
Сообщений: 1
На вход поступает неотрицательное число N. Необходимо вывести все возможные числа, которые при возведении в квадрат дадут результаты, наиболее близкие к N. К примеру, для числа 10, это будут числа 3, 4, -3, -4.
8 май 20, 12:56    [22129284]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
Dima T
Member

Откуда:
Сообщений: 14760
https://www.sql.ru/forum/940953/posobie-dlya-studentov-i-shkolnikov
8 май 20, 13:01    [22129290]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50076

sasiskav
все возможные числа, которые при возведении в квадрат дадут результаты, наиболее близкие к N.

И в чём проблема? Берёшь корень от числа, округляешь верх и вниз, получаешь два числа.
Добавляешь минусы - ещё два числа. Всё, телемаркет.

Posted via ActualForum NNTP Server 1.5

8 май 20, 13:08    [22129299]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
sasiskav, покажи свой исходник который не работает.
8 май 20, 13:09    [22129301]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
Dimitry Sibiryakov

sasiskav
все возможные числа, которые при возведении в квадрат дадут результаты, наиболее близкие к N.

И в чём проблема? Берёшь корень от числа, округляешь верх и вниз, получаешь два числа.
Добавляешь минусы - ещё два числа. Всё, телемаркет.

С учётом что float/double не точно представляют числа -- мне не кажется это очевидным.
8 май 20, 19:10    [22129616]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50076

petrav
мне не кажется это очевидным.

Это потому что ты не читал об их внутреннем устройсве. Целые числа они представляют точно.

Posted via ActualForum NNTP Server 1.5

8 май 20, 19:22    [22129620]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Мы имеем дело с гипертрофированным алгоритмом квадратного корня. Только автор не сказал целые у него
или вещественные числа.
8 май 20, 19:22    [22129621]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
Dimitry Sibiryakov

petrav
мне не кажется это очевидным.

Это потому что ты не читал об их внутреннем устройсве. Целые числа они представляют точно.

Целые числа да. Но "std::sqrt()" возвращает не целое число. Так же не целые возвращают "std::floor" и "std::ceil".
8 май 20, 19:25    [22129625]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Пятница...

Давайте вспомним какие алгоритмы квадратого корня мы знаем.
8 май 20, 19:27    [22129628]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50076
petrav
Но "std::sqrt()" возвращает не целое число.

Оно становится целым после преобразования типов. Или ты не дочитал до слова "округлить"?..

Сообщение было отредактировано: 8 май 20, 19:33
8 май 20, 19:33    [22129630]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
Dimitry Sibiryakov

petrav
Но "std::sqrt()" возвращает не целое число.

Оно становится целым после std::trunc(). Или ты не дочитал до слова "округлить"?..

Я дочитал, но мне кажется Вы необоснованно заносчивы. Необоснованно заносчивы...
8 май 20, 19:36    [22129633]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
Dimitry Sibiryakov
petrav
Но "std::sqrt()" возвращает не целое число.

Оно становится целым после преобразования типов. Или ты не дочитал до слова "округлить"?..

У меня есть определённый опыт в вычислительной математике. На практике. И я много раз видел как, вроде бы, корректные вычисления на double / float ломались по совершенно неожиданным причинам. Поэтому тут я сомневаюсь во всём.
8 май 20, 19:44    [22129637]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Стряхнул пыль со старого топика.

unsigned int isqrt32(unsigned int x)
{	
	unsigned int x1;
	int s, g0, g1;
	if (x <= 1) return x;
	s = 1;
	x1 = x - 1;
	if (x1 > 65535) { s+=8; x1>>=16;}
	if (x1 > 255)   { s+=4; x1>>=8;}
	if (x1 > 15)    { s+=2; x1>>=4;}
	if (x1 > 3)     { s+=1; }
	g0 = 1<<s;

	g1 = (g0 + (x >> s)) >> 1;
	while(g1 < g0)
	{
		g0 = g1;
		g1 = (g0 + (x/g0)) >> 1;
	}
	return g0;
}


решение тривиальной алгоритмической задачи разными подходами и средствами
8 май 20, 19:47    [22129639]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
mayton
Стряхнул пыль со старого топика.

mayton, это не хардкор. Хардкор, это недавно как ко мне подошли с проблемой: мол функция арктангенса написана через разложение в ряд Тейлора, в фиксированной точке и на ассемблере. Там глюк и нужно решить проблему. Я убежал в другое крыло и избегал этих людей.
8 май 20, 20:03    [22129643]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Хардкор закончился в игре Doom под i386. Там считали тригонометрию в целых числах int32.

После этого никто так не прикалывался больше.
8 май 20, 20:05    [22129644]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
mayton
Хардкор закончился в игре Doom под i386. Там считали тригонометрию в целых числах int32.

После этого никто так не прикалывался больше.

А вот у некоторых на саппорте это и сейчас так.
8 май 20, 20:08    [22129646]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Что за аппаратная архитектура у вас? Щас любой захудалый телефон умеет вещестенные числа.
8 май 20, 20:17    [22129649]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
petrav
Member

Откуда:
Сообщений: 2118
mayton
Что за аппаратная архитектура у вас?

Это не важно часто. Но если Вы из РФ и согласны оплатить налогами замену всей техники ВПК, находящейся на балансе. Можно рассмотреть такой вопрос. Но увеличение налогов будет для всех и сразу в разы.
8 май 20, 20:23    [22129652]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Ладно. Возитесь дальше с вашим ВПК и Тейлором....
8 май 20, 20:25    [22129653]     Ответить | Цитировать Сообщить модератору
 Re: Задача C++. Цикл for обязательно. Должно быть 2 положительных числа и 2 отрицательных.  [new]
Изопропил
Member

Откуда:
Сообщений: 31468
petrav
mayton
Стряхнул пыль со старого топика.

mayton, это не хардкор. Хардкор, это недавно как ко мне подошли с проблемой: мол функция арктангенса написана через разложение в ряд Тейлора, в фиксированной точке и на ассемблере. Там глюк и нужно решить проблему. Я убежал в другое крыло и избегал этих людей.

А что такого страшного?
8 май 20, 21:50    [22129685]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить