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

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

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

Author24 — интернет-сервис помощи студентам
Всем привет! Делаю программу для тренировки устного счёта, значения меняются, выводиться, но при верном ответе срабатывает 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2016, 20:22
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 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 4
Поставьте точку останова на if и посмотрите значения в переменных a, b, c. Возможно вы где-то ошиблись с вводом - выводом данных, ну или конвертация проходит не правильно...
Потом... Если вы хотите посчитать количество правильных ответов в переменной vo, то у вас ничего не выйдет) т.к. она будет обнуляться после каждого нажатия на button1. Вынесите её в видимость класса.

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

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

Я просто новичок, много что не понимаю.
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
17.11.2016, 22:13 7
Ну на 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  [ТС] 8
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 9
Лучший ответ Сообщение было отмечено 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  [ТС] 10
schlawiner, уважение +.

0
18.11.2016, 11:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2016, 11:37
Помогаю со студенческими работами здесь

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

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

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

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


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

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