Перейти к содержанию
СофтФорум - всё о компьютерах и не только

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


Рекомендуемые сообщения

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

Ссылка на комментарий
Поделиться на другие сайты

max15

Зайди на Софтодром, набери там в поиске слово "счисления" и выбирай программу, какая больше понравится.

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
  • 1 месяц спустя...
Гость Форматцевт

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

Ссылка на комментарий
Поделиться на другие сайты

Как хорош Basic :)

Hex; Oct;

правдо, для двоичного самому писать надо, но это не сложно, если знаешь принцип ;)

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...