C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Ответить
Аватара пользователя
Ksenya

C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Сообщение Ksenya »

Здравствуйте. В попытке создания простейшего калькулятора на с# возникли проблемы: действия "*" и "/". Ошибка зарылась в глобальных переменных начальных значений, только в чем именно уму не приходит(





Код:

Код: Выделить всё

namespace Kalkulator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button_1_Click(object sender, EventArgs e)
        {
            textBox1.Text += 1;
            textBox2.Text += 1;
        }
        private void button_2_Click(object sender, EventArgs e)
        {
            textBox1.Text += 2;
            textBox2.Text += 2;
        }
        private void button_3_Click(object sender, EventArgs e)
        {
            textBox1.Text += 3;
            textBox2.Text += 3;
        }
        private void button_4_Click(object sender, EventArgs e)
        {
            textBox1.Text += 4;
            textBox2.Text += 4;
        }
        private void button_5_Click(object sender, EventArgs e)
        {
            textBox1.Text += 5;
            textBox2.Text += 5;
        }
        private void button_6_Click(object sender, EventArgs e)
        {
            textBox1.Text += 6;
            textBox2.Text += 6;
        }
        private void button_7_Click(object sender, EventArgs e)
        {
            textBox1.Text += 7;
            textBox2.Text += 7;
        }
        private void button_8_Click(object sender, EventArgs e)
        {
            textBox1.Text += 8;
            textBox2.Text += 8;
        }
        private void button_9_Click(object sender, EventArgs e)
        {
            textBox1.Text += 9;
            textBox2.Text += 9;
        }
        private void button_0_Click(object sender, EventArgs e)
        {
            textBox1.Text += 0;
            textBox2.Text += 0;
        }
        private void button_plus_Click(object sender, EventArgs e)
        {              
            if (textBox1.Text == "")
                MessageBox.Show("Данные не введены");            
            else
            {
                ch = '+';
                sum += Double.Parse(textBox1.Text);
                textBox1.Text = "";
                textBox2.Text += "+";
            }
        }
        private void button_minus_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
                MessageBox.Show("Данные не введены");
            else
            {
                ch = '-';
                sum -= Double.Parse(textBox1.Text);
               textBox1.Text = "";
               textBox2.Text += "-";
            }
        }
        private void button_mult_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
                MessageBox.Show("Данные не введены");
            else
            {
                ch = '*';
                sam *= Double.Parse(textBox1.Text);
                sum = sam;
                textBox1.Text = "";
                textBox2.Text += "*";
            }
        }
        private void button_del_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
                MessageBox.Show("Данные не введены");
            else
            {
                ch = '/';
                sam /= Double.Parse(textBox1.Text);
                sum = sam;
                textBox1.Text = "";
                textBox2.Text += "/";
            }
        }
        private void button_pick_Click(object sender, EventArgs e)
        {
            textBox1.Text += ",";
            textBox2.Text += ".";
        }
        private void button_answ_Click(object sender, EventArgs e)
        {
            if (ch == '+')
                sum += Double.Parse(textBox1.Text);
            if (ch == '-')
                sum -= Double.Parse(textBox1.Text);
            if (ch == '*')
                sum *= Double.Parse(textBox1.Text);
            if (ch == '/')
                sum /= Double.Parse(textBox1.Text);
            textBox1.Text = sum.ToString() ;
            textBox2.Text = textBox1.Text;
        }
        public double sam=1;
        public double sum=0;
    }
}
Вложения
Kalculator.zip
(5.31 КБ) 0 скачиваний
Kalculator.zip
(5.31 КБ) 0 скачиваний
Аватара пользователя
LilLoco

Re: C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Сообщение LilLoco »

Цитата Ksenya:



Ошибка зарылась в глобальных переменных начальных значений
C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий




Текст ошибки? Ошибка при компиляции? или же во время выполнения?

У вас переменные sam и sum объявлены в дизайнере (Form1.designer.cs) и в классе формы (Form1.cs). Удалите из дизайнера.

Без них проект компилируется, и как то считает - не проверял правильность.
Аватара пользователя
Ksenya

Re: C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Сообщение Ksenya »

Ошибка во время выполнения..считает не правильно)) не соображу с глобальными начальными переменными..как совместить в программе одну=0 и другую=1, если мы можем выбрать любое действие будь то ("+","-"): для них начальная переменная =0 и ("*","/"): =1?

__

просто если мы используем переменную, а без нее никак, то никак и без начальных значений, ей задаваемых)
Аватара пользователя
LilLoco

Re: C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Сообщение LilLoco »

Ksenya, на самом деле не понятно зачем вам 0 или 1. может быть уже сказывается конец дня



Почему бы вам просто не объявить переменную



Код:

Код: Выделить всё

private double Temp;

затем в обработчике события клавиши операции ( для примера возьмем умножение)



Код:

Код: Выделить всё

private void button_mult_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
                MessageBox.Show("Данные не введены");
            else
            {
                ch = '*'; 
                Temp = double.Parse(textBox1.Text);
                textBox1.Text = "";
                textBox2.Text += "*";
            }
        }

далее в обработчике события кнопки равно



Код:

Код: Выделить всё

private void button_answ_Click(object sender, EventArgs e)
        {
            double answer;
            ...
            if (ch == '*')
            {
                 answer = Temp * double.Parse(textBox1.Text);
            }
            ....
            textBox1.Text = answer.ToString() ;
            textBox2.Text = textBox1.Text;
        }

Попробуйте, должно получиться...
Аватара пользователя
Ksenya

Re: C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Сообщение Ksenya »

Попыталась реализовать..В итоге возникает ошибка: использование локальной переменной, которой не присвоено значение..: вот для чего нужны начальные значения..

если же присвоить зн-е=0, считает не правильно)



Извините пожалуйста, я поспешила и скомпилила, не удалив предыдущие действия..спасибо, все верно..работает..как доктор прописал. Спасибо, спаситель Изображение
Аватара пользователя
Ksenya

Re: C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий

Сообщение Ksenya »

Однако потом возникает вопрос, что делать, если калькулятор инженерный и помимо простых реализаций ариф действий требуются корни 3-ей степени, логарифмы и другие преобразования. Я к тому, что как в дальнейшем поведет себя, а может и не нужна будет вовсе, переменная ch?
Ответить

Вернуться в «Программирование и базы данных»