PDA

View Full Version : سوال: کاراکتر تصادفی و ذخیره و جست جو در فایل..



moh_mov
جمعه 11 دی 1388, 08:23 صبح
سلام...
راستش مشکلی دارم تو c!
می خوام یک کد 10 کاراکتری تصادفی تولید شه...گشتم چیزی به اون صورت پیدا نکردم....
مثل : A2F7DVHK39
و دوم اینه که تو یک فایل من مثلا این کد بالا رو می سازم و تو فایل ذخیره میکنم...و مثلا 5 کد رو می گذارم...حالا می خوام این کد رو توش پیدا کنم و بخونم چجوری؟:ناراحت::ناراحت:

Salar Ashgi
جمعه 11 دی 1388, 11:47 صبح
برای مورد اول ، الگوریتم های متفاوتی میتونن ذکر بشن ، بعنوان مثال تابع زیر این کار رو انجام میده :



#include <iostream>
#include <conio>
#include <stdlib>
void Random_string(int size){
char *a = new char[size];
int x;
int y;
for(int i=0;i<size;i++){
x = 65+rand()%26;
y = 48+rand()%10;
if(i%2==0)
a[i] = (char)(x);
else
a[i] = (char)(y);
}
for(int i=0;i<size;i++)
cout<<a[i];
cout<<endl;
}
//=============================
int main(){
srand(time(0));
int n;
cin>>n;
Random_string(n);
getch();
}


در مورد سوال دوم هم اگه به توابع خواندن و نوشتن در فایل آشنایی داشته باشید ، براحتی میتوانید این

کار را انجام دهید .

موفق باشید .

clover
جمعه 11 دی 1388, 12:09 عصر
سلام...
راستش مشکلی دارم تو c!
سلام
البته این کد ++C هست، اما امیدوارم بتونه کمک کنه:

// Store Random Stings in file

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <stdlib.h>
#include<time.h>

char *randString(int);

int main()
{
const int strLength = 6;
const int strNumbers = 5;
char *strRandCode;
char *strInput = new char[strLength];

srand(time(0));

ofstream ofsout("test.dat", ios::trunc);
ifstream ifsin("test.dat", ios::in);

for (int counter = 0; counter < strNumbers; ++counter)
{
strRandCode = randString(strLength);

for (int i = 0; i < strLength; ++i)
ofsout.put(strRandCode[i]);

ofsout.put('\n');
delete[] strRandCode;
}

ofsout.flush();

if (ifsin)
while (ifsin.getline(strInput, '\n'))
cout << strInput << endl;

ofsout.close();
ifsin.close();

getch();
return 0;
}

char *randString(int strLength)
{
int counter = 0;
int rndChar;

char *rndString = new char[strLength];

--strLength;

while (counter < strLength)
{
rndChar = rand()% 43 + 48;

if (rndChar < 58 || rndChar > 64)
{
rndString[counter] = rndChar;
++counter;
}
}

rndString[counter] = '\0';
return rndString;
}

moh_mov
جمعه 11 دی 1388, 12:13 عصر
برای مورد اول ، الگوریتم های متفاوتی میتونن ذکر بشن ، بعنوان مثال تابع زیر این کار رو انجام میده :


.

ممنون....ولی آیا این کد تلفیق عدد و حروف میده؟

Salar Ashgi
جمعه 11 دی 1388, 12:22 عصر
ممنون....ولی آیا این کد تلفیق عدد و حروف میده؟

این کد همیشه رشته های تصادفی متشکل از ارقام و حروف بزرگ رو تولید میکنه .