C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: C#で電卓


(過去ログ 133 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■78597 / inTopicNo.1)  C#で電卓
  
□投稿者/ K (1回)-(2016/01/27(Wed) 15:52:28)

分類:[C#] 

2016/01/27(Wed) 15:55:52 編集(投稿者)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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


        bool isFirst = true;
        decimal x=0;

        private void buttonNumber_Click(object sender, EventArgs e)
        {
            if (key != Operator.undefined && isFirst)
            {
                x = Convert.ToDecimal(textBox1.Text);
                textBox1.Text = "";

                isFirst = false;
            }

            String text = textBox1.Text + ((Button)sender).Text;

             decimal d = Convert.ToDecimal(text);

             String text2 = d.ToString();

             textBox1.Text = text2;
              
        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            textBox1.Text = String.Empty;
        }


        private void buttonAllClear_Click(object sender, EventArgs e)
        {
            textBox1.Text = "0";
        }

        private void buttonDot_Click(object sender, EventArgs e)      
     {
            if (textBox1.Text.IndexOf(".") >= 0)
            {
                return;
            }
            textBox1.Text = textBox1.Text + ".";
        }

       
        enum Operator
        {
            undefined, add, sub, mul, dvi
        }

        Operator key = Operator.undefined;


        private void Calculate()
        {
            decimal y = Convert.ToDecimal(textBox1.Text);
            decimal results = 0;
            switch (key)
            {
                case Operator.add:
                    results = x + y;
                    break;

                case Operator.sub:
                    results = x - y;
                    break;

                case Operator.mul:
                    results = x * y;
                    break;

                case Operator.dvi:
                    results = x / y;
                    break;

            }

            textBox1.Text = results.ToString();

            x = 0;
        }


        private void buttonAdd_Click(object sender, EventArgs e)
        {
            key = Operator.add;
            isFirst = true;

            Calculate();
        }

        private void buttonSub_Click(object sender, EventArgs e)
        {
            key = Operator.sub;
            isFirst = true;

            Calculate();
        }

        private void buttonMul_Click(object sender, EventArgs e)
        {
            key = Operator.mul;
            isFirst = true;

            
        }

        private void buttonDvi_Click(object sender, EventArgs e)
        {
            key= Operator.dvi;
            isFirst = true;

            
        }


        private void buttonResult_Click(object sender, EventArgs e)
        {
            Calculate();

            
        }
            

       
    }
}


このようなコードなんですが
問題がいくつかありまして、皆さんの知恵をお借りしたいです

1.+以外の演算子を使って=を押さずに連続計算をしたい
2.0割りでのエラー回避方法

この二点がわからず困っています
わかる方いましたら、教えていただきたいです

引用返信 編集キー/
■78598 / inTopicNo.2)  Re[1]: C#で電卓
□投稿者/ WebSurfer (796回)-(2016/01/27(Wed) 16:09:21)
No78597 (K さん) に返信

学校とか会社の研修の宿題・課題とかですか?
引用返信 編集キー/
■78599 / inTopicNo.3)  Re[2]: C#で電卓
□投稿者/ K (2回)-(2016/01/27(Wed) 16:11:21)
No78598 (WebSurfer さん) に返信

そうです
課題みたいなものです
引用返信 編集キー/
■78600 / inTopicNo.4)  Re[1]: C#で電卓
□投稿者/ みい (42回)-(2016/01/27(Wed) 16:12:12)
No78597 (K さん) に返信

半年前にも同じようなコードを見ました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=76604&KLOG=129
同じ学校の方でしょうか。

まずは上記のページを見てみてください。
引用返信 編集キー/
■78601 / inTopicNo.5)  Re[3]: C#で電卓
□投稿者/ WebSurfer (797回)-(2016/01/27(Wed) 16:21:48)
No78599 (K さん) に返信
> ■No78598 (WebSurfer さん) に返信
>
> そうです
> 課題みたいなものです

それならご自分で考えて解決しないと意味がないのでは?

どうしても分からないところは先生とか講師の方に聞けば Face-to-face で何が分からな
いかまで探ってもらえ、ここで聞くよりよほど的確な答えがもらえると思うのですが・・・
引用返信 編集キー/
■78602 / inTopicNo.6)  Re[2]: C#で電卓
□投稿者/ K (3回)-(2016/01/27(Wed) 16:23:49)
No78600 (みい さん) に返信

このページも検索したら出てきたので、見たことあります
ちょっと同じ学校かはわかんないですが…
引用返信 編集キー/
■78603 / inTopicNo.7)  Re[4]: C#で電卓
□投稿者/ K (4回)-(2016/01/27(Wed) 16:26:09)
No78601 (WebSurfer さん) に返信

なかなか聞く時間がないので、自分でやってはいるのですが
進まないので意見をいただきたかったのですが
引用返信 編集キー/
■78604 / inTopicNo.8)  Re[5]: C#で電卓
□投稿者/ WebSurfer (798回)-(2016/01/27(Wed) 16:42:55)
No78603 (K さん) に返信
> ■No78601 (WebSurfer さん) に返信
>
> なかなか聞く時間がないので、自分でやってはいるのですが
> 進まないので意見をいただきたかったのですが

掲示板に書いてある情報以外は回答者はわからないという大きな制約がありますし、質問者さん
のスキル、やりたいことの詳細が分からないので、なかなか質問者さんが期待する答を得るのが
難しいと思うので、Face-to-face で先生に聞くことをお勧めしているのですが。

例えば、

> 0割りでのエラー回避方法

も具体的にどうしたいのか、case Operator.dvi: のところで y がゼロだったら計算しないで
MessageBox 等で警告すればいいのか、そうではなくて他のことを考えているのかは分かりま
せんし・・・
引用返信 編集キー/
■78605 / inTopicNo.9)  Re[3]: C#で電卓
□投稿者/ みい (43回)-(2016/01/27(Wed) 17:23:16)
No78602 (K さん) に返信
> ■No78600 (みい さん) に返信
>
> このページも検索したら出てきたので、見たことあります
見たのに演算子ボタンを押した時の処理がなぜその呼び出し順になるのか…
(774RRさんがコメント入れて解説してくれているのに)

Jittaさんがリンクはっているとこにいったら電卓のソースが
あるので、ご自分のソースと見比べてみてはいかがでしょうか。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -