نمایش نتایج 1 تا 13 از 13

نام تاپیک: ماشین حساب

  1. #1

    ماشین حساب

    سلام من به تازگی کار با #C را شروع کردم یعنی دارم اولین برنامه ام را باهاش درست میکنم (ماشین حساب) حالا برای دکمه ممیز که میخوام برای ماشین حساب بگذارم مشکل دارم نمیدونم چه کدی براش بنویسم که اعدادم را ممیز دار کنه لطفا اگر میشه یک نمونه کد برام بگذارید
    ممنون

  2. #2
    کاربر دائمی آواتار 13601360
    تاریخ عضویت
    آذر 1386
    محل زندگی
    کنار دریای خزر
    پست
    422

    نقل قول: ماشین حساب

    ببین این نمونه پروژه بدردت می خوره
    این لینک هم ببینی بد نیست


    فایل های ضمیمه فایل های ضمیمه

  3. #3

    نقل قول: ماشین حساب

    مشکل قبلی حل شد ممنون.
    حالا یک سوال دیگه دارم میخوام کاری کنم که وقتی کلیدهای کیبورد را میزنم در برنامه ام اعداد وارد شود به اصطلاح قسمت NumPad کیبورد فعال بشه.
    ممنون.

  4. #4
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ماشین حساب

    برای اینکار می تونی از تکست باکس هایی که فقط عدد می گیرند استفاده کنی .

  5. #5

    نقل قول: ماشین حساب

    وقتی کلیدهای کیبورد را میزنم در برنامه ام اعداد وارد شود به اصطلاح قسمت NumPad کیبورد فعال بشه.

    public Form1()
    {
    InitializeComponent();
    textBox1.ReadOnly = true;
    KeyPreview = true;
    }

    private void Form1_KeyPress( object sender , KeyPressEventArgs e )
    {
    if ( e.KeyChar >= '0' && e.KeyChar <= '9' )
    textBox1.Text += e.KeyChar;

    }
    }

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ماشین حساب

    البته این روش رو که دوستمون گفتن باید یه کم تغییرش بدی چون الان ممیز رو قبول نمی کنه همین طور برخی عملیات مثل یک مرحله برگشت ، اعمال ریاضی و ... اما اگه فقط اعداد رو می خوای از روشی که دوستمون گفت می تونی استفاده کنی .

  7. #7

    نقل قول: ماشین حساب

    سلام به همگی دوستان ممنون از اینکه راهنمایی کردید
    من تا اینجا مشکلم حل شده و جلو رفتم حالا میخوام کاری کنم وقتی مثلا کلید 2 را میزنم بعد کلید + دوباره وقتی کلید 2 رازدم و کلید + را زدم عدد 4 را نمایش بده سپس منتظر عدد بعدی باشه؟
    منظورم اینه که نمیخوام حتما با کلید مساوی نتیجه حساب بشه میخوام با کلیدهایی که چهار عمل اصلی را انجام میدهند هم نتیجه حساب بشه

  8. #8

    نقل قول: ماشین حساب

    حالا میخوام کاری کنم
    واسه چی از سورسی که در بالا ارائه شد و هزاران سورس ماشین حساب که در اینترنت هست استفاده نمیکنی؟

  9. #9
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ماشین حساب

    خوب هر بار که یکی از کلید های عملیات ریاضی زده شد ، عمل قبلی رو انجام بده و به همین ترتیب . برای اطلاع از عمل قبلی هم میتونی اونو تو یه متغیر ذخیره کنی .

  10. #10

    نقل قول: ماشین حساب

    برای اطلاع از عمل قبلی هم میتونی اونو تو یه متغیر ذخیره کنی
    یعنی اینطوری:

    واسه اعداد صفر تا 9، همچین کدی رو در Event شون مینویسیم

    private void button9_Click( object sender , EventArgs e )
    {
    if ( clear == true )
    {
    textBox1.Text = "";
    clear = false;
    }
    textBox1.Text += "9";
    }
    واسه چهار عمل اصلی و مساوی، این کد:

    private void buttonSubtrac_Click( object sender , EventArgs e )
    {
    CheckOp( '-' );
    }
    private void buttonEqual_Click( object sender , EventArgs e )
    {
    CheckOp( '=' );
    }
    یکسری متغیر عمومی هم داریم

    char PrevOperator;
    int result;
    bool clear;

    public Form1()
    {
    InitializeComponent();

    textBox1.ReadOnly = true;
    KeyPreview = true;
    textBox1.Text = "0";

    PrevOperator=' ';
    result = 0;
    clear = true;
    }
    CheckOp : روالی که چهار عمل اصلی رو کنترل میکنه و منتیجه نهایی رو نشون میده.
    Clear: تعیین میکنه که محتوای TextBox پاک بشه، یا نه
    PrevOp: آخرین عملگر، رو نگه میداره.
    result: نتیجه نهایی محاسبه رو نگه میداره.

    روال CheckOp هم اینطور عمل میکنه

    public void CheckOp(Char op)
    {
    switch (PrevOperator )
    {
    case '+' :
    result += Convert.ToInt32( textBox1.Text );
    break;
    case '-':
    result -= Convert.ToInt32( textBox1.Text );
    break;
    case '*':
    result *= Convert.ToInt32( textBox1.Text );
    break;
    case '/':
    result *= Convert.ToInt32( textBox1.Text );
    break;
    default :
    result = Convert.ToInt32( textBox1.Text );
    break;
    }
    PrevOperator = op;
    clear = true;
    textBox1.Text = Convert.ToString( result );
    }

    هر بار که عملگری رو فشار میدی، بر اساس عملگر قبلی، نتیجه رو محاسبه و در result ذخیره میکنه و اونرو در textbox نشون میده و clear رو طوری ست میکنه که با فشار اعداد، محتوای قبلی textbox بر داشته بشه و اعداد جدید تایپ بشن ( عطف به جمله زیر)
    سپس منتظر عدد بعدی باشه؟
    منظورم اینه که نمیخوام حتما با کلید مساوی نتیجه حساب بشه میخوام با کلیدهایی که چهار عمل اصلی را انجام میدهند هم نتیجه حساب بشه

  11. #11
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ماشین حساب

    فقط در کد بالا به این نکته که اعداد می تونه اعشاری هم باشه دقت نشده که با یک تغییر جزیی بهش می رسی .

  12. #12

    نقل قول: ماشین حساب

    سلام
    الان همه کارها را انجام دادم فقط میخوام کاری کنم که حافظه ماشین حسابم با باز و بسته شدن از بین نره من چنین برنامه ایی را با دلفی نوشتم اونجا وقتی کاربر حافظه را میزد یک متغیری در رجیستری میساختم و عدد را درون اون متغیر ذخیره میکردم و هروقت که میخواستم از اونجا میخوندم اینجوری عدد حافظه از بین نمیرفت اما با #C هرکاری کردم نتونستم این کار را بکنم اگر یک نفر یا همین راه یا اینکه نحوه ذخیره و خواندن از فایل را بگه ممنون میشم اگر راه بهتری وجود داره معرفی کنید ممنون میشم
    ممنون از راهنماییتون

    واسه چی از سورسی که در بالا ارائه شد و هزاران سورس ماشین حساب که در اینترنت هست استفاده نمیکنی
    آخه اگر بخواهم دقیقا کد و سورس آماده را کپی کنم دارم خودما گول میزنم اونجوری هیچی بعدا یاد نمیگیرم.

  13. #13

    نقل قول: ماشین حساب

    اگر یک نفر یا همین راه یا اینکه نحوه ذخیره و خواندن از فایل را بگه ممنون میشم
    MSDN رو باز کن و File Class رو ببین

    using System;
    using System.IO;

    class Test
    {
    public static void Main()
    {
    string path = @"c:\temp\MyTest.txt";
    if (!File.Exists(path))
    {
    // Create a file to write to.
    using (StreamWriter sw = File.CreateText(path))
    {
    sw.WriteLine("Hello");
    sw.WriteLine("And");
    sw.WriteLine("Welcome");
    }
    }

    // Open the file to read from.
    using (StreamReader sr = File.OpenText(path))
    {
    string s = "";
    while ((s = sr.ReadLine()) != null)
    {
    Console.WriteLine(s);
    }
    }

    try
    {
    string path2 = path + "temp";
    // Ensure that the target does not exist.
    File.Delete(path2);

    // Copy the file.
    File.Copy(path, path2);
    Console.WriteLine("{0} was copied to {1}.", path, path2);

    // Delete the newly created file.
    File.Delete(path2);
    Console.WriteLine("{0} was successfully deleted.", path2);
    }
    catch (Exception e)
    {
    Console.WriteLine("The process failed: {0}", e.ToString());
    }
    }
    }

    اونجا وقتی کاربر حافظه را میزد یک متغیری در رجیستری میساختم و عدد را درون اون متغیر ذخیره میکردم
    MSDN رو باز کن و Registry Class رو مطالعه کن

    using System;
    using Microsoft.Win32;

    class Reg {
    public static void Main() {

    // Create a RegistryKey, which will access the HKEY_USERS
    // key in the registry of this machine.
    RegistryKey rk = Registry.Users;

    // Print out the keys.
    PrintKeys(rk);
    }

    static void PrintKeys(RegistryKey rkey) {

    // Retrieve all the subkeys for the specified key.
    String [] names = rkey.GetSubKeyNames();

    int icount = 0;

    Console.WriteLine("Subkeys of " + rkey.Name);
    Console.WriteLine("-----------------------------------------------");

    // Print the contents of the array to the console.
    foreach (String s in names) {
    Console.WriteLine(s);

    // The following code puts a limit on the number
    // of keys displayed. Comment it out to print the
    // complete list.
    icount++;
    if (icount >= 10)
    break;
    }
    }
    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •