Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

Аватара для Ksenya

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
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;
    }
}

Отправлено: 19:56, 20-10-2011

 

В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Ksenya:
Ошибка зарылась в глобальных переменных начальных значений »
Текст ошибки? Ошибка при компиляции? или же во время выполнения?
У вас переменные sam и sum объявлены в дизайнере (Form1.designer.cs) и в классе формы (Form1.cs). Удалите из дизайнера.
Без них проект компилируется, и как то считает - не проверял правильность.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:06, 20-10-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Ksenya

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 22:23, 20-10-2011 | #3


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


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;
            
        }
Попробуйте, должно получиться...

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 22:45, 20-10-2011 | #4


Аватара для Ksenya

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 23:48, 21-10-2011 | #5


Аватара для Ksenya

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:41, 22-10-2011 | #6


Аватара для Ksenya

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вопрос исчерпан. спасибо)

Отправлено: 01:28, 22-10-2011 | #7



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

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Облачные вычисления: достоинства и недостатки OSZone News Новости информационных технологий 2 09-05-2012 07:42
Вычисления стали выполняться дольше kittyla Процесcоры 4 01-02-2011 01:19
В 2010 году облачные вычисления ожидают катастрофы OSZone News Новости информационных технологий 1 15-12-2009 21:41
C/C++ - функция для вычисления матричной экспонеты (С++) Luzuk Программирование и базы данных 3 03-10-2008 11:42
Excel для вычисления повторов kabanello Хочу все знать 4 14-02-2006 18:30




 
Переход