|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.12.2017, 10:59 | #1 |
Пользователь
Регистрация: 27.11.2017
Сообщений: 15
|
калькулятор - первый раз делит, а второй раз не хочет и при этом он возвращает начальную число.
У меня теперь появился другой вопрос по поводу калькулятора, я сделал все что надо на него для полной рабочей состоянии, но я нашёл 1 ошибку всё таки...
У меня знаки не очень правильно работают. Когда я хочу делить: первый раз делит, а второй раз не хочет и при этом он возвращает начальную число. К примеру если я делаю 4\2, то будет 2, а если нажать второй раз то будет 4. Вот сам код: Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Последний раз редактировалось Elock; 13.12.2017 в 18:12. |
14.12.2017, 07:36 | #2 |
Новичок
Джуниор
Регистрация: 12.05.2009
Сообщений: 1
|
Делим 4 на 2 и еще раз на 2....
Правильный ответ 4. Напишите на листке бумаги трехэтажную обыкновенную дробь 4/2/2. 2 уходит в числитель 2 и 2 сокращаются. Ответ 4.
На VB6.0 код простой и доступен для учащихся 9 классов. Решая Ваш пример, дает ответ 1, как бы Вы и хотели. Вот код: Public x As Double Public f As Integer Public y As Timer Private Sub Command1_Click() Form2.Show End Sub Private Sub Command2_Click() Text1.Text = Text1.Text + "," End Sub Private Sub Form_Load() Label1.Caption = Date End Sub Private Sub mnuCos_Click() Text1.Text = Cos(Text1.Text) End Sub Private Sub mnuExit_Click() Unload Me End Sub Private Sub mnuSin_Click() Text1.Text = Sin(Text1.Text) End Sub Private Sub mnuSqr_Click() Text1.Text = (Text1.Text) * (Text1.Text) End Sub Private Sub mnuSqrt_Click() Text1.Text = Sqr(Text1.Text) End Sub Private Sub mnuTan_Click() Text1.Text = Tan(Text1.Text) End Sub Private Sub mnuUnset_Click() Text1.Text = "" End Sub Private Sub Command10_Click() Text1.Text = Text1.Text + "4" End Sub Private Sub Command11_Click() Text1.Text = Text1.Text + "5" End Sub Private Sub Command12_Click() Text1.Text = Text1.Text + "6" End Sub Private Sub Command13_Click() Text1.Text = Text1.Text + "1" End Sub Private Sub Command14_Click() Text1.Text = Text1.Text + "2" End Sub Private Sub Command15_Click() Text1.Text = Text1.Text + "3" End Sub Private Sub Command16_Click() Text1.Text = Text1.Text + "0" End Sub Private Sub mnuSubtract_Click() x = Val(Text1.Text) Text1.Text = "" f = 2 End Sub 'Запоминание числа в текстовом поле после нажатия кнопки "-", очистка текстового поля и установка "флага" равным 2. Private Sub mnuMultiply_Click() x = Val(Text1.Text) Text1.Text = "" f = 3 End Sub 'Запоминание числа в текстовом поле после нажатия кнопки "*", очистка текстового поля и установка "флага" равным 3. Private Sub mnuSeparate_Click() x = Val(Text1.Text) Text1.Text = "" f = 4 End Sub 'Запоминание числа в текстовом поле после нажатия кнопки "/", очистка текстового поля и установка "флага" равным 4. Private Sub mnuIs_Click() If f = 1 Then Text1.Text = Val(Text1.Text) + x If f = 2 Then Text1.Text = x - Val(Text1.Text) If f = 3 Then Text1.Text = Val(Text1.Text) * x If f = 4 And Val(Text1.Text) <> 0 Then Text1.Text = x / Val(Text1.Text) If f = 4 And Val(Text1.Text) = 0 Then Text1.Text = "Деление на 0" End Sub Private Sub Command7_Click() Text1.Text = Text1.Text + "7" End Sub Private Sub Command8_Click() Text1.Text = Text1.Text + "8" End Sub Private Sub Command9_Click() Text1.Text = Text1.Text + "9" End Sub Private Sub mnuSumma_Click() x = Val(Text1.Text) Text1.Text = "" f = 1 End Sub Private Sub Timer1_Timer() Label2.Caption = Time Label3.Caption = WeekdayName(DatePart("w", Date, vbMonday)) End Sub Последний раз редактировалось ildar_50; 14.12.2017 в 08:00. Причина: конкретизация ответа. |
14.12.2017, 12:51 | #3 |
Пользователь
Регистрация: 27.11.2017
Сообщений: 15
|
Вроде я всё понял, но что в твоём коде означает Text1.Text????
Но честно как-то подозрительный код + его тяжело довольно читать :с Последний раз редактировалось Elock; 14.12.2017 в 12:55. |
14.12.2017, 13:36 | #4 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
То же, что и у Вас:
Код:
Ну и так, пара рекомендаций: 1) логику лучше не мешать с UI и выносить в отдельный модуль. В Вашем случае все вычисления можно было бы оформить в виде функций, описать в отдельном модуле и вызывать из модуля формы. 2) пишите юнит-тесты на логику, это помогает чинить баги на этапе разработки. 3) пользуйтесь дебагом и прочими инструментами трассировки кода, чтобы локализовать место возникновения ошибки. 4) избавляйтесь от глобальных переменных везде, где это возможно. Если есть класс - вынесите их в секцию private класса. Или вообще лучше объявлять их внутри тех процедур/функций, где они используются.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 14.12.2017 в 13:51. |
14.12.2017, 20:24 | #5 | |
Пользователь
Регистрация: 27.11.2017
Сообщений: 15
|
Цитата:
У меня вопрос где именно ошибка,а не какие программы где выдаються ошибки o_O Просто подскажи где мне надо изменить код...... Код:
|
|
15.12.2017, 09:54 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
а команды + - * при повторном нажатии разве работают?! в процедуре Button_EqClick И выложите архив с исходниками проекта. |
|
15.12.2017, 19:50 | #7 |
Пользователь
Регистрация: 27.11.2017
Сообщений: 15
|
|
15.12.2017, 23:18 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
18.12.2017, 21:29 | #9 |
Пользователь
Регистрация: 27.11.2017
Сообщений: 15
|
Блин превышает норма мегабайтов на форуме :с
|
18.12.2017, 23:33 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Это Вы три дня архив запаковывали? Не быстро...
во-первых, запакуйте в архив только файлы с расширением *.pas, *.lfm, *.lpr, *.lpi архив получится ОЧЕНЬ маленький. во-вторых, на крайний случай, если весь тот stuff, что Вы засунули в архив (включая EXE файлы, отладочную информацию, сохранённые версии и прочая), привёл к тому, что архив стал огромным и не проходит на форум - можно его выложить на любой файлообменни или в облачное хранилище. Ну, например, disk.yandex.ru. или http://rgho.st или любой другой. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дан ряд любых чисел. Когда повторяется число второй раз, то его надо удалить. | Katia1234 | Помощь студентам | 6 | 05.05.2012 10:09 |
первый раз в VBA | ГОСЕАН | Помощь студентам | 0 | 23.04.2012 04:41 |
этот код первый раз то окно сначала сворачивается, а потом сразу восстанавливается, а когда вызываешь второй, окно сворачивается? | Аlex | Общие вопросы Delphi | 4 | 16.08.2008 11:51 |