Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
Darkness190
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 204
1

Как сделать проверку правильности ввода числа

24.12.2013, 07:28. Просмотров 4919. Ответов 6
Метки нет (Все метки)

У меня есть программа, которая переводит из восьмеричной системы счисления в двоичную:
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
       static void Main(string[] args)
       {
       a:  Console.Write("Введите восьмеричное число:");
           string s_8 = Console.ReadLine();
           char[] A = s_8.ToCharArray();
           //В ЭТОМ МЕСТЕ ДОЛЖНА БЫТЬ ПРОВЕРКА!!!
           char c;
           string s_2 = "";
           for (int i = 0; i < A.Length; i++)
           {
               c = A[i];
               switch (c)
               {
                   case '0': s_2 = s_2 + "000"; break;
                   case '1': s_2 = s_2 + "001"; break;
                   case '2': s_2 = s_2 + "010"; break;
                   case '3': s_2 = s_2 + "011"; break;
                   case '4': s_2 = s_2 + "100"; break;
                   case '5': s_2 = s_2 + "101"; break;
                   case '6': s_2 = s_2 + "110"; break;
                   case '7': s_2 = s_2 + "111"; break;
                   case ',': case '.': s_2 = s_2 + ","; break;
               }
           }
           Console.WriteLine("{0}(8)={1}(2)", s_8, s_2);
           Console.ReadKey();
           goto a;
       }
    }
}
Но тут нет проверки правильности ввода числа. Тесть, если в водимом числе присутствуют недопустимые символы (8,9,!."№;% и т.д.) на экран должно выводиться сообщение о неправильном вводе числа. Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 07:28
Ответы с готовыми решениями:

Как сделать проверку на правильность ввода двоичного числа
перевод из 2 СС в 10 СС,а затем в 8 СС как сделать проверку на правильность...

Как сделать проверку вводимого числа с клавиатуры?
Не могу понять, как сделать проверку вводимого числа(подходит оно по условию...

Сделать проверку ввода чисел
Подскажите, пожалуйста, как сделать проверку, чтобы когда пользователь вводил...

Сделать проверку ввода на число и математические знаки
Смысл в том, что в консоль пишется выражение (Например: (2+2)*2) и считается....

Как правильно записать проверку ввода символа
byte a; while (!byte.TryParse(Console.ReadLine(), out a)) //как тут сделать...

6
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
24.12.2013, 07:36 2
Darkness190, копай в сторону регулярок Regex.Matches
0
EVG-1980
190 / 197 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
24.12.2013, 19:06 3
Цитата Сообщение от BigOblom Посмотреть сообщение
копай в сторону регулярок Regex.Matches
сказал человеку который пишет
Цитата Сообщение от Darkness190 Посмотреть сообщение
goto a;
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char[] A = new char [s_8.Length];
           
           int temp; 
           
           for (int i = 0; i < s_8.Length; i++)
           {
               try 
               { 
                   temp = Int32.Parse(s_8[i].ToString());
                   if (temp == 8 || temp == 9) goto a;
                   A[i] = Convert.ToChar(temp); 
 
               }
               catch { goto a; }
           }


Добавлено через 28 минут
Косячу , рабочий вариант

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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
       static void Main(string[] args)
       {
       a:  Console.Write("Введите восьмеричное число:");
           string s_8 = Console.ReadLine();
 
           char[] A = new char [s_8.Length];
           
           int temp; 
           
           for (int i = 0; i < s_8.Length; i++)
           {
               try 
               {
                   if (s_8[i] == '.' || s_8[i] == ',') { A[i] = s_8[i]; }
                   else
                   {
                       temp = Int32.Parse(s_8[i].ToString());
                       if (temp == 8 || temp == 9) goto a;
                       A[i] = s_8[i];
                   }
                   
 
               }
               catch { goto a; }
           }
           
           
 
           
           
           //В ЭТОМ МЕСТЕ ДОЛЖНА БЫТЬ ПРОВЕРКА!!!
           
           string s_2 = "";
           for (int i = 0; i < A.Length; i++)
           {
 
               switch (A[i])
               {
                   case '0': s_2 = s_2 + "000"; break;
                   case '1': s_2 = s_2 + "001"; break;
                   case '2': s_2 = s_2 + "010"; break;
                   case '3': s_2 = s_2 + "011"; break;
                   case '4': s_2 = s_2 + "100"; break;
                   case '5': s_2 = s_2 + "101"; break;
                   case '6': s_2 = s_2 + "110"; break;
                   case '7': s_2 = s_2 + "111"; break;
                   case ',': case '.': s_2 = s_2 + ","; break;
               }
           }
           Console.WriteLine("{0}(8)={1}(2)", s_8, s_2);
           Console.ReadKey();
           goto a;
       }
    }
}
0
pycture
1173 / 561 / 85
Регистрация: 20.09.2012
Сообщений: 1,818
Завершенные тесты: 3
24.12.2013, 20:15 4
Рассадник маньяков просто Всего-то switch дописать до конца надо, а вы тут развели регекспы, for-try.
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
using System;
 
namespace A
{
    public static class Program
    {
        static void Main(string[] args)
        {
        a: Console.Write("Введите восьмеричное число:");
            string s_8 = Console.ReadLine();
            char[] A = s_8.ToCharArray();
 
            char c;
            string s_2 = "";
            for (int i = 0; i < A.Length; i++)
            {
                c = A[i];
                switch (c)
                {
                    case '0': s_2 = s_2 + "000"; break;
                    case '1': s_2 = s_2 + "001"; break;
                    case '2': s_2 = s_2 + "010"; break;
                    case '3': s_2 = s_2 + "011"; break;
                    case '4': s_2 = s_2 + "100"; break;
                    case '5': s_2 = s_2 + "101"; break;
                    case '6': s_2 = s_2 + "110"; break;
                    case '7': s_2 = s_2 + "111"; break;
                    case ',':
                    case '.': s_2 = s_2 + ","; break;
                    default:
                        Console.WriteLine("Введенная строка не может быть преобразованна");
                        goto a;
                }
            }
            Console.WriteLine("{0}(8)={1}(2)", s_8, s_2);
            Console.ReadKey();
            goto a;
        }
    }
}
0
EVG-1980
190 / 197 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
24.12.2013, 20:19 5
pycture, ты задание не правильно прочитал

C#
1
//В ЭТОМ МЕСТЕ ДОЛЖНА БЫТЬ ПРОВЕРКА!!!
0
pycture
1173 / 561 / 85
Регистрация: 20.09.2012
Сообщений: 1,818
Завершенные тесты: 3
24.12.2013, 20:55 6
Задание то оно вот
Цитата Сообщение от Darkness190 Посмотреть сообщение
Тесть, если в водимом числе присутствуют недопустимые символы (8,9,!."№;% и т.д.) на экран должно выводиться сообщение о неправильном вводе числа. Как это сделать?
А это (замечу в коде, а не в задании)
Цитата Сообщение от EVG-1980 Посмотреть сообщение
C#
1
//В ЭТОМ МЕСТЕ ДОЛЖНА БЫТЬ ПРОВЕРКА!!!
Это плод фантазии ТСа, который посчитал, что проверка должна быть отделена от преобразования.
Ну если конечно это не плод фантазии, то надо было четко указать что проверку нужно выполнить до преобразования.
Есть такое требование в задании? А на "нет" и суда нет.
0
Ulluauz
49 / 49 / 40
Регистрация: 17.12.2013
Сообщений: 101
24.12.2013, 22:35 7
а можно еще вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            string s = "";
            int n = 0;
 
            while (n != 10)
            {
                n = (int)Console.ReadKey().KeyChar;
                if (n >= 48 && n <= 55)
                    s += (char)n;
                else
                {
                    Console.WriteLine("Error");
                    break;
                }
            }
0
24.12.2013, 22:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 22:35

Написать регулярное выражение, выполняющее проверку правильности номера телефона
Написать регулярное выражение, выполняющее проверку правильности номера...

Нужна идея как реализовать проверку ввода в клавиатурном тренажёре
Мне нужно реализовать банальный клавиатурный тренажёр для детей. Суть в чём -...

Написать программу с использованием регулярных выражений, выполняющую проверку правильности номера телефона
Написать программу с использованием регулярных выражений, выполняющую проверку...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru