![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.03.2014
Сообщений: 40
|
![]()
var
Form1: TForm1; p1,p2,itog,x:real; znak:char; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'1'; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'2'; end; procedure TForm1.Button3Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'3'; end; procedure TForm1.Button4Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'4'; end; procedure TForm1.Button5Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'5'; end; procedure TForm1.Button6Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'6'; end; procedure TForm1.Button7Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'7'; end; procedure TForm1.Button8Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'8'; end; procedure TForm1.Button9Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'9'; end; procedure TForm1.Button14Click(Sender: TObject); begin Edit1.Text:=Edit1.Text+'0'; if Edit1.Text='00' then Edit1.Text:='0'; end; procedure TForm1.Button16Click(Sender: TObject); begin if pos(',',Edit1.Text)=0 then Edit1.Text:=Edit1.Text+','; end; procedure TForm1.Button15Click(Sender: TObject); Var itog:real; i:char; begin p2:=StrToFloat(Edit1.Text); case znak of '+': itog:=p1+p2; '-': itog:=p1-p2; '*': itog:=p1*p2; '/': begin if p2=0 then begin ShowMessage('Нельзя делить на ноль'); exit end else itog:=p1/p2; end; end; Edit1.Clear; Edit1.Text:=FloatToStr(itog); end; procedure TForm1.Button10Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); znak:='+'; Edit1.Clear; end; procedure TForm1.Button11Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); znak:='-'; Edit1.Clear; end; procedure TForm1.Button12Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); znak:='*'; Edit1.Clear; end; procedure TForm1.Button13Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); znak:='/'; Edit1.Clear; end; procedure TForm1.Button17Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); x:=sqrt(p1); Edit1.Clear; Edit1.Text:=FloatToStr(x); end; procedure TForm1.Button18Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); x:=p1*p1; Edit1.Clear; Edit1.Text:=FloatToStr(x); end; procedure TForm1.Button19Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); x:=1/p1; Edit1.Clear; Edit1.Text:=FloatToStr(x); end; procedure TForm1.Button20Click(Sender: TObject); begin Edit1.Clear; end; procedure TForm1.Button21Click(Sender: TObject); begin p2:=0; Edit1.Clear; end; procedure TForm1.Button22Click(Sender: TObject); begin p1:=StrToFloat(Edit1.Text); x:=p1*(-1); Edit1.Clear; Edit1.Text:=FloatToStr(x); end; procedure TForm1.Button23Click(Sender: TObject); var s:string; begin s:=Edit1.Text; delete(s,length(s),1); Edit1.Text:=s; // end; procedure TForm1.Button24Click(Sender: TObject); begin Edit1.Text:=FloatToStr((p1*StrToFlo at(Edit1.Text)/100)); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case key of #43 : Button10.Click; #45 : Button11.Click; #42 : Button12.Click; #47 : Button13.Click; #13 : Button15.Click; end; if Key in ['a'..'z'] + ['A'..'Z'] + ['А'..'Я'] + ['а'..'я'] + ['.'] then key :=#0; begin if edit1.Text = '0' then if Key = '0' then edit1.Text:= ''; end; end; procedure TForm1.Edit1Change(Sender: TObject); var i,n: integer; begin n:=pos(',',Edit1.Text); for i:=n+1 to length(Edit1.Text) do if Edit1.Text[i]=',' then Edit1.Clear; end; end. В блок-схеме, как сделать переприсваивание переменных
Satana21
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
![]()
Если Вас не затруднит - могли бы Вы в код вписать комментарии... Очень помогает когда хочешь разобраться с программой. И потом - а что вам мешает P1:=itog ?
как я понимаю - когда вы нажимаете клавишу "очистить все" (а-ля C) - у вас удаляются оба значения P1 и P2. Когда после знака "=" нажимаете следующий знаки или клавишу (для выполнения математических операций) - делайте P1:=itog. Ну это сугубо мое мнение... |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 05.03.2014
Сообщений: 40
|
![]() Цитата:
Вод код калькулятора с комментариями
Satana21
|
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
![]()
Примерный вариант решения во вложении.
Сорри, комменты было некогда вставлять. Исполняемый файл (при необходимости) могу выслать в личную почту - около 2-х Мб (Delphi XE2) |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 05.03.2014
Сообщений: 40
|
![]() Цитата:
Мне не надо код программы. Мне просто в блок-схеме (в конце ) нужно сделать переприсваивание переменных.
Satana21
|
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
![]()
Для переприсваивания используем вспомогательную переменную. По ней смотрим - первое это действие или нет. Если не первое - присваиваем P1=itog. Посмотрите код. По нему все более-менее понятно. К тому же использовал такой же код как и у Вас.
|
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 05.03.2014
Сообщений: 40
|
![]() Цитата:
___________________________________ _______________________________ А как именно в схеме это сделать????
Satana21
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
![]()
Нужно схему немного переделать. Чуть попозже скину свой вариант.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 05.03.2014
Сообщений: 40
|
![]()
___________________________________ ______________________________
Хорошо. Спасибо!)
Satana21
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
![]()
Примерный алгоритм таков:
1. Начало 2. Обнуляем переменные: P1, P2 – исходные данные; ITOG – полученное значение; X – счетчик операций; ZNAC – тип операции. 3. Получаем значение P1 4. Получаем значение ZNAC 5. Если X<>0 то значение P1=ITOG, а введенное значение является P2 и переходим к шагу 7 6. Получаем значение P2 7. Вычисление: если нажата клавиша «+» - ITOG=P1+P2; если «-» - ITOG=P1-P2; если «*» - ITOG=P1*P2; если «/» - проверяем P2=0: если да, выводим сообщение «На ноль делить нельзя», прерываем вычисление и выходим на шаг 3; если нет ITOG=P1/P2 8. Увеличиваем счетчик операций на 1 (X=X+1) и переходим на шаг 3. Это все базовое. Если вводить еще сюда и проверку сколько нулей введено, удаление последнего числа (CE) или очистка полностью (С), да и прочие операции (x^2, 1/X, %, sqrt) - то алгоритм нужно будет корректировать. Но в целом основа такая. Вы посмотрите по коду, который я размещал ранее. Последний раз редактировалось AnryKZKZ; 19.04.2014 в 10:01. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
блок-схема для работы с массивами. delphi. | Duff-man | Помощь студентам | 1 | 21.07.2011 23:18 |
Delphi блок-схема. | Rustafa13 | Помощь студентам | 9 | 28.06.2011 15:25 |
Блок схема Delphi | Kinder74 | Помощь студентам | 0 | 13.05.2010 21:42 |
Блок-схема калькулятора | SeregaIRK | Помощь студентам | 13 | 26.05.2009 23:01 |
Блок-схема на Delphi | Сид | Фриланс | 4 | 02.05.2009 00:15 |