Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите в чем дело в коде есть два лаб

ITBR Ученик (12), на голосовании 1 неделю назад
 private: 
bool isNewNumber = false; // Добавьте эту переменную

System::Void result_Click(System::Object^ sender, System::EventArgs^ e) {
Button^ button = safe_cast(sender);

// Если начинается ввод нового числа, очистите result_lab
if (isNewNumber) {
this->result_lab->Text = "";
isNewNumber = false;
}

// Добавьте новое число в result_lab, если он не равен "0"
if (this->result_lab->Text != "0") {
this->result_lab->Text += button->Text;
} else {
this->result_lab->Text = button->Text;
}
}

System::Void math_action(Char action) {

double second_num = 0;
if (!String::IsNullOrEmpty(this->result_lab->Text)) {
second_num = System::Convert::ToDouble(this->result_lab->Text);
}

this->first_num += second_num; // Складываем первое число с вторым
this->user_action = action;
isNewNumber = true; // Устанавливаем флаг, что начинается ввод нового числа
this->result_lab2->Text = System::Convert::ToString(this->first_num) + " " + action; // Отображаем first_num и действие в result_lab2

if (this->user_action != '\0') {
this->first_num = 0; // Обнуляем first_num после каждого действия, но только если уже было выбрано действие
}
}
есть два лабабеля нижний и верхний я хотел сделать чтоб в верхнем записывалось каждая операция по типу сложение а в нижний результат выводилось хотел сделать как в виндовом калкуляторе но почему то перестало работать сложение и оно вообще не складывает подскажите знатоки в чем проблема ввожу второе число для сложение и оно не складывает с первым а просто вверху отображается второе число
Голосование за лучший ответ
Беспрекословный Эксперт Мыслитель (5795) 1 месяц назад
Ваш код содержит логику для работы с калькулятором, где вы хотите обрабатывать ввод чисел и математические действия. Однако, есть несколько потенциальных проблем, которые могут мешать правильной работе сложения.

В методе math_action, вы добавляете второе число (second_num) к first_num и затем сразу обнуляете first_num, если уже было выбрано действие (user_action != '\0'). Это кажется немного странным, так как это приведет к тому, что вы теряете значение first_num каждый раз, когда выполняется какое-либо действие. Возможно, вы хотели обнулить first_num только после завершения операции (например, после нажатия кнопки равно).

Предполагаемая логика работы должна быть следующей:

Пользователь вводит первое число, которое сохраняется в first_num.
Пользователь выбирает действие (например, сложение), и флаг isNewNumber устанавливается в true.
Пользователь вводит второе число, которое затем добавляется к first_num, если действие это сложение.
Результат выводится на экран, и в first_num сохраняется результат операции.
Таким образом, попробуйте изменить логику в методе math_action таким образом, чтобы сохранять first_num до выполнения следующего действия:
 System::Void math_action(Char action) { 
double second_num = 0;
if (!String::IsNullOrEmpty(this->result_lab->Text)) {
second_num = System::Convert::ToDouble(this->result_lab->Text);
}

if (this->user_action != '\0') {
switch(this->user_action) {
case '+': this->first_num += second_num; break;
// Добавьте другие операции, если нужно
// case '-': this->first_num -= second_num; break;
// ...
}
this->result_lab->Text = System::Convert::ToString(this->first_num); // Вывод результата на экран
this->user_action = '\0'; // Сброс выбранного действия
} else {
this->first_num = second_num; // Сохранение введенного числа как first_num, если действие не выбрано
}

isNewNumber = true; // Устанавливаем флаг, что начинается ввод нового числа
this->result_lab2->Text = System::Convert::ToString(this->first_num) + " " + action; // Отображаем first_num и действие в result_lab2
}
Также убедитесь, что вы правильно обрабатываете нажатие кнопки равно (=), где и должно происходить окончательное сложение (или другая операция) и вывод результата. Убедитесь, что first_num обнуляется в правильный момент, чтобы предотвратить нежелательное суммирование со старыми значениями.
Похожие вопросы