Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 10.02.2014
Сообщений: 45
1

Нужно оптимизировать код вывода строки-описания для числа

10.09.2014, 17:55. Показов 898. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
namespace If
{
    class Program
    {
        static void Main(string[] args)
        {
            If30();
        }
        /*
          Дано целое число в диапазоне от -99999 до +99999.Вывести его строку описание вида: 
          Отрицательное нечетное пятизначное число и т.д. ...
         */ 
        public static void If30 ()
        {
            Loop:
            int x = Int32.Parse (Console.ReadLine ());
            if (x < 0) 
            {
                if (x % 2 != 0)
                {
                    if ((x < -9999) & (x>-100000))
                    {
                        Console.WriteLine("{0} - Отрицательное нечетное пятизначное число", x);
                    }
                    else
                        if ((x < -999) & (x>-10000))
                    {
                        Console.WriteLine("{0} - Отрицательное нечетное четырехзначное число", x);
                    }
                    else
                        if ((x < -99) & (x>-1000))
                    {
                        Console.WriteLine("{0} - Отрицательное нечетное трехзначное число", x);
                    }
                    else
                        if ((x < -9) & (x>-100))
                    {
                        Console.WriteLine("{0} - Отрицательное нечетное двузначное число", x);
                    }
                    else
                        if ((x < 0) & (x>-10))
                    {
                        Console.WriteLine("{0} - Отрицательное нечетное однозначное число", x);
                    }
                }
                else
                    if (x % 2 == 0)
                {
                    if ((x < -9999) & (x>-100000))
                    {
                        Console.WriteLine("{0} - Отрицательное четное пятизначное число", x);
                    }
                    else
                        if ((x < -999) & (x>-10000))
                    {
                        Console.WriteLine("{0} - Отрицательное четное четырехзначное число", x);
                    }
                    else
                        if ((x < -99) & (x>-1000))
                    {
                        Console.WriteLine("{0} - Отрицательное четное трехзначное число", x);
                    }
                    else
                        if ((x < -9) & (x>-100))
                    {
                        Console.WriteLine("{0} - Отрицательное четное двузначное число", x);
                    }
                    else
                        if ((x < 0) & (x>-10))
                    {
                        Console.WriteLine("{0} - Отрицательное четное однозначное число", x);
                    }
                }
            }
            else
                    if (x > 0) 
            {
                if (x % 2 != 0)
                {
                    if ((x > 9999) & (x<100000))
                    {
                        Console.WriteLine("{0} - Положительное нечетное пятизначное число", x);
                    }
                    else
                        if ((x >999) & (x<10000))
                    {
                        Console.WriteLine("{0} - Положительное нечетное четырехзначное число", x);
                    }
                    else
                        if ((x >99) & (x<1000))
                    {
                        Console.WriteLine("{0} - Положительное нечетное трехзначное число", x);
                    }
                    else
                        if ((x >9) & (x<100))
                    {
                        Console.WriteLine("{0} - Положительное нечетное двузначное число", x);
                    }
                    else
                        if ((x > 0) & (x<10))
                    {
                        Console.WriteLine("{0} - Положительное нечетное однозначное число", x);
                    }
                }
                else
                    if (x % 2 == 0)
                {
                    if ((x > 9999) & (x<100000))
                    {
                        Console.WriteLine("{0} - Положительное четное пятизначное число", x);
                    }
                    else
                        if ((x >999) & (x<10000))
                    {
                        Console.WriteLine("{0} - Положительное четное четырехзначное число", x);
                    }
                    else
                        if ((x >99) & (x<1000))
                    {
                        Console.WriteLine("{0} - Положительное четное трехзначное число", x);
                    }
                    else
                        if ((x >9) & (x<100))
                    {
                        Console.WriteLine("{0} - Положительное четное двузначное число", x);
                    }
                    else
                        if ((x > 0) & (x<10))
                    {
                        Console.WriteLine("{0} - Положительное четное однозначное число", x);
                    }
                }
            }
 
            goto Loop;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2014, 17:55
Ответы с готовыми решениями:

Нужно оптимизировать код
Я новичок, и о том, как сделать код быстрее и правильнее не очень хорошо понимаю. Программа...

Программа для вывода описания числа
Дано целое число, лежащее в диапазоне от -99 до 99. Вывести строку – словестное описание данного...

Time limit exceeded Нужно оптимизировать код. ACMP Простые числа Постулат Бертрана
Задача 349 Простые числа из ******** (Время: 0,5 сек. Память: 32 Мб Сложность: 28%) Мое решение:...

Нужно оптимизировать код
Нужно максимально сократить код #include &lt;iostream&gt; using namespace std; int main(int...

3
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
10.09.2014, 18:10 2
Андрей Дружинин,
goto вообще стоит применять в очень редки случаях, ну и естественно если такая куча условий в такого рода задаче, то сразу следует задуматься о методе решения.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Program
    {
        public static void Main(string[] args)
        {           
            int x = Int32.Parse (Console.ReadLine ());
            
            If30(x);
            
            Console.ReadLine();
        }   
        
        
        public static void If30(int x)
        {
            Dictionary<int, string> names = new Dictionary<int, string>
            {
                {1, "однозначное"},
                {2, "двузначное"},
                {3, "трехзначное"},
                {4, "четырехзначное"},
                {5, "пятизначное"}               
            };
            
            bool negative = x < 0;          
            String answer = String.Format("{0} - {1} {2} ", x, negative ? "Отрицательное" : "Положительное", x % 2 == 0 ? "четное" : "нечетное");
            
            if (negative) x *= -1;
            int counter = 0;
            
            while (x >= 1)
            {
                x /= 10;
                counter++;
            }
                        
            answer += String.Format("{0} число", names[counter]);      
            
            Console.WriteLine(answer);
        }
    }
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
10.09.2014, 18:24 3
Как вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
static void Main(string[] args)
{
    do Console.WriteLine(Describe(ReadInt()));
    while (true);
}
 
private static string Describe(int number)
{
    return number == 0 ? "Ноль" : string.Format("{0}{1} {2}значное число",
        GetSign(number),
        GetParity(number),
        GetDigitCount(number));
}
 
private static string GetDigitCount(int number)
{
    int digits = (int)Math.Log10(Math.Abs(number)) + 1;
    switch (digits)
    {
        case 1: return "одно";
        case 2: return "дву";
        case 3: return "трех";
        case 4: return "четырех";
        case 5: return "пяти";
    }
    throw new ArgumentOutOfRangeException();
}
 
private static string GetParity(int number)
{
    return number % 2 == 0 ? "четное" : "нечетное";
}
 
private static string GetSign(int number)
{
    if (number < 0) return "Отрицательное ";
    else if (number > 0) return "Положительное ";
    return string.Empty;
}
 
private static int ReadInt()
{
    int value;
    while (!int.TryParse(Console.ReadLine(), out value) || (uint)value > 99999)
        Console.WriteLine("Неверный ввод.");
    return value;
}
1
1144 / 873 / 506
Регистрация: 09.04.2014
Сообщений: 2,056
10.09.2014, 18:31 4
Цитата Сообщение от kolorotur Посмотреть сообщение
C#
1
int digits = (int)Math.Log10(Math.Abs(number)) + 1;
красиво однако, я б написал банально
C#
1
int digits = Math.Abs(number).ToString().Length;
0
10.09.2014, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2014, 18:31
Помогаю со студенческими работами здесь

Нужно оптимизировать код
Вобщем код не принемает сайт, немного нагружает и по времени не проходит задание Август и...

Нужно оптимизировать код
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode); begin if...

Нужно оптимизировать код
Не могу понять как можно оптимизировать данную программу: var s: string; s1, s2, s3, i,...

Какой sql код нужно применить, для вывода имён только на букву а?
(Access таблицы) Имеется запрос, построеный на основе таблицы Сотрудники. Мне нужно с помощью sql...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru