تریس چند برنامه در c#

draria

Member
سلام
میشه زحمت تریس این برنامه ها رو بکشید
کد:
static void main
{
int[] num= new int ]12]
int k=0
for (k=num.lenght-1; k>0;k--)
num [k] = k;
num [k] = 0;
int l=2;
while (k<num.length - 1)
{
k++;
if (num [k] - (num[k] / 2 ) * 2 ==0)
console.writeline (num[k]);
}
}

===========================================
کد:
Static void main
string mystr="she hast 2 children . the elder one has 42 years and the other has 16".
int c1=0;
int c2=0;
for (int c=0 ; c> mystr.length; c++)
{
if (mystr[c] >= 'a' && mystr [c] <= 'z')
{
c1++;
}
if (mystr[c] >= '0' && mystr[c] <= '9')
{
c2=convert.toint32(mystr[c].tostring())+c2;
}
}
console.writeline(c1.toint()  + "and " +  c2.tostring());
}
 

the_king

مدیرکل انجمن
لطفا سوال هایتان را در گفتگو های جداگانه بپرسید.

کد را ویرایش و تکمیل کردم، اشکال داشت و به درستی کامپایل نمی شد.
این کد یک آرایه 12 خانه ای می سازد که به ترتیب اعداد 0 الی 11 در آن قرار می گیرند
و سپس هر عنصری از این آرایه که زوج باشد (بجز عنصر اول که اندیس و مقدار 0 دارد) چاپ می گردد.

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] num = new int[12];
            int k = 0;
            int l = 2;
            for (k = num.Length - 1; k > 0; k--)
                num[k] = k;
            num[k] = 0;
            while (k < num.Length - 1)
            {
                k++;
                if (num[k] - (num[k] / 2) * 2 == 0)
                    Console.WriteLine (num[k]);
            }
            Console.ReadKey(true);
        }
    }
}

و Trace کد برنامه :

تعریف کردن آرایه 12 عنصری از نوع int :
کد:
            int[] num = new int[12];

تعریف کردن متغیر برای حلقه :
کد:
            int k = 0;

تعریف کردن یک متغیر اضافی که هیچ استفاده و نقشی در برنامه ندارد :
کد:
            int l = 2;

یک حلقه برای اینکه عناصر آرایه را از عنصر آخر (num.Length - 1) الی عنصر دوم (1) بصورت معکوس پیمایش کند :
کد:
            for (k = num.Length - 1; k > 0; k--)

مقدار هر عنصر آرایه را برابر اندیس آن عنصر قرار می دهیم، (مثلا 1 = [1]num و 2 = [2]num و 3 = [3]num و ...)
کد:
                num[k] = k;

حلقه مذکور به دلایل نامعلوم عنصر اول آرایه 0 را در بر نمی گیرد پس آنرا بطور جداگانه مقدار دهی می کنیم (k برابر 0 است) :
کد:
            num[k] = 0;

تا زمانی که k از آخرین اندیس آرایه (num.Length - 1) کوچکتر باشد حلقه while ادامه خواهد داشت :
کد:
            while (k < num.Length - 1)
            {

مقدار k یک واحد افزایش می یابد (در ادامه کد های این حلقه while ، مقادیر k شامل اعداد 1 الی 11 خواهد بود) :
کد:
                k++;

اگر عنصر [num[k را بر 2 تقسیم کنیم (num[k] / 2) و حاصل را دوباره بر 2 ضرب کنیم قسمت اعشاری حاصل تقسیم
به دلیل غیر اعشاری بودن [num[k (چون نوع متغیر int است) از بین می رود. مثلا عدد 7 زمانی که بر 2 تقسیم شود
حاصل تقسیم 3 می شود و نه 3.5
اگر عدد حاصل را از خود مقدار اولیه [num[k کم کنیم، یا مقدار 0 بدست می آید (اگر عدد زوج باشد) یا مقدار 1 بدست
می آید (اگر عدد فرد باشد).

حال ما شرط if را طوری تنظیم می کنیم که اگر عدد [num[k زوج باشد :
کد:
                if (num[k] - (num[k] / 2) * 2 == 0)

آنگاه مقدار [num[k را چاپ می کنیم :
کد:
                    Console.WriteLine (num[k]);
            }

این سطر را اضافه کردم تا برای خاتمه برنامه منتظر فشردن کلیدی از سوی کاربر باشد :
کد:
            Console.ReadKey(true);

اگر بر اساس این الگوریتم، شخصا برنامه را می نوشتم :

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] num = new int[12];
            int k;
            for (k = 0; k < num.Length; k++)
                num[k] = k;
            for (k = 1; k < num.Length; k++)
                if ((num[k] % 2) == 0)
                    Console.WriteLine (num[k]);
            Console.ReadKey(true);
        }
    }
}
 

the_king

مدیرکل انجمن
لطفا کدهایی را برای Trace کردن قرار بدهید که قابل Trace کردن باشند، کدی که قرار دادید قابل اجرا نبود،
مثلا عبارت ()c1.toint معنای درستی ندارد. در ضمن دقت کنید که زبان #C نسبت به بزرگی و کوچکی حروف حساس است
و مثلا عبارت console با Console یا مثلا عبارت writeline با WriteLine فرق دارد.


حقیر کد را ویرایش و تکمیل نمودم :
این برنامه یک رشته ثابت mystr را پردازش نموده و تعداد حروف کوچک انگلیسی (a الی z) و مجموع رقم ها (0 الی 9)
بکار رفته در رشته را اعلام می کند.

مثلا در رشته "King 123" سه حرف کوچک انگلیسی بکار رفته (حرف K با حروف بزرگ انگلیسی نوشته شده و محاسبه
نمی شود) و مجموع رقم ها 6 است (1 + 2 + 3)، پس مقادیر 3 و 6 توسط برنامه اعلام می شوند.

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string mystr = "She has 2 children. the elder one has 42 years and the other has 16.";
            int c1 = 0;
            int c2 = 0;
            for (int c = 0; c < mystr.Length; c++)
            {
                if (mystr[c] >= 'a' && mystr[c] <= 'z')
                {
                    c1++;
                }
                if (mystr[c] >= '0' && mystr[c] <= '9')
                {
                    c2 = Convert.ToInt32(mystr[c].ToString()) + c2;
                }
            }
            Console.WriteLine(c1.ToString() + " and " + c2.ToString());
            Console.ReadKey(true);
        }
    }
}

و Trace کد برنامه :

مقدار دهی رشته mystr که قرار است پردازش شود :
کد:
            string mystr = "She has 2 children. the elder one has 42 years and the other has 16.";

مقدار دهی اولیه متغیر c1 که قرار است تعداد حروف کوچک انگلیسی را در خود نگهداری کند :
کد:
            int c1 = 0;

مقدار دهی اولیه متغیر c2 که قرار است مجموع رقم ها را در خود جمع کند :
کد:
            int c2 = 0;

یک حلقه با متغیر c که اندیس تمامی کاراکتر های رشته mystr (از اندیس 0 الی mystr.Length - 1) را پیمایش می کند :
کد:
            for (int c = 0; c < mystr.Length; c++)
            {

اگر کاراکتر [mystr[c یک حرف مابین a الی z باشد (یعنی جزو حروف کوچک انگلیسی باشد) :
کد:
            if (mystr[c] >= 'a' && mystr[c] <= 'z')
            {

آنگاه یک واحد به تعداد حروف که در متغیر c1 نگهداری می شود افزوده گردد :
کد:
                c1++;
            }

اگر کاراکتر [mystr[c یک رقم مابین 0 الی 9 باشد (یعنی جزو ارقام باشد) :
کد:
            if (mystr[c] >= '0' && mystr[c] <= '9')
            {

آنگاه مقدار آن رقم به مجموع مقادیر رقم ها که در متغیر c2 نگهداری می شود افزوده گردد :
کد:
                c2 = Convert.ToInt32(mystr[c].ToString()) + c2;
            }

پس از خاتمه یافتن حلقه، مقادیر c1 و c2 چاپ می گردد :
کد:
            Console.WriteLine(c1.ToString() + " and " + c2.ToString());

این سطر را اضافه کردم تا برای خاتمه برنامه منتظر فشردن کلیدی از سوی کاربر باشد :
کد:
            Console.ReadKey(true);
 

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

بالا