PDA

View Full Version : سوال: جمع فیلدهایی از کلاس که نامشان در رشته وارد شده.



applytc
سه شنبه 26 فروردین 1393, 09:02 صبح
سلام دوستان.اگه بتونین تو این تمرین کمکم کنین بینهایت ممنونتون میشم.

a=1
b=2
c=10
d=15
e=32
توی تکس باکس اگه کاربر مثلا بنویسه
bdeac
بعد وقتی کاربر روی دکمه اوکی کلیک کرد
برنامه تمام این حروف را که در بالا تعریف شد را با هم جمع کند و جمع حاصل را تقسیم بر 6 کند و باقیمانه را در خروجی نمایش بده
من از یکی از بچه های توی سایت انجمن سوال کردم گفت باید دستور
enumeration
را یاد بگیرید.
در یکی از سایتها دستور
enum
را یاد گرفتم ولی متوجه نشدم
میشه راهنماییم کنین که باید چکار کنم؟؟؟؟

zayens
سه شنبه 26 فروردین 1393, 10:13 صبح
1- مشقاتونو خودتون انجام بدین تا ما هم بینهایت ممنونتون بشیم
2- اسم تاپیکت هم درست نیست
3- قوانین این سایت را اول بخون
4- این تاپیک حذف میشود

applytc
سه شنبه 26 فروردین 1393, 12:48 عصر
آخه اینجا نوشته بود سوالاتتان را مطرح کنید گفتم منم مطرح کنم.بدجوری مخمو تو فرغون گذاشته.الان 3 جلسه است که کلاس میرم
تمام دستوران شرطی و حلقه رو تو سایت یاد گرفتم و حتی enum را هم مطالطه کردم..وقتی موفق نشدم گفتم تو این انجمن مطرح کنم.
نمیگم برنامشو برام بنویسید .فقط راهنمایی کنید از کدوم دستور باید استفاده کنم.
بازم ممنونم

esafb52
سه شنبه 26 فروردین 1393, 12:53 عصر
شما با یه حلقه foreche بین حروف بچرخ و مقادیر رو تا انتهای طول روشته ات تو یه متغییر بذار در داخل حلقه از دستور سویچ استفاده کن بقیه اش با خودت

applytc
سه شنبه 26 فروردین 1393, 12:58 عصر
دست گلتون درد نکنه ممنونم

esafb52
سه شنبه 26 فروردین 1393, 13:09 عصر
دفعه بعد بیشتر فکر کنین
int count;
private void button1_Click(object sender, EventArgs e)
{

foreach (char c1 in textBox1.Text)
{
string tem = c1.ToString();
switch (tem)
{
case "a":
count += 1;
break;

case "b":
count += 2;
break;
case "c":
count += 3;
break;
}
}
MessageBox.Show(count.ToString());

}

مهرداد صفا
چهارشنبه 27 فروردین 1393, 20:57 عصر
سلام.
با استفاده از Reflection فیلدهای کلاس رو بگیرید و با کاراکتر های رشته مورد نظر join کنید؛ حالا مقدار برگشتی GetValue را Select کنید و در آخر هم Sum رو بدست بیاورید.
با این روش در صورت زیادتر بودن تعداد فیلدها هم بدون نیاز به شرطهای متواری و تو در تو اجرا می شود:


//بسم الله الرحمن الرحیم
//اللهم صل علی محمد و آل محمد

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int a, b, c, d, e;
public Form1()
{
InitializeComponent();
a = 1;
b = 2;
c = 3;
d = 4;
e = 5;

}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(
(textBox1.Text as IEnumerable<char>)
.Join<char,FieldInfo,string,int>
(this.GetType().GetFields(BindingFlags.NonPublic|B indingFlags.Instance )
, ch => ch.ToString(), f => f.Name,
(ch, f) =>Convert.ToInt32(f.GetValue(this)))
.Sum().ToString());
}
}
}
[/