Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 21:08   #1
Катерина19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 40
По умолчанию Блок-схема калькулятора Delphi

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.




В блок-схеме, как сделать переприсваивание переменных
Вложения
Тип файла: doc блок-схема.doc (16.8 Кб, 46 просмотров)
Satana21
Катерина19 вне форума Ответить с цитированием
Старый 18.04.2014, 11:33   #2
AnryKZKZ
Пользователь
 
Регистрация: 15.04.2014
Сообщений: 62
По умолчанию

Если Вас не затруднит - могли бы Вы в код вписать комментарии... Очень помогает когда хочешь разобраться с программой. И потом - а что вам мешает P1:=itog ?
как я понимаю - когда вы нажимаете клавишу "очистить все" (а-ля C) - у вас удаляются оба значения P1 и P2. Когда после знака "=" нажимаете следующий знаки или клавишу (для выполнения математических операций) - делайте P1:=itog.
Ну это сугубо мое мнение...
AnryKZKZ вне форума Ответить с цитированием
Старый 18.04.2014, 11:47   #3
Катерина19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от AnryKZKZ Посмотреть сообщение
Если Вас не затруднит - могли бы Вы в код вписать комментарии... Очень помогает когда хочешь разобраться с программой. И потом - а что вам мешает P1:=itog ?
как я понимаю - когда вы нажимаете клавишу "очистить все" (а-ля C) - у вас удаляются оба значения P1 и P2. Когда после знака "=" нажимаете следующий знаки или клавишу (для выполнения математических операций) - делайте P1:=itog.
Ну это сугубо мое мнение...


Вод код калькулятора с комментариями
Вложения
Тип файла: rar Калькулятор.rar (262.1 Кб, 19 просмотров)
Satana21
Катерина19 вне форума Ответить с цитированием
Старый 18.04.2014, 16:16   #4
AnryKZKZ
Пользователь
 
Регистрация: 15.04.2014
Сообщений: 62
По умолчанию

Примерный вариант решения во вложении.
Сорри, комменты было некогда вставлять.
Исполняемый файл (при необходимости) могу выслать в личную почту - около 2-х Мб (Delphi XE2)
Вложения
Тип файла: rar Calc.rar (87.7 Кб, 15 просмотров)
AnryKZKZ вне форума Ответить с цитированием
Старый 18.04.2014, 16:38   #5
Катерина19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от AnryKZKZ Посмотреть сообщение
Примерный вариант решения во вложении.
Сорри, комменты было некогда вставлять.
Исполняемый файл (при необходимости) могу выслать в личную почту - около 2-х Мб (Delphi XE2)
___________________________________ ______________________________

Мне не надо код программы. Мне просто в блок-схеме (в конце ) нужно сделать переприсваивание переменных.
Satana21
Катерина19 вне форума Ответить с цитированием
Старый 18.04.2014, 17:30   #6
AnryKZKZ
Пользователь
 
Регистрация: 15.04.2014
Сообщений: 62
По умолчанию

Для переприсваивания используем вспомогательную переменную. По ней смотрим - первое это действие или нет. Если не первое - присваиваем P1=itog. Посмотрите код. По нему все более-менее понятно. К тому же использовал такой же код как и у Вас.
AnryKZKZ вне форума Ответить с цитированием
Старый 18.04.2014, 17:38   #7
Катерина19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от AnryKZKZ Посмотреть сообщение
Для переприсваивания используем вспомогательную переменную. По ней смотрим - первое это действие или нет. Если не первое - присваиваем P1=itog. Посмотрите код. По нему все более-менее понятно. К тому же использовал такой же код как и у Вас.

___________________________________ _______________________________

А как именно в схеме это сделать????
Satana21
Катерина19 вне форума Ответить с цитированием
Старый 18.04.2014, 18:02   #8
AnryKZKZ
Пользователь
 
Регистрация: 15.04.2014
Сообщений: 62
По умолчанию

Нужно схему немного переделать. Чуть попозже скину свой вариант.
AnryKZKZ вне форума Ответить с цитированием
Старый 18.04.2014, 18:09   #9
Катерина19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от AnryKZKZ Посмотреть сообщение
Нужно схему немного переделать. Чуть попозже скину свой вариант.
___________________________________ ______________________________

Хорошо. Спасибо!)
Satana21
Катерина19 вне форума Ответить с цитированием
Старый 19.04.2014, 09:58   #10
AnryKZKZ
Пользователь
 
Регистрация: 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.
AnryKZKZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок-схема для работы с массивами. 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