PDA

View Full Version : مبتدی: کمک برای اجرای یک برنامه ساده



omidan24
دوشنبه 06 خرداد 1392, 02:25 صبح
سلام دوستان
من به تازگی شروع به یادگیری سی شارپ کردم
از من خواسته شده برنامه ای با 4 tetxbox و 3 button بنویسیم. در هر textbox یک عدد تایپ میشه و در textbox آخری بسته به عدد نوشته همون عدد تکرار میشه ... مثال : 5 --- 55555 و نکته مهم اینه که باید این اعداد به ترتیب از textbox اول به سوم باشن ...
این برنامه در همه حالات نوشتم فقط مشکلی که هست اینه که اگر در tetxbox سوم و اول عددی بنویسم و دکمه ها رو فشار بدم بعدش بخوام در textbox دوم عدد جدیدی وارد کنم ... بعد از کلیم بر روی دکمه عدد tetxbox دوم به اول جواب نهایی میره در حالیکه باید این عدد در میان اعداد وارد شده به textbox اول و سوم قرار بگیره
ببخشید می دونم سوال احمقانه ای ولی واقعا توش موندم
من کد کپی می کنم


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
int a = 0;
int b = 0;
int c = 0;

public Form1()
{
InitializeComponent();
}

private void btn1_Click(object sender, EventArgs e)
{
a = 1;
for (int i = 0; i < Int32.Parse(txtNum1.Text); i++)
{
if (b == 1)
{
txtRes.Text = txtNum1.Text + txtRes.Text;
}
else
{
if (c == 1)
{
txtRes.Text = txtNum1.Text + txtRes.Text;
}
else
{
txtRes.Text += txtNum1.Text;
}
}
}
}

private void btn2_Click(object sender, EventArgs e)
{
b = 1;
for (int i = 0; i < Int32.Parse(txtNum2.Text); i++)
{
if (c == 1)
{
txtRes.Text = txtNum2.Text + txtRes.Text;
}
else
{
txtRes.Text += txtNum2.Text;
}

}
}

private void btn3_Click(object sender, EventArgs e)
{
c = 1;
for (int i = 0; i < Int32.Parse(txtNum3.Text); i++)
{

txtRes.Text = txtRes.Text + txtNum3.Text;
}
}

private void btnCle_Click(object sender, EventArgs e)
{
txtNum1.Text = "";
txtNum2.Text = "";
txtNum3.Text = "";
txtRes.Text = "";

}
}
}


ممنون میشم کمکم کنید

mehrdad1991h
دوشنبه 06 خرداد 1392, 09:14 صبح
ببینم شما چرا اومدی اینجوری نوشتی ؟

من یه مورد برات توضیح میدم ببین درست متوجه شدم یا نه !
شما 3 تا تکست باکس داری که باید اعداد به تریتی از کوچک به بزرگ درشون قرار بگیره و بعد از اینکه این اعداد قرار گرفت با کلیک روی یک دکمه عدد تکست باکس چهارم (که نمیدونم از کجا میاد ) به تعداد خودش تکرار بشه !

خوب اینی که توضیح دادم روشش اینجوریه راحت تره که :
ببین شما 4 حالت بیشتر نداری کلا
1 - یا همه تکست باکس ها خالیه
2 - یا یک تکست باکس پر شده
3 - یا دوتاشون پره
4 - یا اینکه همه تکست باکس ها پر شده که کاری با این نداریم فعلا

در رویداد leave یا text-change تکست باکس ها بیا فقط چک کن 3 حالت اول را که اگر همه خالی بود هر عددی دوست داره وارد کنه فرق نداره
در غیر این صورت اگر یکی از تکست باکس ها پر شده بود چک میکنی ببینی تکست باکس بزرگتره (قبل یا بعد از عدد) کودوم پر شده نصبت به همون میگی کاربر نتونه عدد کمتر یا بیشتر از اون وارد کنه (یدونه if هست دیگه )
در صورتی هم که 2 تا تکست باکس پر شده بود موقعیت این 2 تا چک میکنی که کودوم دوتا هستن و میگی عددی که کاربر وارد میکنه از این عدد بزگتر نشه یا کوچکتر نشه یا بین فلان دو عدد باشه

این مورد بالا که توضیح دادم را یه تابع براش بنویس و استفاده کن راحت !

خوب الان همه تکست باکس ها پر شد دیگه !!! وقتی کاربر روی دکمه ها کلیک میکنه اگر تکست باکس پر شده باشه عددش را نشون بدهد وگرنه به جای اون تکست باکس که خالیه هیچی نزاره خوب الان به ترتیب شدن !

--------------
راه ساده تر :
اگر برات مهم نیست تو کودوم تکست باکس عدد کوچیکتر یا بزگتر قرار بگیره بیا عدد های ورودی را دریافت کن بعد هم مرتبشون کن دیگه !

---------------
برای تکرار هم یه حلقه قرار میدی تا وقتی که تکرار حلقه کوچکتر از عدد تکست باکس هست اون عدد را به وسیله یه شته اضافه میکنی به همون رشته و بعدش رشته را میزاری تو تکست باکس یا هر جا نمایش میخوای بدی !

فکر میکنم برنامه را مینوشتم راحت تر بود تا اینکه توضیح بدم :)

omidan24
دوشنبه 06 خرداد 1392, 10:59 صبح
سلام ممنون از توضیحتون و شرمنده بابت نوع نوشتنم
کل صحبتاتون درسته فقط اعداد نباید از بزرگ به کوچک باشن باید به ترتیب تکست باکس اول ... دوم ... سوم ردیف بشن
راستش من تازه اولای راهم .
کل کد هم اجرا میشه به جز همون موردی که گفتم . ممنون میشم کد مورد نظر برام بنویسید

wolf_majid
دوشنبه 06 خرداد 1392, 11:00 صبح
الگوریتمتون رو عوض کنید
نیاز به 3 متغیر صحیح برای نگهداری مقادیر داخل 3 تکست باکس دارید
اگر هر تکست باکسی خالی بود متغیر صحیح مربوطه باید مقدار صفر بگیره (از دستور TryParse کمک بگیرید)
حالا یک متغیر رشته ای کمکی نیاز دارید تا در یک حلقه که به تعداد پارامتر ورودی چرخش می کند به همان پارامتر ورودی مقداری دهی شود (از متد باید استفاده شود)
این متد را برای هر 3 متغیر صحیح صدا بزنید
حالا خروجی هر 3 بار متد صدا زده شده (خروجی متذ رشته است و در صورتی که حلقه داخل آن اجرا نشود رشته خالی بر میگرداند) را در تکست باکس چهارم نمایش دهید

aydingol
سه شنبه 07 خرداد 1392, 02:16 صبح
دوست من مقداری واضحتر توضیح میدادید شاید دوستان می تونستن کمکی بکنن

matrix-program
سه شنبه 07 خرداد 1392, 10:30 صبح
چی شد:متعجب:
منظورت رو نگرفتم واضح تر توضیح بده

omidan24
یک شنبه 12 خرداد 1392, 01:09 صبح
دوستان خواهش می کنم کمک کنید . فرذا باید تحویل بدم
4تا تکست باکس داریم.مقابل 3 اول سه تا دکمه هست. داخل 3 تای اول هر عددی نوشته بشه در تکست باکس چهارم ، به تعداد عدد نوشته از همون عدد نشان داده میشه مثلا : 4 ---- 4444
فقط مهم این هستش که داخل تکست باکس چهارم باید به ترتیب تکست باکس ها نوشته شه
مثلا:
tetxtbox1: 4 ----4444
tetxtbox2: 2 ----22
tetxtbox3: 6----666666
و به این ترتیب در تکست باکس چهارم نشون داده بشه :
44422666666
من کلیه مراحل انجام دادم اما یک مشکلی هست و اون اینه که اگر در تکس باکس اول و سوم عدد نوشته بشه و دکمه هاشون فشرده بشن و بعد از اون دکمه تکست باکس چهارم فشرده بشه دیگه تیتیب قبل نداره
یعنی نوشته تکس باکس 2 میاد به اولش
مثل:

tetxtbox1: 4 ----4444
tetxtbox2: 2 ----22
tetxtbox3: 6----666666

tetxbox4: 2244466666
ممنون میشم اگر کد برنامه منوتصحیح کنیدو کد درست برام بذارید

parvizwpf
یک شنبه 12 خرداد 1392, 01:21 صبح
کد رو بزارید. ببینیم چه کردید.

omidan24
یک شنبه 12 خرداد 1392, 01:22 صبح
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Tartib
{
public partial class Form1 : Form
{
int a = 0;
int b = 0;
int c = 0;
public Form1()
{
InitializeComponent();
}

private void btn1_Click(object sender, EventArgs e)
{
a = 1;
for (int i = 0; i < Int32.Parse(txtNum1.Text); i++)
{
if (b == 1 || c==1)
{
txtRes.Text = txtNum1.Text + txtRes.Text;
}
else
{
txtRes.Text += txtNum1.Text;

}
}
}
private void btn2_Click(object sender, EventArgs e)
{
b = 1;
for (int i = 0; i < Int32.Parse(txtNum2.Text); i++)
{
if ((c == 1 && a == 1)||c==1)
{
txtRes.Text = txtNum2.Text + txtRes.Text;
}

else
{
txtRes.Text = txtRes.Text + txtNum2.Text;
}
}
}

private void btn3_Click(object sender, EventArgs e)
{
c = 1;
for (int i = 0; i < Int32.Parse(txtNum3.Text); i++)
{
txtRes.Text = txtRes.Text + txtNum3.Text;
}
}

private void btnCle_Click(object sender, EventArgs e)
{
txtNum1.Text = "";
txtNum2.Text = "";
txtNum3.Text = "";
txtRes.Text = "";
}


}
}

omidan24
یک شنبه 12 خرداد 1392, 01:23 صبح
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Tartib
{
public partial class Form1 : Form
{
int a = 0;
int b = 0;
int c = 0;
public Form1()
{
InitializeComponent();
}

private void btn1_Click(object sender, EventArgs e)
{
a = 1;
for (int i = 0; i < Int32.Parse(txtNum1.Text); i++)
{
if (b == 1 || c==1)
{
txtRes.Text = txtNum1.Text + txtRes.Text;
}
else
{
txtRes.Text += txtNum1.Text;

}
}
}
private void btn2_Click(object sender, EventArgs e)
{
b = 1;
for (int i = 0; i < Int32.Parse(txtNum2.Text); i++)
{
if ((c == 1 && a == 1)||c==1)
{
txtRes.Text = txtNum2.Text + txtRes.Text;
}

else
{
txtRes.Text = txtRes.Text + txtNum2.Text;
}
}
}

private void btn3_Click(object sender, EventArgs e)
{
c = 1;
for (int i = 0; i < Int32.Parse(txtNum3.Text); i++)
{
txtRes.Text = txtRes.Text + txtNum3.Text;
}
}

private void btnCle_Click(object sender, EventArgs e)
{
txtNum1.Text = "";
txtNum2.Text = "";
txtNum3.Text = "";
txtRes.Text = "";
}


}
}

parvizwpf
یک شنبه 12 خرداد 1392, 01:47 صبح
کدتون این میشه امیدوارم درست باشه:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace JanusWindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

int a = 0;
int b = 0;
int c = 0;


private void btn1_Click(object sender, EventArgs e)
{
txtRes.Clear();
b1();
b2();
b3();

}
private void btn2_Click(object sender, EventArgs e)
{
txtRes.Clear();
b1();
b2();
b3();
}

private void btn3_Click(object sender, EventArgs e)
{
txtRes.Clear();
b1();
b2();
b3();
}

private void b1()
{
if (txtNum1.Text != string.Empty)
{
a = 1;
for (int i = 0; i < Int32.Parse(txtNum1.Text); i++)
{

txtRes.Text += txtNum1.Text ;

}
}

}

private void b2()
{
if (txtNum2.Text != string.Empty)
{
b = 1;
for (int i = 0; i < Int32.Parse(txtNum2.Text); i++)
{

txtRes.Text += txtNum2.Text;

}
}

}
private void b3()
{
if (txtNum3.Text != string.Empty)
{
c = 1;
for (int i = 0; i < Int32.Parse(txtNum3.Text); i++)
{
txtRes.Text += txtNum3.Text;
}
}
}

private void btnCle_Click(object sender, EventArgs e)
{
txtNum1.Text = "";
txtNum2.Text = "";
txtNum3.Text = "";
txtRes.Text = "";
}


}
}

omidan24
یک شنبه 12 خرداد 1392, 01:54 صبح
خیلی ممنون ... امتحانش می کنم ... باز هم ممنونم

omidan24
یک شنبه 12 خرداد 1392, 02:07 صبح
جواب داد ممنونم از لطفتون