Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.06.2014, 00:24
Colosal Colosal вне форума
Прохожий
 
Регистрация: 26.05.2014
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Блок схема

Помогите пожалуйста составить блок-схему к этой программе
Код:
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls;
Типы данных:	
type
TForm1 = class(TForm)
Edit1: TEdit;
RadioGroup1: TRadioGroup;
Label1: TLabel;
Button1: TButton;
RadioGroup2: TRadioGroup;
Label2: TLabel;
Label3: TLabel;
StatusBar1: TStatusBar;
procedure Edit1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
В разделе описания идентификаторов внесены следующие пункты:
Form1: TForm1; {форма окна}
vv1 : string; {переменная типа (целое число)string для ввода информации в строку «переводимое число»}
m,m1,cH2, i : integer;{переменные строкового типа(string) m, m1 используется для радиогрупп «Исходная система» и «Конечная система», cH2 вспомогательная переменная для перевода чисел, I переменная для циклов,}
implementation
{$R *.DFM}
В программе использованы следующие функции и процедуры:
1)Функция переводит данные из типа char в тип integer. Входные данные это переменная «a» типа char, выходные данные типа integer. Принцип работы программы заключается в том, что переменная «а» переводиться в ASCII код, и отнимается определённое число(55,48,87), вследствие чего получается число в десятичном виде. 55 - отнимается если символ «а» в диапазоне [‘A’..‘F’], 87 – если диапазон [‘a’..‘f’] и 48 – если диапазон [‘0’..‘9’].
function perevod0(a:char):integer;
var
c: integer;
begin
case a of
'A'..'F': c := ord(a) - 55;
'a'..'f': c := ord(a) - 87;
'0'..'9': c := ord(a) - 48;
end;
perevod0 := c;
end;
2) Функция переводит из десятичной системы в систему Е. «A» - переменная типа integer, служит для ввода десятичного числа. Переменная «е» типа integer служит для ввода системы счисления в которую нужно перевести число в моей программе e := m1(т.е. то что выбирается в радиогруппе «Конечная система »)
function perevod1(a:integer;e: integer): string;
var
l,j : string;
z,c,b,d: integer;
begin
repeat{Начало цикла}
c := a mod e;{с это остаток от деления десятичного числа на систему счисления }
if (e = 16) and (c>9) then l:= l + chr(c+55) else l:= l + chr(c+48);{Если система счисления шестнадцатеричная и остаток от деления больше 9, то число становиться от A до F, иначе число записывается от 0 до 9}
if a <> 0 then b := a div e;{Если а неравно нулю то b присваивается целочисленное деление а на е}
if b9) then l:= l + chr(b+55) else l:= l + chr(b+48);
{Если B меньше системы счисления, то если система счисления шестнадцатеричная и остаток от деления больше 9, то число становиться от A до F, иначе число записывается от 0 до 9}
a := b; {a присваивается b }
until (b<="" p="">
for i:= length(l) downto 1 do{Цикл который идет назад т.е 3,2,1}
if (l[i]='0') and (z = 0) then else begin j:=j+ l[i]; z:=1 end;{Условный оператор переворачивает строку задом наперед}
perevod1 := j;
end;
3) Функция проверяет, введены ли числа в диапазоне [‘0’..‘9’, ‘A’..‘F’, ‘a’..‘f’], и включены ли радиогруппы. Vv1 – строка ввода типа string.
Вывод типа integer если ошибка равно 1 иначе 0.
function error1(vv1:string):integer;
begin
for i := 1 to length(vv1) do {цикл от одного до конца строки ввода вспомогательная переменная i}
if vv1 = '' then error1 :=1{Если строка ввода пустая то error1 присваивается 1}
else{иначе, если vv1[i]='0'..'9','a'..'f','A'..'F' не какого действия не происходит, иначе error1 присваивается 1}
begin
case vv1[i] of
'0'..'9','a'..'f','A'..'F':;
else error1 :=1;
end;
end;
end;
4) Функция возводит целое число в степень. x – это число в которое требуется возвести в степень, N – степень в которую надо возвести число вывод информации в типе integer.
function step(n:integer; x : integer): integer;
var
y: integer;
begin
y:=1;
for i:= 1 to n do{Цикл задает число умножений}
y := y*x;{умножает число которое требуется возвести в цикл на Y и присваивает значение Y}
step := y;
end;
5) Присваивает переменной vv1 входные данные.
procedure TForm1.Edit1Change(Sender: TObject);
begin
vv1:= edit1.text;
end;
6)Функция присваивает радиогруппе «Исходная система» значение.
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case radiogroup1.ItemIndex of { Определяет ItemIndex и присваивает m данные типа integer согласно условию}
0: m:=2;
1: m:=8;
2: m:=10;
3: m:=16;
end;
end;
7)Функция срабатывает на нажатие кнопки «Перевести». Переводит из 2,8,10,16-ой системы счисления в десятичную систему передаёт данные b выполняет функцию perevod0.Так же выводит полученный результат на экран.
procedure TForm1.Button1Click(Sender: TObject);
var
n : integer;
begin
if error1(vv1) <> 1 then {Если error1 не равно 1 то }
begin
cH2 :=0;
for i := 0 to length(vv1)-1 do {Начало цикла FOR}
begin n
n:=perevod0(vv1[length(vv1)-i])*step(i,m);{выполняется формула  AiMi}
cH2 := cH2+n;
end;
label1.Caption := perevod1(cH2,m1);{На экран выводиться переведённое число}
end
else label1.Caption := 'ОШИБКА ВВОДА!!!'; {иначе на экран выводиться 'ОШИБКА ВВОДА!!!'; }
end;
8) Функция присваивает радио группе Исходная система значение. procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
case radiogroup2.ItemIndex of{ Определяет ItemIndex и присваивает m данные типа integer согласно условию}
0: m1:=2;
1: m1:=8;
2: m1:=10;
3: m1:=16;
end;
end;
end.
lmikle: пользуемся тегами!

Последний раз редактировалось lmikle, 09.06.2014 в 07:01.
Ответить с цитированием
  #2  
Старый 10.06.2014, 00:06
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Цитата:
Помогите пожалуйста составить блок-схему к этой программе
У тебя код с подробнейшими комментариями. Что именно у тебя не получается?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #3  
Старый 10.06.2014, 00:58
Colosal Colosal вне форума
Прохожий
 
Регистрация: 26.05.2014
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
У тебя код с подробнейшими комментариями. Что именно у тебя не получается?
Я просто дуб дубом в этом)) Если бы умел не просил бы помощи)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter