Junior
Статус: Не в сети Регистрация: 12.07.2005 Откуда: Москва
ИМХО это невозможно. Если существуют 2 варианта действий программы, значит алгоритм разветвляется. Попробуй изобразить блок-схему так, чтобы она не ветвилась. Мне слабо Может они имели в виду case of?
Member
Статус: Не в сети Регистрация: 17.11.2003 Откуда: Петроской
вот как было, дается задача про производительность труда. Рабочие выполняют за час N деталей. и Дана норма M в день выполнения, надо узнать, смогут ли рабочие выполнить работу, если дается M и N. Результатом выполнения должен быть либо "Выполнят" либо "Не выполнят". Решить задачу с использованием линейного алгоритма.
дык я показал преподу через IF THEN ELSE, а он говорит, что можно сделать линейно, но вот секрет не стал расскрывать, [censored]
Member
Статус: Не в сети Регистрация: 01.04.2005 Откуда: Москва-Лубянка
Строго говоря, Ord(X) возвращает целочисленное представление X.
Сводится это к тому, что если X — Char, то возвращается его ASCII-код, если X — Boolean, то возвращается 1 для True и 0 для False, и если X — пользовательский перечислимый тип, то возвращается порядковый номер значения т.е.
Код:
var x: Char; x:='A'; writeln(Ord(x)); — имеем 65 ________________________ var x: Boolean; x:=True; writeln(Ord(x)); — имеем 1 ________________________
type DaysOfTheWeek= (Sun,Mon,Tue,Wed,Thu,Fri,Sat); var x : DaysOfTheWeek; x:=Tue; writeln(Ord(x)); — имеем 2 (Sun — 0, Mon — 1 и т.д.)
M=24 и N=rand(12) выбрал от фонаря. 8-часовой рабочий день остался. Переменная $a просто фиксирует сколько раз рабочие выполнили норму.
Ну и для себя поставил выводить время в начале и конце, чтоб замерять можно было.
Athlon 64 2.4GHz 512L2, 1GB DDR@218, всякая дрянь на фоне работает, памяти перл использовал 2 МБ
Последние результаты, когда код подправил и откомментировал
68 линейно и 64 нелинейно.
Edit: Если убрать умножение на 8, а М=3 тот же результат получается за 57 и 52 секунды соответственно. Это я пытаюсь убрать всё постороннее
Member
Статус: Не в сети Регистрация: 04.06.2005 Откуда: Оксфордшир
мда, на си циклы быстрее крутятся.
Интересно почему random у нас разные результаты дал?
А чтобы более достоверные результаты получить, сделай 1е9 или 2е9 циклов И ещё: от перестановки мест результат не изменится? Если сначала выполнить линейный код
_________________ Таких людей уже нет, а скоро совсем не будет BTEAM_Shifty
Member
Статус: Не в сети Регистрация: 01.04.2005 Откуда: Москва-Лубянка
Alecmg А у тебя рандом 25 млн дал?
Я остановил F@H
Получил довольно стабильные результаты — линейный 2.6, нелинейный — 2.9, в любом порядке. Добавлено спустя 1 минуту, 35 секунд Линейный быстрее, обрати внимание)) Добавлено спустя 6 минут, 59 секунд По поводу рандома — у меня всё логично, меньше или равны трём четыре значения — {0,1,2,3}, это треть от тех двенадцати, которые дает рандом. Добавлено спустя 4 минуты, 24 секунды Кстати, уборка умножения не даёт на 1e8 результата, который можно было бы заметить..
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения