
12.09.2007, 18:25
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами:
10531106
Репутация:
1338
|
|
_Great_ Молодец, как всегда, показал высоты
srand((unsigned)time(&t));
printf("5 случайных чисел от 0 до 99 \n\n");
for (i=0; i < 5; i++) printf("%d\n", 0 + rand() % 100);
Вся проблема в том, что при каждом запуске программа выдает одну и туже последовательность случайных чисел. 
|
|
|

12.09.2007, 19:20
|
|
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
С нами:
10140806
Репутация:
932
|
|
Код:
#include "time.h"
srand(time(NULL)); //создаём генератор
ИМХО: ранд\сранд - дерьмо. Тока добавляет размер к файлу + нелюбит /ENTRY:WinMain , я делаю так:
Код:
int rand = (GetTickCount())%1000 //получили рандомное 3-х значное число
Последний раз редактировалось Ky3bMu4; 12.09.2007 в 19:23..
|
|
|

12.09.2007, 20:00
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами:
10370602
Репутация:
472
|
|
ИМХО: ранд\сранд - дерьмо. Тока добавляет размер к файлу + нелюбит /ENTRY:WinMain
Ты вообще имеешь понятие о том, что делает ENTRY:WinMain ? rand/srand и не должны работать так, ведь это CRT. Вот неплохой пример:
Код:
// -----------[ random stuff ]-----------
// (c) drmist\STNC 2006
#include "windows.h"
#include <stdio.h>
unsigned long rs_randseed;
void _srand();
unsigned long _rand();
void _srand()
{
rs_randseed = GetTickCount();
}
unsigned long _rand()
{
rs_randseed++;
return (rs_randseed*0xF02CE551) + 0x7FF2742B;
}
int main()
{
int a;
_srand();
a=_rand();
char *pa;
printf("This: ",itoa(a,pa,10));
return 0;
}
// ^^^ ^^^
// -----------[ random stuff ]-----------
|
|
|

12.09.2007, 21:14
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
С нами:
10721066
Репутация:
4360
|
|
Ni0x, а память выделять для pa, видимо, уже не принято?
Пример, очевидно, стоит переписать:
Код:
int main()
{
int a;
char pa[10];
_srand();
a=_rand() % 1000;
printf("This: %s\n",itoa(a,pa,10));
return 0;
}
Последний раз редактировалось _Great_; 12.09.2007 в 21:17..
|
|
|

12.09.2007, 21:15
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
С нами:
10721066
Репутация:
4360
|
|
Ky3bMu4
ИМХО: ранд\сранд - дерьмо. Тока добавляет размер к файлу + нелюбит /ENTRY:WinMain , я делаю так:
Чтобы делать такие смелые заявления, нужно сначала разобраться, что такое C Run-Time Library (CRT)
|
|
|

12.09.2007, 21:25
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами:
10393869
Репутация:
2032
|
|
10x 2 Ni0x, который подсказал правильный вариант, но потом куда-то ушел...
char lpStr[10];
GetDlgItemText(IDC_EDIT1,lpStr, sizeof(lpStr));
MessageBox(&lpStr[1], 0, 0);
но теперь выводятся все символы, начиная с lpStr[1], а не просто второй символ эдита. нужно выводить посимвольно... какие есть идеи?
|
|
|

12.09.2007, 21:25
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами:
10370602
Репутация:
472
|
|
_Great_ , пример не мой, копирайты стоят, просто показан принцип генерации чисел, кому действительно надо - исправит.
|
|
|

12.09.2007, 21:53
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами:
10531106
Репутация:
1338
|
|
Piflit Попробуй так:
char lpStr[10];
char cTmp;
GetDlgItemText(IDC_EDIT1,lpStr, sizeof(lpStr));
for(int i=0; i<sizeof(lpStr); i++)
{
cTmp = lpStr(i) ;
MessageBox(0,&cTmp, 0, 0x40);
}
//Ni0x, _Great_ , Ky3bMu4 Спс за примеры и помощь. Пошел тестить псевдо случайность 
Последний раз редактировалось GlOFF; 12.09.2007 в 21:55..
|
|
|

16.09.2007, 15:44
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами:
10393869
Репутация:
2032
|
|
как перевести тип из char * в unsigned char?
|
|
|

16.09.2007, 15:53
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
С нами:
9999746
Репутация:
1318
|
|
Указатель ты можешь привести к другому типу, но он всегда останется указателем, а просто к типу unsigned char ты его никогда не приведёшь... Если ты имел в виду первый случай, то сделай так
char *char_ptr;
(unsigned char*)char_ptr; // Приведение типа указателя
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|