Написать программку измеряющая физический размер экрана пользователя (в дюймах/сантиметрах).
Т.е. пользователь не имея линейки или других предметов размер которых он знает точно хочет узнать размер своего монитора. Как ему помочь?
Предполагается, что программа должна позволить узнать размер монитора проще, чем пользователю узнавать модель монитора, которая пользователю не известна.
Собственно программу можно не писать, предложить идею будет достаточно.
PS: Я придумал решение. Возможно кто-то предложит более изящное
13 февраля 2010 в 22:01
олимпиадник, млин хД
13 февраля 2010 в 21:02
Я С не изучал)))
13 февраля 2010 в 13:01
Знаю задача легкая, но все же может кому будет интересно!!!
Инопланетяне поймали группу философов и группу программистов, построили их в одну калонну дргуг за другом, так что каждый смотрел в затылок впередистоящего. И одели на каждого колпаки либо белого либо черного цвета в случайном порядке. И сказали тот кто угадает свой цвет выживает кто не угадает тотго убьем.
Философов осталась половина, а у программистов либо все выжили либо один погиб. Как программисты отгадывали цвета, написать алгоритм. (колличество чел в каждой группе произвольное, количество калпакв одного или другого цвета произвольно)
13 февраля 2010 в 13:01
Я Ответ программистов не знаю, я просто скопирывал сообщение!
12 февраля 2010 в 22:05
ЭЭ, ну как-бы если тебе 15 лет, это еще не повод не включать мозги. Задача-то элементарная, уровня первой задачи 1-го этапа школьной олимпиады .
12 февраля 2010 в 22:04
Мне 15 лет! чё ты хотел??)))
12 февраля 2010 в 17:00
) Даже разминкой такую задачу сложно назвать.
Напишу на C, на Delphi сам перенесшь: //pastie.org/821764
12 февраля 2010 в 16:04
//depositfiles.com/files/axx0ge5a4
10 февраля 2010 в 13:01
давай рисунок, по ссылке видимо только для зареганых пользователей
9 февраля 2010 в 23:01
Я хз, прочитал первое предложение и понял что чото тут не так: мало снега??? По моему этой зимой через чур много снега… Скорей всего это вариант прошлого года и шаманы довызывались…
9 февраля 2010 в 21:05
Задача на олипиаду))
Помогите)
Компилятор Borland Delphi 6.0
Нынешняя зима выдалась на удивление теплой и бесснежной. Снег выпадал лишь пару раз и лежал недолго. А студентам так хочется настоящей, снежной зимы! Студентам Южного федерального университета надоело ждать милости от природы. Поэтому у них появился специальный, шаманский обряд вызова осадков в виде снега. Для проведения обряда нужен шаманский бубен и хотя бы минимальный слой уже выпавшего снега.
Сущность обряда в следующем. На большой открытой площадке со снегом собирается Главный Шаман (должен быть выбран из числа профессоров Южного федерального университета) и группа студентов (чем больше, тем лучше). В течение 30 минут после начала обряда Главный Шаман непрерывно бьет в свой бубен, а студенты в это время вытаптывают на снегу огромную снежинку.
Сначала вытаптывают снежинку первого уровня (см.рисунок). Затем – снежинку второго уровня. Она получается из первой вытаптыванием на каждом конце снежинки первого уровня такой же снежинки, но в k раз меньше, чем на предыдущем уровне (см. рисунок). При этом центр меньшей снежинки совпадает с концом ребра большей снежинки. Далее процесс продолжается в том же духе. На каждом уровне длина ребра уменьшается в k раз.
Обряд завершается после того, как вытоптана снежинка уровня N. После чего Главный Шаман должен вычислить общую длину вытоптанных в снегу дорожек, записать это число на листке синей бумаги и немедленно его сжечь. Вы были назначены старшими помощниками Главного Шамана, и он поручил вам вычисление этого значения.
Входные данные: В единственной строке ввода записано три целых числа через пробел – N, L, k. L – длина ребра снежинки первого уровня (от центра до одного из концов). 1 <= N <= 15, 1 <= L <= 100, 3 <= k <= 10.
Выходные данные: Вывести округленную с точностью до 5 знаков после точки длину вытоптанной части.
Пример входных данных
2 1 3
Пример выходных данных
16.00000
Пояснение: Для первого уровня имеем 6 ребер длины 1, итого длина 6. Для второго уровня добавляются 6 снежинок с длиной ребра 1/3, но в каждой такой снежинке одно из ребер совпадает с уже протоптанным на верхнем уровне и не должно быть учтено. Значит, добавляется длина 6*5*1/3 = 10. Итого для двух уровней 6+10 = 16.
//contester.tsure.ru/index.php?apage=ViewTask.p...
8 февраля 2010 в 23:01
#10
если это экран мобильного телефона?(хотя, конечно в условии сказано, что это монитор)
8 февраля 2010 в 22:03
Мое решение похоже на #10, может чуть более удобное для пользователя, но логика та же
7 февраля 2010 в 16:01
#18, правильный ответ уже был дан в посту №5
6 февраля 2010 в 23:04
#16 наверно существует какая-то системная переменная, в которой это значение хранится…
6 февраля 2010 в 23:01
Чет я не в теме. Чем вам не нравится очень тяжелое решение #5?
6 февраля 2010 в 22:04
эта задача может и имеет решение но очень тяжелое, подумайте в разных мониторах размер пикселя различны, особенно в ноутах, и как вы собрались на каждом мониторе узнавать размер одного пикселя? что бы посчитать количество всех и сложить)
6 февраля 2010 в 22:00
Теперь, вооружившись этими знаниями, мы можем измерять размеры вещей монитором.
6 февраля 2010 в 13:02
шаг пикселей известен? если он известен, то задаем максимальное разрешение экрана(ширина, высота)… далее ширину умножаем на шаг и высоту умножаем на шаг, получаем 2 величины, которые и есть физической величиной ширины и высоты, в какой единице измерения они получатся это уже зависит от задания единицы измерения шага точек)
6 февраля 2010 в 12:04
Quyse: верно, невнимательный я_)
6 февраля 2010 в 10:01
Зачем всё это? Пользователю больше делать нечего, кроме как прикладывать к экрану бумажки/сигареты/увеличивать шрифты?
2 Женя G⎳eBaTi Глебов:
Кстати говоря, ваша формула получает размер миллиметра в пикселах, а не то, что вы написали.
6 февраля 2010 в 1:01
Попросить пользователя увеличивать размер шрифта некоторой надписи, пока она будет помещаться на экране. Посмотреть этот размер и пересчитать в дюймы/сантиметры.
5 февраля 2010 в 22:00
Придумал такой вариант: попросить пользователя растянуть, например окно, пока его ширина не будет равна ширине листа A4(или длине обычной сигареты). Дальше элементарно.
5 февраля 2010 в 16:01
2 Женя G⎳eBaTi Глебов:
Ваше решение будет работать неправильно на мониторах высокого разрешения (High DPI). LOGPIXELSX возвращает размер логического дюйма в пикселах. В общем случае логический дюйм не обязательно равен физическому.
//msdn.microsoft.com/ru-ru/library/aa970067.aspx
5 февраля 2010 в 16:00
Физический размер через WinAPI получается так:
HDC hdc = GetDC(NULL);
int width = GetDeviceCaps(hdc, HORZSIZE);
int height = GetDeviceCaps(hdc, VERTSIZE);
ReleaseDC(NULL, hdc);
width, height будут в миллиметрах
5 февраля 2010 в 16:00
я уже сталкивался ч этой задачей, но ничего не смог найти =)
5 февраля 2010 в 16:00
double mm = GetDeviceCaps(GetDC(HWND(0)), LOGPIXELSX) /2.54/10;
Это мы получили размер пикселя в миллиметрах
Дальше остается mm умножить на количество пикселей по горизонтале(вертикале)
5 февраля 2010 в 16:00
не успел _))
5 февраля 2010 в 15:04
извините, эт разрешение х_Х
5 февраля 2010 в 15:03
this.Height = SystemParameters.PrimaryScreenHeight;
this.Width = SystemParameters.PrimaryScreenWidth;
не поняла задание ну или .NET совсем меня избаловал
5 февраля 2010 в 15:03
Мария, я же написал "физический размер экрана", т.е. в дюймах/сантиметрах