Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2013, 21:02   #1
P91
Пользователь
 
Регистрация: 20.10.2012
Сообщений: 21
По умолчанию Найти у

Помогите пожалуйста!!! Нужно, чтобы программа работала по такому принципу: при вводе аргумента x и выходе из поля проверяется в какой из трех диапазонов попадает x, выполняются вычисления и результат отображается в label. При этом соответствующая кнопка становится отмеченной (Checked=true). Если далее нажать другую радиокнопку, вычисления пересчитываются для соответствующей формулы, в label выводится новый результат, диапазон, в котором находится x игнорируется. Если отметить checkbox – результат удваивается. Код написал, но она немного не так работает. Почему-то считает только по третьей формуле и не переключает кнопки после вычисления.

x*sin(x), x<=0
y= sqrt(x)/x, 0<x<3
x^2+2, x>=3
Код:
Код:
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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        double X;
        double Y;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            Calculate();
        }
 
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            Calculate();
        }
 
        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            Calculate();
        }
 
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            Calculate();
        }
        void Calculate()
        {
            string s;
            s = textBox1.Text;
            X = Convert.ToDouble(s);
            {
                if (X <= 0)
                {
                    Y = (X * Math.Sin(X));
                    radioButton1.Checked = true;
                }
 
                if (X > 0 && X < 3)
                {
                    Y = (Math.Sqrt(X) / X);
                    radioButton2.Checked = true;
                }
                if (X >= 3)
                {
                    Y = (X * X + 2);
                    radioButton3.Checked = true;
                }
            }
            if (radioButton1.Checked == true)
            {
                Y = (X * Math.Sin(X));
            }
            if (radioButton2.Checked == true)
            {
                Y = (Math.Sqrt(X) / X);
            }
            if (radioButton3.Checked == true)
            {
                Y = (X * X + 2);
            }
 
            if (checkBox1.Checked == true)
            {
                Y = Y * 2;
            }
            s = Convert.ToString(Y);
            label1.Text = "";
            textBox1.Focus();
            label1.Text = "y= " + s;
        }
 
    }
}
P91 вне форума Ответить с цитированием
Старый 19.09.2013, 23:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему-то считает только по третьей формуле и не переключает кнопки после вычисления.
Наверное потому что radioButton2.Checked = true; рекурсивно вызывает обработчик переключения, который вызывает Calculate();
Менять нужно стратегию в корне, и переносить вычисления в обработчики радиокнопок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти: С, Q, S.... xDragONx Фриланс 0 10.06.2013 11:21
Что в этих строках не так--найти количество симв., и найти в строке букву и измер. длину(2, 3 -с помощ. масивов) символ, Max11 Общие вопросы C/C++ 2 15.05.2012 08:11
Для матрицы и массива (заданы номера столбцов) найти минимальные элементы, поместить в массив, найти сред. ариф.(Delphi) nucweapon Помощь студентам 5 26.10.2011 09:37
ООП (паскаль) - дан ромб. найти площадь. построить пирамиду, найти её площадь Rfn.if Помощь студентам 0 27.04.2011 16:10
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44