سوال: نوشتن برنامه ای برای گرفتن معدل دانش اموزان
#1
سلام  اگه کسی جواب این سوال رو میدونه جوابش رو تا امشب بهم بگه آخه فردا امتحان دارم
برنامه ای بنویسید که معدل دانش اموزان یک کلاس رو دریافت کرده وانها را در3گروه زیر دسته بندی کند.

12<m<14
متوسط
14<m<17
خوب
17<m<20
عالی

آخرین ویرایش: 25-06-2015 ساعت 20:08، توسط SOFTAFZAR
پاسخ
#2
سلام منظورتون از میان 12 تا 14 متوسط، 14 تا 17 خوب و از 17 تا 20 عالی هست؟
اگه آره که  آسونه! اول باید لیست نمرات رو بگیری و Split کنی. مثلا من اینجا نمرات هر دانش آموز رو با Space جدا میکنم و Split میکنم. اینم تابع:
کد:
       private void CalculateName(string numbers)
       {
           if (!string.IsNullOrEmpty(numbers))
           {
               List<string> numbersList = new List<string>(numbers.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));

               List<string> num12To14 = new List<string>(),
                   num14To17 = new List<string>(),
                   num17To20 = new List<string>();

               foreach (string numValueString in numbersList)
               {
                   double numValueDouble = double.Parse(numValueString);

                   if (numValueDouble >= 12 && numValueDouble < 14)
                       num12To14.Add(numValueString);

                  else if (numValueDouble >= 14 && numValueDouble < 17)
                       num14To17.Add(numValueString);

                   else if (numValueDouble >= 17 && numValueDouble <= 20)
                       num17To20.Add(numValueString);
               }

               StringBuilder sb = new StringBuilder();
               sb.Append("متوسط");
               sb.Append(Environment.NewLine);
               sb.Append(string.Join(Environment.NewLine, num12To14));
               sb.Append(Environment.NewLine + Environment.NewLine);


               sb.Append("خوب");
               sb.Append(Environment.NewLine);
               sb.Append(string.Join(Environment.NewLine, num14To17));
               sb.Append(Environment.NewLine + Environment.NewLine);


               sb.Append("عالی");
               sb.Append(Environment.NewLine );
               sb.Append(string.Join(Environment.NewLine, num17To20));
               sb.Append(Environment.NewLine + Environment.NewLine);


               richTextBox2.Text = sb.ToString();
           }
       }


درون این تابع یک لیست ساختم و نمرات رو که با فاصله جدا شدند، split کردم و به صورت لیست رشته ای در آوردم.

بعد از اون سه تا لیست رشته ای ایجاد کردم که نمرات هر دانش آموز رو جداگانه به اون ها اضافه کنم:
لیست num12To14 برای نمرات 12 تا 14 هست
لیست num14To17 برای نمرات 14 تا 17 هست
لیست num17To20 برای نمرات 17 تا 20 هست

پس از اون یک حلقه foreach ایجاد کردم و مقدار رشته ای که numValueString هست داخل اون میچرخونم تا همه ی نمراتی که با Space جدا شدند رو در بر بگیره.
درون این حلقه میام اول مقدار رشته ای رو به صورت مقدار اعشاری double در میارم تا بتونم از طریق اعمال ریاضی اونها رو تعیین کنم.(چون نمرات کاربرها اعشاری هم خواهد بود پس از اعداد اعشاری استفاده میکنیم)

در اولین شرط یعنی:
if (numValueDouble >= 12 && numValueDouble < 14)
میگیم چنانچه مقدار numValueDouble بزرگتر مساوی 12 بود "وَ" همچنین کوچکتر از 14 بود، مقدار numValueString را به لیست num12To14 اضافه کن.(اینکار باعث میشه اعدادی که 14 تا 14.99 هستن به این لیست اضافه نشن)

شرط دوم زمانی اجرا میشه که شرط اول اجرا نشه و همچنین شرط سوم هم زمانی اجرا میشه که شرط اول و دوم نادرست باشه. (چون از else if استفاده کردم).

شرط دوم:
else if (numValueDouble >= 14 && numValueDouble < 17)
چنانچه مقدار numValueDouble بزرگتر مساوی 14 بود "وَ" همچنین کوچکتر از 17 بود، مقدار numValueString را به لیست num14To17 اضافه کن. (اینکار باعث میشه اعدادی که 17 تا 17.99 هستن به این لیست اضافه نشن)

شرط سوم
else if (numValueDouble >= 17 && numValueDouble <= 20)
چنانچه مقدار numValueDouble بزرگتر مساوی 17 بود "وَ" همچنین کوچکتر مساوی 20 بود، مقدار numValueString را به لیست num17To20 اضافه کن. (اینکار باعث میشه اعدادی که 20 هستن هم به این لیست اضافه بشن)

پس از حلقه هم یک متغیر از نوع StringBuilder ایجاد میکنیم و مقادیری که میخواهیم نمایش بدیم رو نشون میدیم.
این کد:
string.Join(Environment.NewLine, num12To14)
برای زمانی هست که یک لیست یا آرایه ای داریم و بخواهیم با استفاده از یک یا چند کاراکتر خاص نشون بدیم، هست. مثلا در اینجا هر نمره ای رو به سطر بعدی میبره.



برای استفاده از این تابع هم اینکار رو انجام میدیم:
کد:
           string str = "7 9.9 10 11.5 12.14 19 15 17 15 16.5 20 13.75";
           CalculateName(str);

مقادیر به صورت زیر نمایش داده میشن:
کد:
متوسط
12.14
13.75

خوب
15
15
16.5

عالی
19
17
20

موفق باشید.

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

آخرین ویرایش: 12-06-2015 ساعت 23:14، توسط The Arrow
See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
پاسخ
#3
خیلی ممنونم دوست گرامی.شما این برنامه رو با سی شارپ نوشتید یا php?

پاسخ
#4
توی بخش سی شارپ تاپیک دادید دیگه!
سی شارپ هست و طبق تجربه ای که دارم روی ویندوز دسکتاب(WinForm, WPF) سیلورلایت و ویندوزفون این کد کار میکنه

See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
پاسخ
#5
Dodgy Wink خیلی ممنون دوستم

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 976 23-04-2015 ساعت 09:24
آخرین ارسال: The Arrow
Note کتاب آموزشی SQLite ویندوزفون The Arrow 1 1,111 07-12-2014 ساعت 09:59
آخرین ارسال: Ali Developer
Note فصل دوم آموزش برنامه نویسی ویندوزفون - ویرایش یکم The Arrow 2 541 09-10-2014 ساعت 12:51
آخرین ارسال: rockstar
Note فصل دوم آموزش برنامه نویسی ویندوزفون The Arrow 0 392 06-10-2014 ساعت 01:46
آخرین ارسال: The Arrow
Note آموزش کامل سی شارپ (ویدئو) xMAN 2 682 02-10-2014 ساعت 12:50
آخرین ارسال: xMAN
Note آموزش برنامه نویسی ویندوز فون به همراه کتاب الکترونیکی The Arrow 0 488 02-10-2014 ساعت 12:22
آخرین ارسال: The Arrow
Note کتاب آموزش قدم به قدم سی شارپ THE KNIGHT 0 428 27-01-2014 ساعت 19:28
آخرین ارسال: THE KNIGHT
Note آموزش سی شارپ - برعکس کردن یک آرایه xMAN 0 300 26-01-2014 ساعت 12:09
آخرین ارسال: xMAN
Note آموزش سی شارپ -ایجاد و تخصیص ToolTip در زمان اجرا xMAN 0 346 26-01-2014 ساعت 12:07
آخرین ارسال: xMAN
Note آموزش سی شارپ - کار با کلاس Clipboard xMAN 0 346 26-01-2014 ساعت 12:04
آخرین ارسال: xMAN

کاربرانِ درحال بازدید از این موضوع:   1 مهمان