PDA

View Full Version : سوال: برنامه ای بنویسید که 20 عدد از ورودی خوانده و هر کدام را که تکراری نباشد به آرایه اضافه نماید



3Dmajid
یک شنبه 16 اسفند 1388, 11:31 صبح
میدونم کار آسونیه ولی هر کاری میکنم نمیتونم بنویسم :لبخند:

- برنامه ای بنویسید که 20 عدد از ورودی خوانده و هر کدام را که تکراری نباشد به آرایه اضافه نماید :عصبانی++:

Salar Ashgi
یک شنبه 16 اسفند 1388, 12:20 عصر
دوست عزیز ، درخواست تمرین های دانشجویی مخالف قوانین سایت میباشد ؛ شما کدت رو بذار ،

ببینیم تا کجا پیش رفتی ؟ حالا هر اشکالی داشتی رفع می کنیم .

3Dmajid
یک شنبه 16 اسفند 1388, 12:45 عصر
این کد روی Button هست :



num[count] = txtNums.Text;
if (num[count] != num[count - 1])
{
listBox1.Items.Add(num[count]);
count += 1;
}
else
{
MessageBox.Show("This word is added before");
}


اینم یه قسمت دیگه کد که واسه معرفی متغیر و مقدار دهی استفاده کردم البته فکر نمیکنم زیاد مهم باشه :



int count;
string[] num = new string[19];

public Form1()
{
InitializeComponent();
count = 1;
num[0] = "";
}


اون دو تا متغیر بالا به صورت پاپلیک توی کلاس تعریف شده.

مشکل اینه که عددی که وارد میشه فقط با عدد قبلی آرایه ها مقایسه میکنه، من میخوام با همه ی اعداد مقایسه کنه.
اینجوری دو تا عدد مثل هم رو پشت سر هم نمیشه وارد کرد ولی توی لیست میشه تو عدد مثل هم وارد بشه !!
:گیج:

saed2006
یک شنبه 16 اسفند 1388, 12:50 عصر
یک forech ساده بزن و عدد ورودی رو با تمام ایتم ها مقایسه کن اگر چیزی وجود نداشت اجازه ذخیره بده در غیر این صورت نه
شما باید یک متد بنویسی


public bool Exit(listBox.Items itm,int number
توی اون هم یک forech ساده و مقایسه با ورودی

M.YasPro
یک شنبه 16 اسفند 1388, 12:55 عصر
این تابع یه متغیر int و یه ارایه int می گیره و بودن متغیر رو توی آرایه بررسی میکنه :


private bool IsReplication(int num, int[] nums)
{
foreach (int n in nums)
if (n == num)
return false;
return true;
}

Salar Ashgi
یک شنبه 16 اسفند 1388, 14:59 عصر
با LINQ کد زیر رو نوشتم :

ابتدا یه متود واسه پیدا کردن تعداد دفعات تکرار یک عنصر در آرایه :



int item_count(int[] a, int x)
{
int f = 0;
foreach (int i in a)
{
if (i == x)
f++;
}
return f;
}
//=================================


کد مورد نظر با LINQ :



private void button1_Click(object sender, EventArgs e)
{
int[] a = { 1, 4, 1, 5, 6, 3, 9, 3, 5 };
var q = a.Distinct().Where(x => (item_count(a, x) == 1));
string str = "";
foreach (var x in q)
{
str += x.ToString() + " , ";
}
MessageBox.Show(str);
}


خروجی : 4,6,9

موفق باشید .

FastCode
یک شنبه 16 اسفند 1388, 18:29 عصر
همه ی این روش ها O(n^2) هستند.
پیشنهاد من اینه که اگر میخوای نمره ی خوب در حد 21 بگیری باید اول همه رو بریزی توی یه آرایه بعد سورتشون کنی و بعد با یک بار iteration یه distinct بگیری.