singlepost

Проблема в написании программы, которая хаотично отражаэт фразы! << На главную или назад  

Привет!
Если кто знает подскажыте, как написать программу которая будет выводить в Memo с определьоным интервалом времени разного рода фразы. У меня проблема заключается в том что я не могу написать в одной строке присвоении различных переменных, т.е. S: = 'a' + IntToStr (Random (100)); memo1.Text: = s;. А а1, а2, а3, а4 .. хотел сделать константами и в них содержать фразы. Возможно есть другой способ и я неправильно подошел к этому! Буду очень благодарен за помощь! Спасибо всем кто откликнется!

+++++

Подскажите алгоритм написания такой программы:
- Я имею 1000 фраз ().
- Нужно чтобы каждые 30 сек. Выводилась 1 фраза из 1000, и так по закрытом кругу.
- Как этого можно достичь.

38 ответов в теме “Проблема в написании программы, которая хаотично отражаэт фразы!”

  1. 26
    Евгений Тихонов ответил:

    Если что по коду не понятно, пиши… Там в папке с программой создаётся типизированный текстовый файл и заполняется на 1000 фраз (именно фраз, а не строк). Если его нет создаётся по новой, а если есть, то используется сущесутвующий

  2. 25
    Андрій Андрушко ответил:

    Да, скачал. Спасибо. Подходит.

  3. 24
    Евгений Тихонов ответил:

    А прогу то скачал? )) Там генератор на 1000 фраз и случайный вывод их через случайные промежутки + старт и пауза процесса

  4. 23
    Андрій Андрушко ответил:

    Всем большое спасибо за помощь. Очень благодарен. Я выбрал такой вариант:
    [code delphi]
    const
    n = 5;
    StringList : array[0..n]= ('Фраза1', 'Фраза2', 'Фраза3', 'Фраза4', 'Фраза5');
    // в тексте программы писать:
    Memo.Lines.Add(StringList[Random(n)]);
    [/code]

  5. 22
    Нгамдкхе Кверос ответил:

    #20 обычно делают иначе или организуют множество из которого исключают элементы и каждый раз соответственно размер множетсва меньше или в случае попадания i в уже использованный элемент выбирают первый неиспользованный после него(статистика случайности чуть хуже но на подобных задачах это не должно быть критично).

  6. 21
    Евгений Тихонов ответил:

    Типизированный файл позволяет переместится на любой блок заданного типа :)

  7. 20
    Алексей Бозняков ответил:

    А в дельфях что ли нет перемещение указателя на проивольную длину?
    Я предлагаю следующий алгоритм:
    Бесконечный цикл
    Идём по файлу. считываем строку. запоминаем позицию.
    Как таймер сработал перемещаем указатель на указатель предыдущей строки+длину самой строки. Счиваем итд.
    Хм реализация в ваших руках. Никогда не программил на Дельфях.

  8. 19
    Евгений Тихонов ответил:

    Михаил Гыгыгышник Пеньков, Представь что у тебя 10.000 строк и из них 9.999 уже выведены, осталось только одна. Какова вероятность того, что строка будет найдена через час? ) Вообще задачка наверное не для вуза и там не будут требовать такого

  9. 18
    Евгений Тихонов ответил:

    Афтар, Я написал кое чё, глянь :)

    //narod.ru/disk/13580792000/Archive.zip.html

  10. 17
    Михаил Пеньков ответил:

    #15 Ты представляешь, сколько времени уйдет у чела, чтобы присвоить в среде этим элементам строки? Хотя… можно опять же программно открыть файл, и перед каждой строчкой прописать там mas[i]:=… и потом все в среду скопировать.
    Но на сколько тогда увеличивается размер исполняемого файла… сколько он оперативы будет жрать? В любом случае удобнее файлом, тупо задать: считывать строку №рандом. Кстати, думаю, что желательно исключать, т.е. не показывать уже показанные фразы. Как вы эту проблему решите? Массив булеанов? XDDD Спать хочу – туго соображаю, но думаю легче тупо дописывать в файл в конец прочитанной строки еще один какой-нить условный символ, а потом проверять строку на его наличие. А потом, когда все строчки с этим символом – значит прога пошла по второму кругу и пусть теперь не дописывает, а удаляет эти символы, и т.д.

  11. 16
    Евгений Тихонов ответил:

    Проще в файлике это всё хранить

  12. 15
    Влад Темный ответил:

    вот и вывод в какой группе программисты помогают, а в какой [админ]вахтерша[/админ] только скобки расставляет.

  13. 14
    Илья Козлов ответил:

    а почему бы не использовать массив, состоящий из 1000 элементов типа string (или что-то в этом роде), затем в собственно программе генерировать случайное число – порядковый номер элемента массива:

    var
    strings: array[0..999] of string;
    i:integer;

    {где-то тут заполняем массив строками, откуда-то их берем))}
    begin
    {обработчик события компонента timer}
    i:=random(1000);
    Memo1.text:=strings[i];
    end;

  14. 13
    Евгений Тихонов ответил:

    Дописываю, ловлю баги, ща будет звездолёт

  15. 12
    Михаил Пеньков ответил:

    #10 Где у тя хранятся фразы, оттуда и бери.
    #1 "А а1, а2, а3, а4 .. хотел сделать константами и в них содержать фразы…." Охренеть! 1000 констант??? Оо

  16. 11
    Андрій Андрушко ответил:

    нет

  17. 10
    Евгений Тихонов ответил:

    Проблема решена? Я свободен? )

  18. 9
    Андрій Андрушко ответил:

    аi-ю строчку откуда взять? з файла!!!!

  19. 8
    Подмогаев Свят ответил:

    упячкаГенератор ?)

  20. 7
    Владимир Муромский ответил:

    Cоздаешь Timer, в свойство Interval ему пишешь 30000, в событии OnTimer следующее:

    var
    i: integer;
    s: string
    begin
    i:= Random(1001);
    s:=// здесь берешь i-ю строчку
    Memo1.text:= s;
    end;

  21. 6
    Андрій Андрушко ответил:

    огромное спасибо

  22. 5
    Евгений Тихонов ответил:

    Дельфи? Написать?

  23. 4
    Андрій Андрушко ответил:

    Да

  24. 3
    Евгений Тихонов ответил:

    Ну тогда жди

  25. 2
    Андрій Андрушко ответил:

    Жду!!!

  26. 1
    Владимир Муромский ответил:

    Если не можешь в одной строке написать присвоение различных переменных, то напиши begin, далее в несколько строк, а в конце end;

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