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

Ложное срабатывание else

17.11.2016, 20:22. Показов 1412. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Делаю программу для тренировки устного счёта, значения меняются, выводиться, но при верном ответе срабатывает else. (на случай серьёзных косяков: при верном ответе должен к значению vo прибавить один, при неверном выдать сообщение)
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Устный_счёт
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void label1_Click(object sender, EventArgs e)//первое число=========================================================================================
        {
 
        }//=========================================================================================================================================================
 
        private void label3_Click(object sender, EventArgs e)//втрое число==========================================================================================
        {
 
        }//=========================================================================================================================================================
 
        private void textBox1_TextChanged(object sender, EventArgs e)//===================================================================значение ведёное человеком
        {
 
        }//=========================================================================================================================================================
 
        private void label6_Click(object sender, EventArgs e)//==============================================================================================проверка
        {
 
        }//=========================================================================================================================================================
 
        public void pvd()
        {
            Random nd = new Random();
                int vo = 0;
                int a = nd.Next(1, 9);
                int b = nd.Next(1, 9);
                label1.Text = a.ToString();
                label3.Text = b.ToString();
                int c = Convert.ToInt32(textBox1.Text);
                if ((a + b) == c) { vo++; }
                else
                {
                    MessageBox.Show("Ошибка, начинай заново.");
                }
                return;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            pvd();
        }
    }//end
}//end
И ещё, как показать кол-во верных ответов в сообщении.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2016, 20:22
Ответы с готовыми решениями:

Ложное "регулярное выражение"
Доброго времени суток. Есть такая задача: написать "регулярное выражение" для того, чтобы найти в файле номера строк, в которых, например,...

Срабатывание события
Такой вопрос. В задаче сказано: в классе машина должно быть событие, которое срабатывает в тот момент, когда скорость равна 100 и более. ...

Срабатывание антивируса
Приветствую, камрады! Пишу на C#, по этому обратился сюда. Но тема вообще относится ко многим ЯП. Суть такова, антивирусник...

9
8 / 8 / 7
Регистрация: 21.08.2015
Сообщений: 90
17.11.2016, 21:02
А можно, хотя бы, прокомментировать функцию pvd и всё что в ней?
1
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 25
17.11.2016, 21:16  [ТС]
Я начинающий прошу прощение.

А как собственно прокомментировать?

Добавлено через 1 минуту
А понял!

Добавлено через 4 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void pvd()
        {
            Random nd = new Random();//рандом
                int vo = 0;// верные ответы
                int a = nd.Next(1, 9);//новое значение 1 слагаемому 
                int b = nd.Next(1, 9);//новое значение 2 слагаемому 
                label1.Text = a.ToString();//вывод в лабелб т. е. отображение
                label3.Text = b.ToString();//вывод в лабель т. е. отображение
                int c = Convert.ToInt32(textBox1.Text);//ответ данный пользователем
                if ((a + b) == c) { vo++; }//верных ответов + 1
                else
                {
                    MessageBox.Show("Ошибка, начинай заново.");//сообщение 
                }
                return;//...
        }
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
17.11.2016, 21:23
Поставьте точку останова на if и посмотрите значения в переменных a, b, c. Возможно вы где-то ошиблись с вводом - выводом данных, ну или конвертация проходит не правильно...
Потом... Если вы хотите посчитать количество правильных ответов в переменной vo, то у вас ничего не выйдет) т.к. она будет обнуляться после каждого нажатия на button1. Вынесите её в видимость класса.

C#
1
2
3
4
        private int vo = 0;
        public void pvd()
        {
           //и т.д.
Показывать колличество правильных ответов как хотите (label или MessageBox например)?
1
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
17.11.2016, 21:34
так у вас по кнопке происходит сразу все, и генерация рандома и считывание из текстбокса и сравнение,т.е. значение в текстбоксе остаётся с прошлого раза, а кнопка уже того, отработала, у вас не тренажер памяти, а угадайка
1
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 25
17.11.2016, 21:37  [ТС]
А можно подробнее где поставить точку?

Добавлено через 1 минуту
Diamante, а как сделать уже не угадай ка значение, а тренер устного счёта.

Я просто новичок, много что не понимаю.
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
17.11.2016, 22:13
Ну на if же вашем.
Цитата Сообщение от NPD Посмотреть сообщение
if ((a + b) == c) { vo++; }//верных ответов + 1
Там где нумерация строк щелкните мышкой. Должна появиться красная точка. Там произойдет остановка программы после того как вы нажмете button1. После этого подведте мышку к вашим переменным a, b, c и отобразиться их значение в данный момент.

Diamante, прав. У вас получается угадайка...
Это в отдельную функциюю
C#
1
2
3
4
5
6
            Random nd = new Random();
                int vo = 0;
                int a = nd.Next(1, 9);
                int b = nd.Next(1, 9);
                label1.Text = a.ToString();
                label3.Text = b.ToString();
Первый раз вызов ее из этой части
C#
1
2
3
4
5
         
public Form1()
        {
            InitializeComponent();
        }
И каждый раз после нажатия button1 перед return в pvd()
1
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 25
18.11.2016, 10:19  [ТС]
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Устный_счёт
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            random();
        }
 
        public static string myvariable;
        
        public int a = 0;
        public int b = 0;    
 
        private void label1_Click(object sender, EventArgs e)//первое число=========================================================================================
        {
 
        }//=========================================================================================================================================================
 
        private void label3_Click(object sender, EventArgs e)//втрое число==========================================================================================
        {
 
        }//=========================================================================================================================================================
 
        private void textBox1_TextChanged(object sender, EventArgs e)//===================================================================значение ведёное человеком
        {
 
        }//=========================================================================================================================================================
 
        private void label6_Click(object sender, EventArgs e)//==============================================================================================проверка
        {
 
        }//=========================================================================================================================================================
 
        public int vo = 0;
        public void pvd()
        {
            int c = Convert.ToInt32(textBox1.Text);//ответ данный пользователем
            if ((a + b) == c) { vo++; }//верных ответов + 1
            else
            {
                MessageBox.Show("Ошибка, начинай заново.");//сообщение 
            }
            random();
            return;//...
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            pvd();
            return;
        }
        private void random()
        {
            Random nd = new Random();
            int vo = 0;
            int a = nd.Next(1, 9);
            int b = nd.Next(1, 9);
            label1.Text = a.ToString();
            label3.Text = b.ToString();
 
        }
    }//end
}//end
Так?
Всё равно пишет что ошибка.
0
12 / 12 / 8
Регистрация: 25.05.2014
Сообщений: 36
18.11.2016, 10:27
Лучший ответ Сообщение было отмечено NPD как решение

Решение

У тебя глобальные переменные есть
C#
1
2
        public int a = 0;
        public int b = 0;
а в методе random() ты создаешь заново, но локальные переменные.
а в методе pvd() у тебя в условии

C#
1
if((a+b) == c)
используются глобальные переменные, которые всегда равны 0
1
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 25
18.11.2016, 11:37  [ТС]
schlawiner, уважение +.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2016, 11:37
Помогаю со студенческими работами здесь

Точное срабатывание по миллисекундам
Как написать программу для выполнения действий точно по миллисекундам (каждую или через 2-5 мс) Например как в OSU! происходит точный...

Поочередное срабатывание таймеров
Есть три таймера, как заставить из сробатывать поочередно с заданным интервалом(задается через textBox) по нажатию кнопки? Причем таймер1...

ложное срабатывание.
Столкнулся с проблемой. У нас на работе стоят считыватели RFID с RS485 интерфейсом вывода. На плате размещен дисплей, контроллер, реле для...

IntersectRect, ложное срабатывание
На форме есть две движущиеся картинки, движение которых задано в таймерах. Для каждой картинки свой. Есть еще третий таймер, в котором...

Плата STM32F103C8T6. Ложное срабатывание кнопки
Подключаю матричную клавиатуру. Ножку B6 в кубе делаю на вход и вешаю на нее одну из кнопок клавиатуры. Через куб также притягиваю ножку к...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru