TGrey[WoLf]
|
|
« : 06-01-2007 03:53 » |
|
Добрый день. Хочу спросить, как я могу осуществить 1 проект. У меня на форме расположены: 3 Lable, 1 Timer, 1 Button. И вот при нажатии на кнопку Lable->captions, должны изменяться на рызные числа(буквы), до тех пор, пока не будет нужная комбинация. Меня интерисует ,как ето осущевствить способом просто Rnd и Rnd из уже заданых чисел(букв).
Сам я все сделал, кроме подстановки чисел(букв). Если можно подскажите по етой части.
|
|
« Последнее редактирование: 06-01-2007 08:34 от Finch »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #1 : 06-01-2007 09:00 » |
|
TGrey[WoLf], Я поменял название темы. Согласись, что тот кто будет искать подобный вопрос. Тема "Помогите" ему ничего не даст при поиске. Из твоего путаного объяснения, я понял что тебе нужно из чисел, получаемых генератором, составлять какие либо комбинации знаков. Ну первое, что приходит на ум: #include <stdlib.h> #include <stdio.h> #include <time.h>
void SetRND(char ch[5]) // делаем комбинацию из 4 знаков { char kom[16]="asdlir13578cxmk"; //Тут твоя комбинация знаков for(int i=0; i<4; i++) ch[i]=kom[rand() % 15]; ch[4]=0; } int main() { char ch[5]; srand(time(0)); SetRND(ch); printf("%s\n",ch); return 0; }
|
|
« Последнее редактирование: 06-01-2007 09:26 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
TGrey[WoLf]
|
|
« Ответ #2 : 07-01-2007 01:24 » |
|
Да, действительно не поможет) В преть буду стараться называть темы, как положено.
Но а всеже, как мне етот код использовать в обработчике кнопки? Мне же надо, чтоб после нажатия кнопки captions изменялись до определенного момента.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #3 : 07-01-2007 12:53 » |
|
TGrey[WoLf], не понятно - тебе результат нужно получить, или эффект?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
TGrey[WoLf]
|
|
« Ответ #4 : 08-01-2007 01:38 » |
|
New=>Aplication На форму кидаю кнопку и 3 лейбла. В событиях кнопки захожу в событие OnClick и туда надо вписать код, чтобы лейблы генерировали разные числа. Я б и сам сделал, но незнаю как в БСБ делать Rnd
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #5 : 08-01-2007 11:56 » |
|
У тебя хелпов нет? Вроде бы rand() - ф-ия стандартная...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
TGrey[WoLf]
|
|
« Ответ #6 : 09-01-2007 01:40 » |
|
Rand() не действует.... И ни в 1 хелпе или книге неуказывалось, как делать случайные числа.
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #7 : 09-01-2007 04:51 » |
|
Вот простейший код в стройке, в таймере генерятся случайные числа: //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;
//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) { randomize(); Timer1->Enabled=TRUE; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { int r=random(100); Label1->Caption=IntToStr(r); if(r==50) Timer1->Enabled=FALSE; } //---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TTimer *Timer1; TLabel *Label1; void __fastcall Button1Click(TObject *Sender); void __fastcall Timer1Timer(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #8 : 09-01-2007 08:30 » |
|
Header File
stdlib.h
Category
Math Routines
Syntax
#include <stdlib.h> int rand(void);
Description
Random number generator.
rand uses a multiplicative congruential random number generator with period 2 to the 32nd power to return successive pseudo-random numbers in the range from 0 to RAND_MAX. The symbolic constant RAND_MAX is defined in stdlib.h.
Return Value
rand returns the generated pseudo-random number. Header File
stdlib.h
Category
Math Routines
Syntax
#include <stdlib.h> void srand(unsigned seed);
Description
Initializes random number generator.
The random number generator is reinitialized by calling srand with an argument value of 1. It can be set to a new starting point by calling srand with a given seed number.
Return Value
None.
|
|
« Последнее редактирование: 09-01-2007 08:31 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
TGrey[WoLf]
|
|
« Ответ #9 : 10-01-2007 01:36 » |
|
Да, спасибо мне 1 хороший человек по ICQ помог. Вот только для быстрой генерации чисел он добавил Randomize(); в __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Randomize; } И вот только вместо Random(100); Я писал Rand() % 10; Еффект идет РНД до 9. В чем разница етих способов?
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #10 : 10-01-2007 02:18 » |
|
Функция Randomize() необходима. Она инициализирует генератор случайных чисел, вызов ее обязателен. Функция rand() - random number generator возвращает псевдо-случайное число в пределах от 0 до RAND_MAX. Значение RAND_MAX можешь поглядеть в подключаемой библиотеке. Оператор % возвращает остаток от деления. Чувствую, что необходимо пояснить, что такое остаток от деления. Поясню примерами, аннологию поймешь. На твоем примере 256%10=6 100%10=0 32%10=2 //////// 256%100=56 100%100=0 32%100=32 Этот оператор относится к синтаксису языка С, что говорит о том, что ты его плохо знаешь. Тебе здесь помогло кучу хороших человеков, но ты это увы не понял.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
zubr
Гость
|
|
« Ответ #11 : 10-01-2007 04:55 » |
|
В чем разница етих способов? rand - функция от Microsoft Random - от Borland, думаю на основе rand Random, думаю, несколько удобнее.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #12 : 10-01-2007 06:38 » |
|
zubr, ошибаешься: rand() - ф-ия из стандартной библиотеки С.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
zubr
Гость
|
|
« Ответ #13 : 10-01-2007 16:43 » |
|
RXL, согласен, это меня заклинило.
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #14 : 11-01-2007 10:30 » |
|
Дело в том, что он обе функции написал с большой буквы. Функции библиотек языка С с маленькойц пишутся. Может это обертки, которые в конечном итоге используют стандартную библиотеку? Я просто Билдер никогда не использовал, если что не так
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
TGrey[WoLf]
|
|
« Ответ #15 : 14-01-2007 02:08 » |
|
Ну, а что вы хотите... Я только учусь! Поетому и задаю ети глупые вопросы(глупые для вас, поскольку вы уже знаете, как и что). Да, действительно random(x) мне больше по душе. А пишу большими буквами, не потому что незнаю, как писать, а потому что привык так писать.
|
|
|
Записан
|
|
|
|
|