singlepost

Разминка мозга << На главную или назад  

Написать программку измеряющая физический размер экрана пользователя (в дюймах/сантиметрах).
Т.е. пользователь не имея линейки или других предметов размер которых он знает точно хочет узнать размер своего монитора. Как ему помочь?
Предполагается, что программа должна позволить узнать размер монитора проще, чем пользователю узнавать модель монитора, которая пользователю не известна.
Собственно программу можно не писать, предложить идею будет достаточно.

PS: Я придумал решение. Возможно кто-то предложит более изящное :)

69 ответов в теме “Разминка мозга”

  1. 31
    Александр Лищенер ответил:

    олимпиадник, млин хД

  2. 30
    Сергей Манжиков ответил:

    Я С не изучал)))

  3. 29
    Виктор Морозов ответил:

    Знаю задача легкая, но все же может кому будет интересно!!!

    Инопланетяне поймали группу философов и группу программистов, построили их в одну калонну дргуг за другом, так что каждый смотрел в затылок впередистоящего. И одели на каждого колпаки либо белого либо черного цвета в случайном порядке. И сказали тот кто угадает свой цвет выживает кто не угадает тотго убьем.

    Философов осталась половина, а у программистов либо все выжили либо один погиб. Как программисты отгадывали цвета, написать алгоритм. (колличество чел в каждой группе произвольное, количество калпакв одного или другого цвета произвольно)

  4. 28
    Виктор Морозов ответил:

    Я Ответ программистов не знаю, я просто скопирывал сообщение!

  5. 27
    Пашка Джиоев ответил:

    ЭЭ, ну как-бы если тебе 15 лет, это еще не повод не включать мозги. Задача-то элементарная, уровня первой задачи 1-го этапа школьной олимпиады .

  6. 26
    Сергей Манжиков ответил:

    Мне 15 лет! чё ты хотел??)))

  7. 25
    Пашка Джиоев ответил:

    ) Даже разминкой такую задачу сложно назвать.
    Напишу на C, на Delphi сам перенесшь: //pastie.org/821764

  8. 24
    Сергей Манжиков ответил:

    //depositfiles.com/files/axx0ge5a4

  9. 23
    Пашка Джиоев ответил:

    давай рисунок, по ссылке видимо только для зареганых пользователей

  10. 22
    Il Il ответил:

    Я хз, прочитал первое предложение и понял что чото тут не так: мало снега??? По моему этой зимой через чур много снега… Скорей всего это вариант прошлого года и шаманы довызывались…

  11. 21
    Сергей Манжиков ответил:

    Задача на олипиаду))
    Помогите)
    Компилятор 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...

  12. 20
    Il Il ответил:

    #10
    если это экран мобильного телефона?(хотя, конечно в условии сказано, что это монитор)

  13. 19
    Денис Тучин ответил:

    Мое решение похоже на #10, может чуть более удобное для пользователя, но логика та же

  14. 18
    Дмитрий Москин ответил:

    #18, правильный ответ уже был дан в посту №5

  15. 17
    Il Il ответил:

    #16 наверно существует какая-то системная переменная, в которой это значение хранится…

  16. 16
    Александр Lert ответил:

    Чет я не в теме. Чем вам не нравится очень тяжелое решение #5?

  17. 15
    Эмиль Балашов ответил:

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

  18. 14
    Александр Lert ответил:

    Теперь, вооружившись этими знаниями, мы можем измерять размеры вещей монитором.

  19. 13
    Il Il ответил:

    шаг пикселей известен? если он известен, то задаем максимальное разрешение экрана(ширина, высота)… далее ширину умножаем на шаг и высоту умножаем на шаг, получаем 2 величины, которые и есть физической величиной ширины и высоты, в какой единице измерения они получатся это уже зависит от задания единицы измерения шага точек)

  20. 12
    Женя Глебов ответил:

    Quyse: верно, невнимательный я_)

  21. 11
    Александр Lert ответил:

    Зачем всё это? Пользователю больше делать нечего, кроме как прикладывать к экрану бумажки/сигареты/увеличивать шрифты?

    2 Женя G⎳eBaTi Глебов:
    Кстати говоря, ваша формула получает размер миллиметра в пикселах, а не то, что вы написали.

  22. 10
    Евгений Примако ответил:

    Попросить пользователя увеличивать размер шрифта некоторой надписи, пока она будет помещаться на экране. Посмотреть этот размер и пересчитать в дюймы/сантиметры.

  23. 9
    Пашка Джиоев ответил:

    Придумал такой вариант: попросить пользователя растянуть, например окно, пока его ширина не будет равна ширине листа A4(или длине обычной сигареты). Дальше элементарно.

  24. 8
    Александр Lert ответил:

    2 Женя G⎳eBaTi Глебов:
    Ваше решение будет работать неправильно на мониторах высокого разрешения (High DPI). LOGPIXELSX возвращает размер логического дюйма в пикселах. В общем случае логический дюйм не обязательно равен физическому.
    //msdn.microsoft.com/ru-ru/library/aa970067.aspx

  25. 7
    Александр Lert ответил:

    Физический размер через WinAPI получается так:

    HDC hdc = GetDC(NULL);
    int width = GetDeviceCaps(hdc, HORZSIZE);
    int height = GetDeviceCaps(hdc, VERTSIZE);
    ReleaseDC(NULL, hdc);

    width, height будут в миллиметрах

  26. 6
    Алексей Боголюбский ответил:

    я уже сталкивался ч этой задачей, но ничего не смог найти =)

  27. 5
    Женя Глебов ответил:

    double mm = GetDeviceCaps(GetDC(HWND(0)), LOGPIXELSX) /2.54/10;
    Это мы получили размер пикселя в миллиметрах
    Дальше остается mm умножить на количество пикселей по горизонтале(вертикале)

  28. 4
    Женя Глебов ответил:

    не успел _))

  29. 3
    Мария Липович ответил:

    извините, эт разрешение х_Х

  30. 2
    Мария Липович ответил:

    this.Height = SystemParameters.PrimaryScreenHeight;
    this.Width = SystemParameters.PrimaryScreenWidth;
    не поняла задание ну или .NET совсем меня избаловал

  31. 1
    Денис Тучин ответил:

    Мария, я же написал "физический размер экрана", т.е. в дюймах/сантиметрах

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.