برنامه ای در زبان سی شارپ - گرفتن نمرات و چاپ لیست قبول شدگان

scooter2005

Member
سوالی در مورد #c

برنامه ای بخوایم بنویسیم که 20 تا نمره و عدد رو بگیره و لیست مردودی و قبولی رو بده ممنون اگر دوستان راهنمایی کنن . اینکه بخوایم بگیم 20 تا نمره بگیره باید یه بار یه رشته جدا تعریف کنیم و برای بیست تا اسم هم یه دونه جدا ؟ ممنون اگر در مورد تابع قبولی و مردودی هم تصحیح کنید

کد:
using System;
namespace ConsoleApplication109
{
    class student 
    {
         
        static void Main(string[] args)

        {
            string stu =new string[20];
            for (i=0 ; i>10 ; i++)
            {
                stu[i]=System.Console.ReadLine();
            }
            //tabe maroodi va ghabooli
            static int mgh (in  x;
            if stu[i] >10 Console.WriteLine(marood) esle if 
                Console.WriteLine(ghabool)
            }

        }
    }
 

the_king

مدیرکل انجمن
هم می توانید دو آرایه 20 عنصری جداگانه بسازید و هم می توانید یک struct برای نوع داده ترکیبی ای بسازید
که دو فیلد نام و نمره را در خود جای دهد. در ضمن آرایه stu را درست تعریف نکردید، بایستی از نوع داده []string
استفاده می کردید و نه string

کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplicationStudents
{
    class Program
    {
        public struct [B]StudentInfo[/B]
        {
            public string name;
            public double score;
        };

        static void Main(string[] args)
        {
            int n = 20;
            [B]StudentInfo[/B][] stu = new [B]StudentInfo[/B][n];
            for (int i = 0; i < n; i++)
            {
                Console.Write("Student {0})\n   Please enter name  : ", i + 1);
                stu[i].name = Console.ReadLine();
                Console.Write("   Please enter score : ");
                stu[i].score = int.Parse(Console.ReadLine());
            }
            Console.WriteLine("\nAccepted Students :");
            int count = 0;
            for (int i = 0; i < n; i++)
                if (stu[i].score > 10)
                {
                    count++;
                    Console.WriteLine("Student {0})\n   name  = {1}", count, stu[i].name);
                    Console.WriteLine("   score = {0}", stu[i].score);
                }
            Console.WriteLine("\nRefused Students :");
            count = 0;
            for (int i = 0; i < n; i++)
                if (stu[i].score < 10)
                {
                    count++;
                    Console.WriteLine("Student {0})\n   name  = {1}", count, stu[i].name);
                    Console.WriteLine("   score = {0}", stu[i].score);
                }
            Console.ReadKey(true);
        }
    }
}
 

scooter2005

Member
ممنون 3 تا سوال دارم اول اينكه در چه موارد به اين صورت بايد نقطه اي بنويسيم .
کد:
stu[i].name=Console.ReadLine()
يعني به جاي
کد:
stu[i]=Console.ReadLine()
همچنين فرق بين Write و WriteLine در كدها چيست . ضمن اينكه هردو يك كاربرد دارند
لطفا در مورد چاپ كردن كدها نيز قسمتهاي مختلف اين كد رو لطفا تشريح فرماييد
کد:
       Console.WriteLine("Student {0})\n   name  = {1}", count, stu[i].name);
 

mo.esmp

Member
ممنون 3 تا سوال دارم اول اينكه در چه موارد به اين صورت بايد نقطه اي بنويسيم .
کد:
stu[i].name=Console.ReadLine()
يعني به جاي
کد:
stu[i]=Console.ReadLine()
;[/CODE]
stu يک ساختمانه که شامل 2 رکورد نام و معدل است. وقتی که اطلاعاتی رو از کاربر ميگيرد بايد در يکی از اين 2 رکورد زخيره بشه. برای همين کار بايد اول نام ساختمان سپس با استفاده از عملگره نقطه به رکورد مورد نظر دسترسی پيدا کرد.


مهمچنين فرق بين Write و WriteLine در كدها چيست . ضمن اينكه هردو يك كاربرد دارند
لطفا در مورد چاپ كردن كدها نيز قسمتهاي مختلف اين كد رو لطفا تشريح فرماييد
کد:
       Console.WriteLine("Student {0})\n   name  = {1}", count, stu[i].name);
وقتی که اطلاعات با Console.WriteLine چاپ بشه اطلاعات بعدی در خط بعدی چاپ ميشه ولی وقتی که اطلاعات با Console.Write چاپ بشه اطلاعات بعدی در همان خط چاپ ميشه.



کد:
public double score;
stu[i].score = int.Parse(Console.ReadLine());
همچنين چون نوع متغير score از نوع double است بايد کد بالا اصلاح بشه
کد:
stu[i].score = double.Parse(Console.ReadLine());
 

scooter2005

Member
این خط رو هم زحمت توضحیش رو می کشی که 1 و 0 که داخلش هست لزوم استفادشون چیه ؟
Console.WriteLine("Student {0})\n name = {1}", count, stu.name);
 

the_king

مدیرکل انجمن
این خط رو هم زحمت توضحیش رو می کشی که 1 و 0 که داخلش هست لزوم استفادشون چیه ؟
Console.WriteLine("Student {0})\n name = {1}", count, stu.name);


نحوه استفاده از WriteLine با این شیوه ای که نوشته شده چنین است :

عبارت اول متن پیغامی است که بایستی نمایش داده شود. اگر بخواهیم در متن پیغام یک یا چند متغیر یا عبارت
خاص را نمایش دهیم، موقعیت آنها را در متن پیغام با کد هایی مثل {0} و {1} و {2} و ... مشخص می کنیم.
عددی که در بین { و } نوشته میشه، شماره پارامتر است که اولین آنها 0 است.
منظور از پارامتر، مقداری است که بعد از متن پیغام نوشته می شوند.

مثلا در کد زیر، دو پارامتر "name" و "ali" به ترتیب کد های {0} و {1} دارند، یعنی پارامتر اول و دوم :
کد:
Console.WriteLine("My {0} is {1}.", "name", "ali");
و نمایش خروجی آن چنین است :
کد:
My name is ali.

هیچ محدودیتی در موقعیت یا تعداد تکرار یک کد در متن پیغام وجود ندارد، مثلا در نمونه زیر پارامتر دوم ({1})
سه بار تکرار شده است :
کد:
            Console.WriteLine("Code = {1}{0}{2}{1}{0}{1}", "A", "B", "C");

و خروجی آن چنین است :
کد:
Code = BACBAB

در مثال زیر، پارامتر اول count است که در موقعیت {0} نمایش داده خواهد شد.
پارامتر دوم stu.name است که در موقعیت {1} نمایش داده خواهد شد.
کد:
Console.WriteLine("Student {0})\n   name  = {1}", count, stu[i].name);

به عنوان مثال اگر count برابر 2 و stu.name برابر ali باشد، خروجی آن چنین است :
کد:
Student 2)
   name  = ali
 

جدیدترین ارسال ها

بالا