PDA

View Full Version : کد نویسی شماره قرعه کشی



shahlaj
دوشنبه 30 تیر 1393, 12:32 عصر
سلام دوستان من میخوام برای کارت های قرعه کشی100000 شماره بسازم که این شرایط رو باید داشته باشه:
1.اصلا این شماره ها نباید تکراری باشن.
2.طول این شماره ها باید 13کاراکتر باشه.
3.این شماره ها باید شامل حرف و عدد باشند و حتما باید 5حرف انگلیسی و8عدد باشد.
4.من به تعدادصدهزارشماره با این شرایط نیازدارم.
میشه بگین چطورباید کدش رو بنویسم؟

Davidd
دوشنبه 30 تیر 1393, 12:52 عصر
تمرين كلاسيه؟
يه راه سرراستش اينه كه13 تا عدد تصادفي توليد كني و از كنارهم قرار دادن اينا يك رشته بسازي. حالا اگه كاراكتر قراره عدد باشه يك عدد از 0 تا 9 توليد ميكني و به رشته اضافه ميكني و اگه كاراكتر حرف انگليسيه يك عدد از 1 تا 26 (اگه بزرگي و كوچكي حروف مهمه از 1 تا 52 ) توليد ميكني و حرف متناظر با اين عدد به رشته اضافه ميكني. به اين ترتيب يك رشته به طول 13 خواهي داشت.
براي اينكه تكراري نباشند نياز به يك ليست هست. قبل از اضافه كردن رشته ساخته شده به ليست، چك ميكني كه رشته قبلا به ليست اضافه شده يا نه ( فكر كنم با متد Contains ) اگه قبلا اضافه نشده بود به ليست اضافه ميشه و اينكار تا زماني كه طول ليست به 100000 برسه ادامه پيدا ميكنه.

danialafshari
دوشنبه 30 تیر 1393, 13:16 عصر
با سلام


میشه بگین چطورباید کدش رو بنویسم؟
هدف این سایت یادگیری برنامه نویسی هست نه قرار دادن کد
شما شروع به تحلیل و ساخت کنید سوالی داشتید بپرسید دوستان راهنمایی می کنند
نمونه هر کدام از موارد شما هم در سایت وجود داره، اگر جستجو کنید زودتر به نتیجه میرسید
موفق باشید

shahlaj
دوشنبه 30 تیر 1393, 13:21 عصر
من این کد رو نوشتم برای حروف درست کارمیکنه ولی برای عدد نه...


121354

hamid_hr
دوشنبه 30 تیر 1393, 13:22 عصر
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789"; var random = new Random();
label1.Text = new string(
Enumerable.Repeat(chars, 13)
.Select(s => s[random.Next(s.Length)])
.ToArray());

بااین میشه رندوم ساخت که کارکتر و عدد باشه و 13 کارکتر باشه
حالا باید یکم تغییرات بدی تا 8 تا عدد باشه و 5 تا کارکتر

shahlaj
دوشنبه 30 تیر 1393, 13:37 عصر
حالا باید یکم تغییرات بدی تا 8 تا عدد باشه و 5 تا کارکتر ..........

خوب دقیقا مشکل من هم همینه اینکه نمیتونم این شرط رو اعمال کنم. من تو کدی که خودم نوشتم تقریبا معادل کد شماست فقط این شرط درست کار نمیکنه.

hamid_hr
دوشنبه 30 تیر 1393, 13:40 عصر
خب اگه مهم نیس اعداد رو بعد از حروف بیار.
یعنی اول 8 کارکتر رندوم برا حروف بگیر بعد 5 تا برا اعداد بعد append کن

shahlaj
دوشنبه 30 تیر 1393, 13:49 عصر
یعنی برای اعداد یه حلقه FOR اضافه کنم ؟
append بصورت پیچیده طراحی شده یعنی حرف و عدد رو بهم ریخته نشون میده.دقیقا نمیدونم چطوری تغییرش بدم...............:افسرده::افسرده:: افسرده:

hamid_hr
دوشنبه 30 تیر 1393, 13:58 عصر
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz";
var random = new Random();
var str = new string(
Enumerable.Repeat(chars, 8)
.Select(s => s[random.Next(s.Length)])
.ToArray());
chars = "0123456789";
str += new string(
Enumerable.Repeat(chars, 5)
.Select(s => s[random.Next(s.Length)])
.ToArray());
string SRand = "";
int x;
for (int i = 0; i < 13; i++)
{
x = random.Next(str.Length);
SRand += str[x];
str = str.Remove(x, 1);
}


label1.Text = SRand;


اینو تست کن

shahlaj
دوشنبه 30 تیر 1393, 14:27 عصر
خیلی ممنون همون چیزیه که میخوام
تستش کردم درسته.حالا این شماره تکراری هم میده؟

hamid_hr
دوشنبه 30 تیر 1393, 15:15 عصر
اره امکان داره تکراری باشه
باید هر کدومو بریزی تو یه ارایه یا لیست یا فایل یا دیتابیس یا ....... وقتی جدید تولید میشه تیت کنه اگه قبلا مثل این بوده یکی دیگه ایجاد کنه