PDA

View Full Version : مشکل برنامه ابجد



loveali
جمعه 01 اسفند 1393, 19:26 عصر
سلام
من یه برنامه نویس تازه کارم و تجربه زیادی ندارم
دارم یه برنامه می نویسم که از کاربر اسمشو دریافت کنه و شماره ابجدشو ببینه
کد زیررو نوشتم و لی مشکل داره
private void textBox1_TextChanged(object sender, EventArgs e)
{
int g=0;
string a;
a = textBox1.Text;


switch(a)
{
case "ا":
g += 1;
break;
case "ب":
g += 2;
break;
case "ج":
g += 3;
break;
case "د":
g +=4;
break;
case "ه":
g += 5;
break;
case "و":
g += 6;
break;
case "ز":
g += 7;
break;
case "ح":
g += 8;
break;
case "ط":
g += 9;
break;
case "ی":
g += 10;
break;
case "ک":
g += 20;
break;
case "ل":
g += 30;
break;
case "م":
g += 40;
break;
case "ن":
g += 50;
break;
case "س":
g += 60;
break;
case "ع":
g += 70;
break;
case "ف":
g += 80;
break;
case "ص":
g += 90;
break;
case "ق":
g += 100;
break;
case "ر":
g += 200;
break;
case "ش":
g += 300;
break;
case "ت":
g += 400;
break;
case "ث":
g += 500;
break;
case "خ":
g += 600;
break;
case "ذ":
g += 700;
break;
case "ض":
g += 800;
break;
case "ظ":
g += 900;
break;
case "غ":
g += 700;
break;
default:
MessageBox.Show("دقت کنید");
break;

}

label1.Text = g.ToString();

a = string.Empty;
}

آخرش هم کد a = string.Empty; رو گذاشتم چون تو رویداد text change که وقتی کاربر کلمه بعدی رو وارد کرد فقط اون کلمه رو case کنه

ممنون می شم کمکم کنید

plus
جمعه 01 اسفند 1393, 20:08 عصر
لازمه که شما توی یک حلقه، مقدار مربوط به تک تک حروف مربوط به نام رو با هم جمع کنید. با کدی که نوشتین فقط در صورتی که رشته یک کاراکتری باشه جواب درسته.

private void textBox1_TextChanged(object sender, EventArgs e) {
int g = 0;
string text = textBox1.Text;
foreach (char ch in text) {
switch (ch) {
case 'ا':
g += 1;
break;
case ...
...
...
}
}
label1.Text = g.ToString();
}

نکات:
1) خودتون اون قسمتی که ننوشتم رو کامل کنید.
2) استفاده از switch برای این کار قابل قبول نیست. باید از روش بهتری استفاده کنید. حداقل از یک دیکشنری، یا اگه رابطه مناسبی بین کاراکترها و عدد مروبطه هست از آرایه.
3) دقت کنید که از اونجایی که ما کاراکترها رو مقایسه میکنیم نه رشته هارو، از ' بجای " در switch استفاده شده.
4) متغیر text (که شما گذاشتی a) به صورت محلی تعریف شده و با هر بار رویداد event از اول مقدار دهی میشه بنابراین خالی کردن اون در آخر متد بی معنی هست.