Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 15.01.2016
Сообщений: 11

Защита от дурака

10.06.2019, 11:36. Показов 6489. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется метод, который обновляет значения матрицы перед любыми операциями. Значениями могут быть только положительные числа. Матрица представлена в виде textbox' ов. Далее при нажатии на кнопку решить матрица решается определенным методом.

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
public static void GetDataFromUI()
        {
     
           
            for (int i = 0; i < groupes.Controls.Count; i++)
            {
                if (groupes.Controls[i].Tag != null)
                {
                    var ind = groupes.Controls[i].Tag.ToString().Split('|');
                    int row = int.Parse(ind[0]);
                    int col = int.Parse(ind[1]);
 
                    Data[row][col] = int.Parse(groupes.Controls[i].Text);
 
 
private void button2_Click(object sender, EventArgs e)
        {
            if (!groupBox1.Controls.OfType<TextBox>().Any())
            {
                MessageBox.Show("Матрица не задана");
            }
            else
            {    
               
                Core.GetDataFromUI();
 
 
                //Выполняем выбранный метод решения матрицы
 
}
Как сделать защиту от ввода символов, букв и отрицательных чисел.Чтоб при нажатии на button2 выводилось сообщение о некорректном вводе и не выполнялось решение.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2019, 11:36
Ответы с готовыми решениями:

"Защита от дурака" в программе
Подскажите, как написать &quot;защиту от дурака&quot;, которая будет объявлять, что введен неверный символ при заполнении массива, который должен...

Защита от дурака!
Программа среди столбцов нашей матрицы (где первый элемент столбца отрицателен), ищет последний столбец с максимальным количеством...

Защита от дурака
Нужно сделать так что бы в этом куске кода кроме цифр нельзя было нечего вводить(то есть что нельзя было ввести например точку, запятую,...

13
 Аватар для Immo
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
10.06.2019, 11:55
C#
1
2
3
4
if (!int.TryParse(groupes.Controls[i].Text, out int result))
                MessageBox.Show("Ошибка....");
              else 
                 Data[row][col] = result;
Добавлено через 9 минут
а если отрицательное значение то два варианта, показать ошибку
C#
1
2
if(result < 0)
                    MessageBox.Show("Ошибка....");
или же взять модуль элемента
C#
1
Data[row][col] = Math.Abs(result);
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
10.06.2019, 13:55
Цитата Сообщение от evitkriso Посмотреть сообщение
textbox' ов
тебе слово textbox ни о чем не говорит? Есть же numericupdown.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
10.06.2019, 14:45
Цитата Сообщение от Immo Посмотреть сообщение
C#
1
if (!int.TryParse(groupes.Controls[i].Text, out int result))
а если отрицательное значение то два варианта, показать ошибку
Лучше сразу использовать uint.TryParse()
0
0 / 0 / 0
Регистрация: 15.01.2016
Сообщений: 11
10.06.2019, 19:31  [ТС]
C#
1
2
3
4
5
6
7
                   int result;
                    if (!int.TryParse(groupes.Controls[i].Text, out  result))
                    
                        MessageBox.Show("Ошибка....");
                    else
 
                        Data[row][col] = result;
Сообщение об ошибке выскакивает, но при закрытии сообщения все равно выполняется решение, просто значение ячейки в которую введен некорректный символ считается за ноль. А нужно чтоб никаких действий не происходило, если матрица содержит не числа или хотя бы в ту ячейку в которой неверный символ записывался 0.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
10.06.2019, 19:47
Цитата Сообщение от evitkriso Посмотреть сообщение
Сообщение об ошибке выскакивает, но при закрытии сообщения все равно выполняется решение,
Полный код метода дайте.
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
10.06.2019, 19:48
Цитата Сообщение от evitkriso Посмотреть сообщение
C#
1
2
if (!int.TryParse(groupes.Controls[i].Text, out *result))
MessageBox.Show("Ошибка....");
C#
1
2
3
4
5
if (!int.TryParse(groupes.Controls[i].Text, out *result))
{
MessageBox.Show("Ошибка....");
return;
}
0
0 / 0 / 0
Регистрация: 15.01.2016
Сообщений: 11
10.06.2019, 19:58  [ТС]
Код метода целиком.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void GetDataFromUI()
        {
            for (int i = 0; i < groupes.Controls.Count; i++)
            {
                if (groupes.Controls[i].Tag != null)
                {
                    var ind = groupes.Controls[i].Tag.ToString().Split('|');
                    int row = int.Parse(ind[0]);
                    int col = int.Parse(ind[1]);
                  
                    int result;
                    if (!int.TryParse(groupes.Controls[i].Text, out  result))
                    {
                        MessageBox.Show("Ошибка....");
                        return;
                    }
                    else
 
                        Data[row][col] = result;
                }
            }
        }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
10.06.2019, 20:00
Цитата Сообщение от evitkriso Посмотреть сообщение
но при закрытии сообщения все равно выполняется решение,
Цитата Сообщение от evitkriso Посмотреть сообщение
Код метода целиком.
В этом коде нет вызова метода для решения матрицы.
Он вызывается у Вас где-то в другом месте.
0
0 / 0 / 0
Регистрация: 15.01.2016
Сообщений: 11
10.06.2019, 20:17  [ТС]
Тут вызывается

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
  private void button2_Click(object sender, EventArgs e)
        {
            //
            if (!groupBox1.Controls.OfType<TextBox>().Any())
            {
                MessageBox.Show("Матрица не задана");
            }
            else
            {    
 
                /// Обновляем Матрицу
                Core.GetDataFromUI();
 
 
                //Выполняем выбранный метод решения матрицы
 
                if (rbSedlovayaTochka.Checked)
                    Core.FindSpoint(txtResults);
 
                else if (rbSimple.Checked)
                    Core.Simplif();
 
                else if (rbBraunMethod.Checked)
                {
                    Core.BraunMethod(txtResults, txtCount.Text);
                    System.Diagnostics.Process.Start("notepad.exe", "braun.txt");
                }
 
                else if (rbNash.Checked)
                    Core.Nesh(txtResults);
 
                else if (rbMixedStrategies.Checked)
                    Core.MixedStrategies(txtResults);
 
                else if (rbLine.Checked)
                    Core.Line(txtResults);
 
            }
            
        }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
10.06.2019, 20:37
Цитата Сообщение от evitkriso Посмотреть сообщение
Тут вызывается
Измените тип метода GetDataFromUI на bool и возвращайте false при ошибке и true и при успехе.
А при получении значения обрабатывайте в if.
Если false - вывод сообщения и выход
если true - обработка матрицы.
0
0 / 0 / 0
Регистрация: 15.01.2016
Сообщений: 11
10.06.2019, 23:29  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Измените тип метода GetDataFromUI на bool и возвращайте false при ошибке и true и при успехе.
А при получении значения обрабатывайте в if.
Если false - вывод сообщения и выход
если true - обработка матрицы.

А вы могли бы это показать на моем примере, чтоб я не плодил глупые вопросы. Буду признателен.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
11.06.2019, 00:08
Лучший ответ Сообщение было отмечено evitkriso как решение

Решение

Цитата Сообщение от evitkriso Посмотреть сообщение
это показать на моем примере
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static bool GetDataFromUI()
        {
            for (int i = 0; i < groupes.Controls.Count; i++)
            {
                if (groupes.Controls[i].Tag != null)
                {
                    var ind = groupes.Controls[i].Tag.ToString().Split('|');
                    int row = int.Parse(ind[0]);
                    int col = int.Parse(ind[1]);
                  
                    int result;
                    if (!int.TryParse(groupes.Controls[i].Text, out  result))
                    {
                        MessageBox.Show("Ошибка....");
                        return false;
                    }
                    else
 
                        Data[row][col] = result;
                }
            }
            return true;
        }
Добавлено через 49 секунд
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
  private void button2_Click(object sender, EventArgs e)
        {
            //
            if (!groupBox1.Controls.OfType<TextBox>().Any())
            {
                MessageBox.Show("Матрица не задана");
            }
            else
            {    
 
                /// Обновляем Матрицу
               if (! Core.GetDataFromUI())
                   return;
 
 
                //Выполняем выбранный метод решения матрицы
 
                if (rbSedlovayaTochka.Checked)
                    Core.FindSpoint(txtResults);
 
                else if (rbSimple.Checked)
                    Core.Simplif();
 
                else if (rbBraunMethod.Checked)
                {
                    Core.BraunMethod(txtResults, txtCount.Text);
                    System.Diagnostics.Process.Start("notepad.exe", "braun.txt");
                }
 
                else if (rbNash.Checked)
                    Core.Nesh(txtResults);
 
                else if (rbMixedStrategies.Checked)
                    Core.MixedStrategies(txtResults);
 
                else if (rbLine.Checked)
                    Core.Line(txtResults);
 
            }
            
        }
1
0 / 0 / 0
Регистрация: 15.01.2016
Сообщений: 11
11.06.2019, 07:56  [ТС]
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2019, 07:56
Помогаю со студенческими работами здесь

Защита от дурака +
Привет, ребят. Такой вопрос: В эдиты нужно ввести флоатовские числа. Обычно юзаю такой кусок: void __fastcall...

Защита от дурака
Следующая проблема, нужно что бы при вводе букв и символов, программа выдавала сообщение &quot;('Это не является числом, повторите...

Защита от дурака
Здравствуйте. Собственно имею такой код. #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

Защита от дурака
Помогите, пожалуйста. Программа должна печатать только цифры (а не буквы и прочие символы, знак минус может стоять в самом начале) и при...

Защита от дурака
Простое задание - создать матрицу mxm, заполнить в ручную или рандомно целыми , после чего отсортировать и вывести. С заданием я справился,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru