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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2015, 17:22   #1
valun91
Пользователь
 
Регистрация: 27.11.2014
Сообщений: 22
По умолчанию Нужен совет!

Добрый день!! Недавно начал изучать программирование, сделал программку на WinForm, хотелось что бы опытные программисты посмотрели на код и указали на ошибки, достойно выслушаю критику.
Задание: Как правило колонки электронных таблиц (например, Excel) имеют буквенную нумерацию в виде больших букв латинского алфавита (последовательно, слева направо): A, B, ..., Y, Z, AA, AB, ..., AY, AZ, BA, BB, ... и т.д. В то же время каждая колонка имеет порядковый номер: A - 1; B - 2; ... ; Y - 25; Z - 26; AA - 27; AB - 28; ... и т.д. Написать класс, который содержит следующие три метода (названия не обязательно должны быть такими, какими они приведены ниже):
метод определения порядкового номера колонки по ее буквенному номеру
public static int chars2digits(String number): A => 1; B => 2; ...; Z => 26; AA => 27; AB => 28
метод определения буквенного номера колонки по ее порядковому номеру public static String digits2chars(int number): 1 => A; 2 => B; ...; 26 => Z; 27 ==> AA; 28 ==> AB;
метод определения по буквенному номеру колонки номер колонки, которая находится справа от данной
public static String rightColumn(String number): A => B; B => C; ...; Y => Z; Z => AA; AA => AB;
valun91 вне форума Ответить с цитированием
Старый 26.05.2015, 17:26   #2
valun91
Пользователь
 
Регистрация: 27.11.2014
Сообщений: 22
По умолчанию

Код:
namespace jacheiki
{
    public partial class Form1 : Form
    {    
        public bool flag = true;
        public bool flag1 = true;
        public static String digits2chars(int number)
        {
            string str = "";
            string str1 = "";
            if (number > 26)
            {
                while (number > 26)
                {
                    int a = (number / 26);
                    int a1 = number - a * 26;
                    number = a;
                    int a3 = a1 + 64;
                    int i = a3;
                    char a2 = (char)i;
                    str1 = a2.ToString();
                    str = str1 + str;
                }
                int i2 = number + 64;
                char i1 = (char)i2;
                str = i1 + str;
            }
            else
            {
                int i2 = number + 64;
                char i1 = (char)i2;
                str = i1.ToString();
            }

            return str;
        }
        public static double chars2digits(string number)
        {
            string a1 = number.ToUpper();
            char[] b = a1.ToCharArray();
            int[] mas = new int[a1.Length];
            double sum = 0;
            for (int i = 0; i < mas.Length; i++)
            {
                mas[i] = Convert.ToInt32(b[i]) - 64;
            }
            for (int j = mas.Length - 1, i = 0; j >= 0; i++, j--)
            {
                double sum1 = Math.Pow(26, j) * mas[i];
                sum = sum + sum1;
            }
            return sum;
        }
        public static String rightColumn(String number)
        {
            string str = "";
            string str1 = "";
            string a1 = number.ToUpper();
            char[] b = a1.ToCharArray();
            for (int i = 0; i < b.Length; i++)
            {
                if (i == b.Length - 1)
                {
                    if (b[i] == 'Z')
                    {
                        str1 = b[i].ToString();
                        char ch2 = (char)b[i];
                        int ch3 = Convert.ToInt32(ch2) - 25;
                        ch2 = (char)ch3;
                        str1 = str1 + ch2.ToString();
                        str = str + str1;
                    }
                    else
                    {
                        char ch = (char)b[i];
                        int ch1 = Convert.ToInt32(ch) + 1;
                        ch = (char)ch1;
                        str1 = ch.ToString();
                        str = str + str1;
                    }
                }
                else
                {
                    str1 = b[i].ToString();
                    str = str + str1;
                    Console.WriteLine(str);
                }
            }
            return str;
        }
valun91 вне форума Ответить с цитированием
Старый 26.05.2015, 17:27   #3
valun91
Пользователь
 
Регистрация: 27.11.2014
Сообщений: 22
По умолчанию

Код:
public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
                    int i = Convert.ToInt32(e.KeyChar);                                               
                        
            if(textBox1.Text.Length==0)
            {
                flag = true;
               flag1 = true;
            }
       if ((i >= 65 && i <= 90) || (i >= 97 && i <= 122) && flag) 
          {
                            e.Handled = false;
                            flag1 = false;
                            checkBox1.Visible = true;

                        }
                        else
                        {
                            e.Handled = true;
                        }
                        if ((i >= 48 && i <= 57) && flag1)
                        {
                            e.Handled = false;
                            flag = false;
                            checkBox1.Visible = false;
                        }
                        if (e.KeyChar == (char)Keys.Back)
                        {
                            e.Handled = false;
                        }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int n;
            if (int.TryParse(textBox1.Text, out n))
            {
                label1.Text = digits2chars(Convert.ToInt32(          textBox1.Text)).ToString();
                
            }
            else
            {              
                if (checkBox1.Checked)
                {
                    label1.Text = rightColumn(textBox1.Text);
                }
                else
                {
                    label1.Text = chars2digits(textBox1.Text).ToString();
                }
            }
        }            
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                label1.Text = rightColumn(textBox1.Text);
            }
            else
            {
                label1.Text = chars2digits(textBox1.Text).ToString();
            }}}}
valun91 вне форума Ответить с цитированием
Старый 26.05.2015, 19:07   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Код:
public bool flag = true;
public bool flag1 = true;

string str = "";
string str1 = "";
Прочитайте небольшую главу посвящённую именованию переменных в книге "Совершенный код"
8Observer8 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен совет hestika Софт 1 20.08.2015 16:30
Нужен совет. elitewonder PHP 5 01.04.2014 17:09
С++ Нужен совет VKorablev Помощь студентам 3 10.10.2011 17:28
нужен совет Kolya1337 Свободное общение 4 04.04.2011 23:52
Нужен совет, просто совет kardinal94 Общие вопросы Delphi 7 16.12.2010 22:16