Jump to content
СофтФорум - всё о компьютерах и не только

Программа для информатике!!Есть такая??


Recommended Posts

Нужна прога для решений задач по информатике, которая переводит числа из одной системы счисления в другую, не подскажите есть ли такая или нет, и если нет, то не хотите ли создать такую прогу??

Link to comment
Share on other sites

а калькулятор винды для чего?нажми инженерный режим

Поясню на всякий случай.

В обычном калькуляторе Windows есть такая функция. Запускай его, делай Вид-Инженерный, потом слева вверху выбирай нужную СС, вводи в ней число, а потом там же щелкай по другой СС. Вот тебе и конвертация

Link to comment
Share on other sites

aTeos , ZnoY , Тролль , пацаны, ну просто спасибо, очень молодцы!!

Добавлено : [mergetime]1108937190[/mergetime]

Вот только проблемка одна, мне важно понять как всё это дело просиходит, а не тупо списать с компа, а потом сдать и получить 5, это не интересно!!

Link to comment
Share on other sites

max15

мне важно понять как всё это дело просиходит

Короче, если хочешь понять, как все это происходит, почитай учебник по информатике - там все очень хорошо описано про позиционные системы счисления и про то, как переводить из одной системы в другую...

Тебе могу предложить исходник своего модуля для работы с двоичными и десятичными числами. Если нужны и шестнадцатиричные, и восьмиричные - процесс их перевода очень похож. Если нужно, обращайся, попробую написать и для них.

unit BinDecTranslate;

interface

{Проверяем, не содержит ли введенное двоичное число другие цифры, кроме 0 и 1}

function BinCheck (a: string): boolean;

{Проверяем, не содержит ли введенное десятичное число лишних знаков}

function DecCheck (a: string): boolean;

{Функция будет возвращать результат расчета a в степени b}

function power (a,b: integer): integer;

{Функция будет выводить максимальную целую степень двойки для данного числа}

{Это нужно при переводе из десятичной в двоичную систему вычитанием степеней}

function MaxPower (a: integer): integer;

{Функция будет переводить числа из двоичной системы счисления в десятичную}

functi[/b]on BinToDec (b: string): real;

{Функция будет возвращать двоичную строку, соответвтвующую десятничному числу}

function DecToBin (d: integer): string;

implementation

{------------------------------------------------------------------------------}

function BinCheck (a: string): boolean;

var i: word; {счетчик цикла}

begin

BinCheck := true; {сначала будет считаться, что число введено правильно}

for i := 1 to length(a) do {затем проверяем каждый символ…}

if (ord(a)<48) or (ord(a)>49) then BinCheck := false; {…по ASCII-коду}

{и если хоть один из них отличен от 0 или 1, то функции присваиваем false}

end;

{------------------------------------------------------------------------------}

function DecCheck (a: string): boolean;

var i: word; {счетчик цикла}

begin

DecCheck := true; {сначала будет считаться, что число введено правильно}

for i := 1 to length(a) do {затем проверяем каждый символ}

if (ord(a)<48) or (ord(a)>57) then DecCheck := false;

{и если хоть один из них отличен десятичных цифр, то функции присваиваем false}

end;

{------------------------------------------------------------------------------}

function power (a,b: integer): integer;

var i: integer; {это у нас будет счетчиком цикла}

res: integer; {а это - промежуточный результат}

begin

res := 1; {ведь есть истина - любое число в нулевой степени равно единице!}

for i := 1 to b do res := res*a; {вот и возведение в степень}

power := res; {осталось лишь присвоить функции значение результата}

if a=0 then power := 0; {любая степень нуля будет равна нулю}

end;

{------------------------------------------------------------------------------}

function MaxPower (a: integer): integer;

var i: word; {это счетчик цикла repeat…until}

temp: integer; {промежуточный результат}

begin

i := 0;

repeat

i := i+1; {будем увеличивать степень до тех пор…}

temp := power(2,i);

until temp > a; {…пока значение двойки в следующей степени не превысит число}

MaxPower := i-1;

end;

{------------------------------------------------------------------------------}

function BinToDec (b: string): real;

var i, temp, pow: word; {значит так, здесь - счетчик, разряд (он будет выделяться

из двоичной строки) и степень двойки}

res: real; {ну а это результат, как и в предыдущей функции}

begin

res := 0; {начальное значение результата}

pow := 0; {степень двойки при первом разряде - нулевая}

for i := length(b) downto 1 do {выделяем последовательно все разряды...}

begin

temp := StrToInt(b); {...}

res := res + temp*power(2,pow); {...и рассчитываем результат}

pow := pow + 1; {степень двойки увеличим, т.к. номер разряда увеличивается}

end;

BinToDec := res; {опять-таки присваиваем функции значение результата}

end;

{------------------------------------------------------------------------------}

function DecToBin (d: integer): string;

var m, t: integer; i: integer; {максимальная степень, промежуточное число и счетчик}

res: string; temp: char; {результат и промежуточные символы}

begin

t := d; {присваиваем t само число, которое нужно перевести}

res := ''; {результат сначала будет равен пустой строке, т.к. его еще нет :bye1:}

m := MaxPower(d); {максимальная степень двойки для числа переводимого числа…}

for i := m downto 0 do {…от нее и будем начинать обратный отсчет}

begin

{если i-тая степень двойки меньше, чем промежуточное число, то…}

if power(2,i)<=t then temp := '1' else temp := '0'; {добавляем 1, иначе - 0}

{и вычитаем из числа другое число: 2 в степени i}

{например, макс. степень двойки для 114 – это 6. Тогда отнимаем От 114 2 в степени 6. 114-64=50. Макс. степень этого нового числа находится при следующем прохождении цикла}

if power(2,i)<=t then t := t-power(2,MaxPower(t));

res := res+temp; {добавляем к результату полученный символ: 0 или 1}

end;

DecToBin := res; {после цикла результат готов}

end;

end.

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
Guest Форматцевт

max15 извини, может я и террорист, но есть такой язык форт, так в нем это проще все решается, и исходники есть. В этом языке система текущего исчисления задается числом 8 разрядным от 2 до 255. Посмотри его, если будет не лень, может он тебе и понравится за одно познакомишься с ОПЗ :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...