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

mygedz

Администратор
Сообщения
588
Оценка реакций
62
Написал программку, своего рода ответ посту;).
Screenshot_1.pngScreenshot_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:
 

Вложения

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

mygedz

Администратор
Сообщения
588
Оценка реакций
62
Проблемы с которыми я столкнулся в процессе написания программы.
  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);
 
Последнее редактирование:

mygedz

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

mygedz

Администратор
Сообщения
588
Оценка реакций
62
Так реализовал другой алгоритм данной программы:
Для того, чтобы проверить введенное число на четность, совсем необязательно конвертировать его в int. Можно просто проверить последний введенный символ. Если это цифра 0, 2, 4, 6, или 8, то число четное. Если цифра 1, 3, 5, 7, или 9, то число нечетное. Если другой символ, то ошибка.
C#:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Четное_не_четное
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Clear_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }

        private void verify_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                label1.Visible = true;
                textBox1.BackColor = Color.LightCoral;
            }
            else
            {
                byte value = Convert.ToByte(textBox1.Text[textBox1.Text.Length - 1]);
                if (value % 2 == 0)
                {
                    MessageBox.Show("Четное");
                }
                else
                {
                    MessageBox.Show("Не четное");
                }
            }
        }

        private void textBox1_Enter(object sender, EventArgs e)
        {          
            label1.Visible = false;
            textBox1.BackColor = Color.White;
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char number = e.KeyChar;
            if (!Char.IsDigit(number) && number != 8)
            {
                e.Handled = true;
            }
        }
    }
}
Отличия, по сравнению с версией в шапке:
  • кроме ввода цифр, теперь модно пользоваться и клавишей Backspace
  • проверка на четность и нечетность, происходит за счет проверки последней цифры
 

Вложения

Последнее редактирование:
Верх Низ