Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под *nix > C++ на Unix
Перезагрузить страницу Что такое рандомные цифры и буквы
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Euxenit Euxenit вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.01.2011
По умолчанию Что такое рандомные цифры и буквы - 11.01.2011, 21:21

Здраствуйте !
Вот код программы :


#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>


int MyRand(int A, int B);
int GenerateString(char *str, int maxStrSize);

int main(int argc, char *argv[])
{
const int MAX_STR_SIZE = 31;
char strBuffer[32];
char defaultFileName[] = "idt_tab.txt";
FILE *pFile = NULL;
char *pFileName = NULL;
const unsigned long MAX_NUM_STR = 65000;
unsigned long maxNumStr = 16;
unsigned int randStart = 3;
int result = 0;
unsigned long i = 0L;

memset(strBuffer, 0x0, sizeof(strBuffer));
result = sizeof(strBuffer);

if(argc > 1) pFileName = *(argv+1);
else pFileName = defaultFileName;
printf("\n количество строк : ");
scanf("%lu", &maxNumStr);
printf("\n число для ген : ");
scanf("%u", &randStart);
srand(randStart);
if(maxNumStr > MAX_NUM_STR) maxNumStr = MAX_NUM_STR;
pFile = fopen(pFileName,"wt");
if(pFile != NULL)
{
for(i=0L; i<maxNumStr; i++)
{
result = GenerateString( strBuffer, MAX_STR_SIZE );
if(result < 0)
{
printf("\n ошибка генер строки N %lu : " \
"функция GenerateString" \
" вернула значение %d ", i, result);
}
if( fprintf(pFile,"%s\n",strBuffer) < 0 )
{
printf("\n ошибка записи строки с номером %lu",i);
break;
}
} // END for i
fclose(pFile);
}
else
{
printf("\n не удаётся открыть файл %s", pFileName);
}
printf("\n записано строк : %lu", i);
printf("\n завершение программы...\n\n");
return EXIT_SUCCESS;
} // END of main


int MyRand(int A, int B)
{
int r,z;
float res;
r = rand();
res =(float) B -(float) A;
res = res /(float) RAND_MAX;
res=res*(float)r;
res=res+(float)A;
z=(int) res;
if ((res-(float) z) > 0.5) z=z+1;
return z;
}

int GenerateString(char *str, int maxStrSize)
{
const char CA_symbIntervals[3][2] = { {'0','9'},{'A','Z'},{'a','z'} };
int j=0,i, k=0, z=0, s=0, numInterval;
int lengthStr = 0;
char ch = '\x0';
int y[2];


if( str == NULL ) return -1;
if( z > maxStrSize ) return -2;
memset(str, 0x0, maxStrSize);
z = 0;
lengthStr = MyRand(1,maxStrSize);
for(i=0; i < lengthStr; i++)
{
numInterval = MyRand(0,2);
ch = (char) MyRand( CA_symbIntervals[numInterval][0], CA_symbIntervals[numInterval][1]);
*(str + i) = ch;


if (isdigit(ch))
{
s=s+1;
j=atoi(str+i);
}
if(s==3)
{
for (k=0;k<j; k++)
{
numInterval = MyRand(1,2);
ch = (char) MyRand( CA_symbIntervals[numInterval][0], CA_symbIntervals[numInterval][1]);
*(str + k+i+1) = ch;
}
i= lengthStr;
}
}
*(str + i + 1) = '\x0';
return i;
} // END of GenerateString


Запускаем программу. Входные данные: количество строк = 1000; стартовое число для ГПСЧ (генератор псевдо случайных чисел) = 5.
Смотрим в файл idt_tab.txt :
Строка 102 : BI9U9t7umX
После третьей цифры (семёрки) - всего три символа, а не семь.
Строка 399 : L3LuU7QnJIhm5Pe
третья по счету цифра - 5, а после неё всего два символа.
То есть вместе с правильно сформированными строками встречаются и неправильные. Как их сделать кто-что скажет ?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сломалась USB клавиатура, не работают цифры. CB111 Любые вопросы от новичков 28 11.04.2014 11:59
Разные цифры Ynochka91 Pascal 0 17.12.2011 19:46
Ищем цифры на картинках Vovik-ukr Зацените! 5 08.09.2009 12:54
Меняющиеся цифры с разной частотой Konstantin_01 С/С++ 4 14.08.2008 16:54
Как обрезать лишние цифры edward24 DHTML, JavaScript, VBScript 3 19.09.2006 21:41
Как поставить цифры в массиве mig3i Assembler 1 16.06.2006 14:37
Как проверить что бы все цифры были различимы xander-007 Pascal 1 08.01.2006 14:11
Цифры зашифрованы символами VladimirStud Prolog 4 22.12.2005 01:40
Перевод цифры из числа в строку Konic Visual Basic 3 15.04.2005 16:31
Как создать программу которая будет печатать буквы и цифры Igul85 Вопросы начинающих программистов 2 15.04.2005 15:37
Как сделать рандомные буквы Warmering Вопросы начинающих программистов 2 14.01.2005 09:13
Автоматическое изменение цифры Незнайка Первый PHP 2 02.02.2003 05:26



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов