Что нового

Четное не четное число

mexan

Администратор
Сообщения
498
Симпатии
58
#1
Написал программку, своего рода ответ посту;).
Screenshot_1.png Screenshot_2.png
Описание:
Программа проверяет любое целое число, на четность и не четность.

Особенности:
  • проверка любого по длине целого числа
  • очистка поля для ввода числа
  • проверка на "пустоту", поля для ввода числа
  • выход из программы, через Меню
  • комментарии всего кода
C#:
using System;
using System.Drawing;
using System.Numerics;
using System.Windows.Forms;


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

        private void button2_Click(object sender, EventArgs e)
        {
            //очистка textBox1
            textBox1.Clear();
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //закрываем форму (выход из программы)
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //создаем переменную, для хранения введенных в textBox1 чисел
            BigInteger a = BigInteger.Parse("0" + textBox1.Text);

            //проверяем условия
            //если поле пусто, окрашиваем textBox1 в красный цвет и сообщаем об этом через label1
            if (textBox1.Text == "")
            {
                label1.Visible = true;
                textBox1.BackColor = Color.LightCoral;
            }
            //проверяем введенное в textBox1 число на четность и нечетность
            else
                if (a % 2 == 0)
            {
                MessageBox.Show("Четное");
            }
            else
            {
                MessageBox.Show("Не четное");
            }
        }

        private void textBox1_Enter(object sender, EventArgs e)
        {
            //убираем подсветку textBox1 и сообщение label1, при вставке курсора в textBox1
            label1.Visible = false;
            textBox1.BackColor = Color.White;
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //запрещаем вводить в textBox1, все кроме числовых значений
            char number = e.KeyChar;

            if (!Char.IsDigit(number))
            {
                e.Handled = true;
            }
        }
    }
}
GitHub.com: https://github.com/mygedz/even_not_even
 

Вложения

Последнее редактирование:

mexan

Администратор
Сообщения
498
Симпатии
58
#2
Проблемы с которыми я столкнулся в процессе написания программы.
  1. ошибка
    в строке int a = int.Parse(textBox1.Text);:
    System.FormatException: "Входная строка имела неверный формат."
    Ошибка появляется, если в textBox1 ничего не вводить и нажать OK.
    решение:
    C#:
    int a = Convert.ToInt32("0" + textBox1.Text);
  2. ошибка:
    в строке int a = int.Parse("0" + textBox1.Text);
    System.OverflowException: "Значение было недопустимо малым или недопустимо большим для Int32."
    Ошибка появляется, если в textBox1, ввести допустим очень длинное число.
    Причина ошибки в данном случае понятна, так как у переменной int диапазон от -2 147 483 648 до 2 147 483 647. Тот же long. так же не подходил, так как у него тоже есть определенный диапазон от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
    Поэтому было принято использовать BigInteger, у которого нет ограничений. Не забываем, что чтобы использовать BigInteger, надо подключить библиотеку System.Numerics.
    решение:
    C#:
    BigInteger a = BigInteger.Parse("0" + textBox1.Text);
 
Последнее редактирование:

mexan

Администратор
Сообщения
498
Симпатии
58
#3
Можно использовать немного другую логику программы:
Для того, чтобы проверить введенное число на четность, совсем необязательно конвертировать его в int. Можно просто проверить последний введенный символ. Если это цифра 0, 2, 4, 6, или 8, то число четное. Если цифра 1, 3, 5, 7, или 9, то число нечетное. Если другой символ, то ошибка.
Попробую ее реализовать.
 
Последнее редактирование:
Вверх Снизу