سوال آماتوری در c# - محیط و مساحت دایره و حلقه گرفتن ورودی

scooter2005

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

این برنامه برای این هست که شعاع دایره رو بگیره و محیط و مساحتش رو بده ولی کار نمی کنه

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

namespace ConsoleApplication83
{
    class Program
    {
        static void Main(string[] args)
        {
            int r, environ, area;
            r = int.Parse(Console.ReadLine());
            environ = 3.14  *r * r;
            area = 2 * 3.14 * r;
            Console.WriteLine(environ, area);

        }
    }
}


این سوال هم یه حلقه for هست که 5 تا عدد میگیره
ولی هیچ کدوم کار نمی کنه
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication77
{
    class Program
    {
        static void Main(string[] args)
        {
            int i;
            const int n = 5;
            Console.ReadLine();
            for (i = 0; i < n; i++) ;
                Console.WriteLine(i);
                Console.ReadKey(true);


        }
    }
}
 

the_king

مدیرکل انجمن
کد ویرایش شده اول :

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double r, environ, area;
            r = double.Parse(Console.ReadLine());
            environ = Math.PI * r * r;
            area = 2 * Math.PI * r;
            Console.WriteLine("environ = {0}\narea = {1}",environ, area);
            Console.ReadKey(true);
        }
    }
}

1) نوع متغیر ها را int در نظر گرفتید، در حالی که با بکارگیری 3.14 محاسبه اعشاری انجام داده اید. زبان #C خیلی
روی نوع متغیر حساس است، اگر بایستی حتما نوع یک متغیر int باشد، بایستی پیش از انجام محاسبه مقدار را
به اعشاری تبدیل کنید، مثلا (environ = 3.14 * (double) (r * r پیش از بکارگیری مقدار r * r ، آنرا با double
تبدیل می کند.

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

3) مقدار PI با دقت بالای اعشاری در #C موجود است.

هدف تون از نوشتن کد دوم را درست متوجه نشدم. دریافت 5 عدد از کاربر؟ اعداد دریافت شده قرار است کجا قرار بگیرند
و چه عملی رویشان انجام شود؟
به هر حال کدتان از نظر دستوری صحیح است ولی عملکرد اش منطقی نیست :

1) در کدتان نوشته اید ;()Console.ReadLine و مقداری که توسط ReadLine برگردانده می شود را در هیچ متغیری
قرار نداده اید، در واقع مقداری را از کاربر می خوانید و بدون استفاده دور می ریزید.

2) درست در انتهای کد حلقه for از ; استفاده کرده اید که پایان کدهای حلقه را مشخص می کند. درواقع حلقه for ای
که نوشته اید هیچ کد میانی ندارد و ReadLine ای که در ادامه آن نوشته اید بیرون از ساختار حلقه است، نه در داخل آن.
 

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

بالا