Имя пользователя:
Пароль:
 

Показать сообщение отдельно

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


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

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


Ksenya, Так как вы снова не указали ошибку и место где она возникает, буду угадывать...

При делении у вас всегда выводится "Деление на ноль невозможно" .
Это из - за того, что вы обнуляете переменную, заносите ее в поле и потом его парсите:
Код: Выделить весь код
            double answer = 0; // вот тут обнуление у вас
            if (ch == '+')
            { answer = Temp + double.Parse(textBox1.Text); }
            if (ch == '-')
            { answer = Temp - double.Parse(textBox1.Text); }
            if (ch == '*')
            { answer = Temp * double.Parse(textBox1.Text); }
            if (ch == '^')
            { answer = Math.Pow(Temp, double.Parse(textBox1.Text)); }
            if (ch == 'k')
            { answer = SqrtY(Temp); }
            if (ch == 'm')
            { answer = Temp % double.Parse(textBox1.Text); }


            textBox1.Text = answer.ToString();  // здесь вы в поле текстбокс1 вносите "0"
            textBox2.Text = textBox1.Text;

            if (ch == '/')
            {
// а тут начинаете парсить, в итоге первое условие никогда не выполнится, только если равно нулю.
                if (double.Parse(textBox1.Text) != 0) { answer = Temp / double.Parse(textBox1.Text); }
                else if (double.Parse(textBox1.Text) == 0)
                {
                    textBox1.Text = "Деление на ноль невозможно";
                    textBox2.Text = textBox1.Text; System.Media.SystemSounds.Asterisk.Play();
                }
            }
И еще, просто совет, на примере этого же куска кода. Не делайте просто через if, лучше использовать else if. Будет выполняться меньше проверок, тем самым оптимизируете работу.

Код: Выделить весь код
            if (ch == '+')
            { answer = Temp + double.Parse(textBox1.Text); }
            else if (ch == '-')
            { answer = Temp - double.Parse(textBox1.Text); }
            else if (ch == '*')
            { answer = Temp * double.Parse(textBox1.Text); }
            esle if (ch == '^')
            { answer = Math.Pow(Temp, double.Parse(textBox1.Text)); }
....

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

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

Отправлено: 07:47, 26-10-2011 | #4