دوست عزیز
the_king
میتونی این برنامه رو Trace کنی ؟ مخصوصا حلقه هاش و قسمتهای پایینی
همیشه کد هایتان در بین تگی که دکمه مربوط به Code یعنی
می سازد قرار دهید. اینطوری هم کد به هم نمی ریزد و هم چپ به راست چاپ می شود و هم
تو رفتی سطر ها از بین نمی رود.
این کد های زیر که گمان نمی کنم نیازی به توضیح داشته باشند، مخصوصا که بصورت مشترک در پروژه های
کنسولی بطور خودکار درج می شود :
کد:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
ابتدا متغیر n را برای خواندن تعداد اندیس های آرایه ، متغیر i را برای مشخص کردن یک اندیس از آرایه،
jمتغیر را برای مقایسه یک اندیس از آرایه با سایر اندیس ها (مرتب سازی آرایه) و متغیر temp را برای نگه داشتن
موقت مقدار یک اندیس از آرایه (در هنگام تعویض مقدار دو اندیس آرایه) تعریف می کنیم :
صفحه نمایش را پاک می کنیم :
پیغام مناسبی را برای گرفتن مقدار n چاپ می کنیم :
کد:
Console.Write("Please enter n : ");
یک رشته string را از ورودی می خوانیم (Console.ReadLine) و به یک عدد int تبدیلش می کنیم (int.Parse) و در
داخل متغیر n قرار می دهیم. (در یک کلام یک عدد را در متغیر n می خوانیم) :
کد:
n=int.Parse(Console.ReadLine());
آرایه a را با تعداد اندیس های n و از نوع int می سازیم :
یک حلقه را با متغیر i می سازیم که برای پیمایش کلیه اندیس های آرایه a مناسب باشد :
کد:
for (i = 0; i < n; i++)
{
پیغام مناسبی چاپ می کنیم که از کاربر بخواهد که اندیس i+1 (چون اندیس های آرایه از 0 شروع می شوند
ولی بطور معمول کاربران اندیس اول را 1 فرض می کنند، در هنگام نمایش شماره اندیس یک واحد به i اضافه می کنیم.)
آرایه را وارد نماید :
کد:
Console.Write ("Please enter A[" + (i+1) + "] : ");
یک رشته string را از ورودی می خوانیم (Console.ReadLine) و به یک عدد int تبدیلش می کنیم (int.Parse) و در
داخل اندیس i ام آرایه a قرار می دهیم. (در یک کلام یک عدد را در اندیس i ام a می خوانیم) :
کد:
a[i] = int.Parse(Console.ReadLine());
پس از خاتمه یافتن حلقه for ای که با متغیر i پیمایش نمودیم، تمامی عنصر های آرایه a خوانده شده اند :
با متغیر i یک حلقه می سازیم که بجز آخرین اندیس آرایه a سایر اندیس های آنرا پیمایش کند :
کد:
for (i = 0; i < n - 1; i++)
با متغیر j یک حلقه داخلی (داخل حلقه for ای که با i ساخته بودیم) می سازیم که تمامی اندیس های آرایه a
که بعد از اندیس i هستند را پیمایش کند (همواره پیمایش متغیر j از یک اندیس بعد از i آغاز می شود) :
کد:
for (j = i + 1; j < n; j++)
اگر اندیس i ام آرایه a از اندیس j ام آرایه a کوچکتر است، پس ترتیب آرایه از نظر نزولی صحیح نیست :
اگر ترتیب آرایه از نظر نزولی صحیح نیست پس باید مقدار اندیس i ام آرایه a با اندیس j ام آرایه a تعویض شود،
این عمل در سه مرحله انجام می شود و متغیر temp در این میان نقش یک واسطه را بازی می کند :
کد:
temp = a[i];
a[i] = a[j];
a[j] = temp;
در هر حال پس از اجرای دو حلقه تو در توی i و j، آرایه از نظر نزولی مرتب شده است :
یک حلقه با متغیر i تشکیل می دهیم که برای پیمایش تمامی اندیس های آرایه a مناسب باشد :
با پیغام مناسبی، مقدار اندیس i ام آرایه a را چاپ می کنیم (چون اندیس های آرایه از 0 شروع می شوند
ولی بطور معمول کاربران اندیس اول را 1 فرض می کنند، در هنگام نمایش شماره اندیس یک واحد به i اضافه می کنیم
و بجای مقدار i مقدار i+1 را نمایش می دهیم)
کد:
Console.WriteLine ("A[" + (i+1) + "] = " + a[i]);
از کاربر می خواهیم که پیش از خروج از برنامه، زحمت فشار دادن یک کلید از صفحه کلید را بکشد :
لطفا در هنگام مطرح کردن سوال هایتان کاربر خاصی را مخاطب قرار ندهید، احساس یک ارتباط صرفا دو سویه ای
که با مورد سوال قرار دادن یک کاربر خاص ایجاد می شود، سایر دوستان را در پاسخگویی به گفتگو ها دلسرد می کند.
لطفا با مخاطب قرار دادن کلیه دوستان،سایر کاربران را برای پاسخ گویی به سوالات ترغیب کنید.