:)
Оставь уже эту задачу. Хранить целое значение в вещественной переменной - это ... не правильно.
Максимальное целое число, которое может хранится в double без потери точности - 2^53. Вычисляется просто - мантисса в double 52 бита, плюс еще один виртуальный младший бит по стандарту подразумевается всегда равным 1, итого 53 бита. 2^53+1 - уже не влезает. Можешь проверить с помощью программы, про которую я писал выше, или сам протестируй.
Видимо, поэтому Страуструп и пишет, что в double не влезет, потому что 53 бита, а нужно 64. Но в том же 9 задании он пишет про "примерное количество", а не про "с точностью до зернышка". А примерное количество как раз и есть: ~1.8*10^308, а чтоб хранить это число нужно 1024 клетки, что с большим запасом перекрывает требования задачи.
Про fixed я написал в том плане, что он влияет только на способ отображения информации, и что на количество отображаемых с помощью fixed цифр то же можно повлиять с - precision, т.е. он может и 20 значащих цифр отобразить. Поэтому в своих тестах установи precision в значение побольше и тогда уже тестируй. А то у тебя возможно накладывается еще и округление при выводе, т.к. значение по умолчанию для precision - 15 символов.
И еще стандарт не гарантирует точность в 15 десятичных значащих цифр, т.к. описывает хранение двоичных данных, которые с десятичными цифрами имеют мало общего. 2^53 - имеет размер в 16 десятичных цифр. Но при этом 2^53+1 - так же 16 цифр, но уже округляется, т.к. в двоичной системе +1 добавляет еще один разряд, который уже в разрядную сетку не помещается. Видимо, поэтому, встречается упоминание про точность до 15 значащих цифр, хотя на самом деле почти в 10 раз больше.
На самом деле я тебе с самого начала пытался сказать, что ты не правильным путем решаешь задачу - в лоб, нахождением в цикле степеней двойки с помощью умножения на 2. Ответ ты, конечно получишь правильный в итоге, но это как минимум не оптимально.
Задача на самом деле решается достаточно просто. Как? Я описывал выше. Надо только понять, что в задаче используются числа - степени двойки, и вспомнить что в компе все хранится в двоичной системе счисления, а там как бы то же степени двойки имеют место быть. И не надо тут быть "олимпиадником".
Переходи к другим задачам, не зацикливайся. Желаю удачи!
Виндовый telnet - убогое гавно.
Для cmd можно сделать скрипт на VBS/JS в нем с помощью XMLHTTPRequest пытаться коннектиться к веб серверу.
А вообще, если порт не известен - нужно сканировать все порты на каждой машине, а это очень не быстро. Для таких целей, возможно проще будет использовать nmap, вроде бы она умеет работать из ком.строки.
Да вопрос я не дочитал, много текста, решил сразу с алгоритмом разобарться.
На счет double - почитайте перевод IEEE754: www.softelectro.ru/teoriy.html
В числах с плавающей точкой не обойтись одной мантиссой, число всегда нормализуется, соответственно используется и экспонента. И делается это процессором, повлиять на это, думаю нельзя.
Кстати, на том же сайте по ссылке выше есть программа, в которой можно посмотреть как выглядят числа в формате с плавающей точкой, так же она показывает разницу между исходным числом и тем, что хранится в double или float (приближенным его значением).
Ну и кроме того, во втором задании в последнем предложении: "хранить их примерное количество в переменной типа double". Раз примерное количество, то это уже не только мантисса, значит нужно взять максимально возможное положительное число для double и плясать от него (~1.8*10^308), для такого количества риса потребуется 1024 клетки. Не понятно, почему Страуструп пишет, что double не может хранить содержимое 64 клеток. Может я что-то не догоняю в этой задаче.
Ну и на последок - алгоритм с битовыми операциями можно заменить на log2(x) с округлением до целых.
qqqww121: Согласен, правда не уверен что у SQLServer Browser можно поменять порт. Эта служба как раз и предназначена, чтоб сообщать другим на каком порту работает сам SQL Server, поэтому у нее должен быть один статический порт. Если она будет слушать на другом порту, то ее саму никто не найдет :-).
Собственно MS SQL вообще может не использовать TCP/IP для работы. Поэтому и предложил другой вариант.
Но конфигурация по умолчанию с использованием TCP/IP и включенным SQLBrowser на udp/1434.
Кроме того, если к компам есть админский доступ, то можно подключаться к каждому и смотреть запущенные процессы, на предмет наличия процесса sqlserv.exe. Все это можно делать с помощью wmic, в т.ч. удаленно.
std:setlocale тебе в помощь https://habrahabr.ru/post/164193/ https://habrahabr.ru/post/107679/
С кодировками не все просто. Например, для консольного приложения в Windows есть кодировка консоли; кодировка текста, возвращаемая/принимаемые системными функциями (например получаемые от ОС имена файлов, содержащие кирилические символы); кодировка строк в исходниках программы.
Проще всего файлы программы всегда писать в UTF8 и программу собирать с поддержкой Unicode, тогда надо будет конвертировать только 2 кодировки Unicode и кодировку консоли. Причем кодировка консоли для русской винды может быть как 866 так и 1251. Все строковые литералы объявлять с префиксом L (L"текст"), для строк использовать тип wchar_t* или std::wstring.
В никсах, на сколько я знаю, дело обстоит не лучше. В консоли своя кодировка, в графической оболочке своя, в файловой системе своя (причем в каждой ФС может быть своя собственная кодировка).
Про double/float - это числа с плавающей точкой (дробные). Они представляют приближенное значение. До некоторых пор, пока хватает разрядной сетки представление точное, после - приближенное. Почитай статью на вики про числа с плавающей точкой.
Возьми старую версию - 7 попробуй.
Если хочешь сделать фаервол/шлюз - то на третьем пеньке может значительно просесть производительность, т.е. он тупо не будет справляться.
Сталкивался с этим. В моем случае был фаервол с кучей правил, возможно если фаер без наворотов, то работать будет быстрее.
Лучше, конечно АД, много проблем решит.
Но можно и без нее:
1.Всем пользователям урезать права до пользовательских
2.завести на всех компах общую учетку админа с одинаковым паролем, для серверов лучше отдельного админа.
3.включить везде удаленный рабочий стол
4.включить службу удаленного реестра и удаленный WMI (открыть tcp/135)
5.Если не выключен UAC (а лучше оставить его включенным) для ОС от Висты и дальше: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy=1 - позволяет удаленно выполнять административные задачи (https://support.microsoft.com/ru-ru/kb/951016), например полноценный доступ к админским шарам или удаленный запуск приложений с админскими привилегиями.
С убунты админить винду не удобно (нет wmi, нет виндовой ком.строки и т.п.), проще всего будет удаленно подключаться к серверу и снего выполнять все что нужно.
И осваивай cmd или ps и wmi, т.к. без АД для задач, которые надо будет производить на всех компах в сети, нужно будет делать скрипты.
Ничего толком на скриншоте не могу разобрать.
Для борьбы с вирусами попробуйте: если есть какой-либо live диск, то загрузитесь с него или загрузитесь в безопасном режиме Windows.
Почистите следующие каталоги: %TEMP%, "Temporary Internet Files" для каждого пользователя, c:\Windows\Temp.
Внимательно посмотреть ветки реестра: HKLM\Software\Microsoft\Windows\CurrentVersion\Run и аналогичную для HKCU. Поудалять оттуда все что считаете не нужным. Есть риск что удалите загрузку каких-либо частей драйверов или чего-то подобного, но винда от этого не умрет и дрова всегда можно будет переставить. Внимательно смотрите что именно удаляете, например если там написано запускать программу из каталога c:\program files\intel то это скорее всего как раз что-то от интеловского драйвера, т.е. лучше оставить, и т.п.