Feur_GOR Опубликовано 16 февраля, 2005 Жалоба Поделиться Опубликовано 16 февраля, 2005 Нужна прога для решений задач по информатике, которая переводит числа из одной системы счисления в другую, не подскажите есть ли такая или нет, и если нет, то не хотите ли создать такую прогу?? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 февраля, 2005 Жалоба Поделиться Опубликовано 16 февраля, 2005 max15 Зайди на Софтодром, набери там в поиске слово "счисления" и выбирай программу, какая больше понравится. Ссылка на комментарий Поделиться на другие сайты Поделиться
ZnoY Опубликовано 16 февраля, 2005 Жалоба Поделиться Опубликовано 16 февраля, 2005 а калькулятор винды для чего?нажми инженерный режим Ссылка на комментарий Поделиться на другие сайты Поделиться
aTeos Опубликовано 17 февраля, 2005 Жалоба Поделиться Опубликовано 17 февраля, 2005 а калькулятор винды для чего?нажми инженерный режим Поясню на всякий случай. В обычном калькуляторе Windows есть такая функция. Запускай его, делай Вид-Инженерный, потом слева вверху выбирай нужную СС, вводи в ней число, а потом там же щелкай по другой СС. Вот тебе и конвертация Ссылка на комментарий Поделиться на другие сайты Поделиться
Feur_GOR Опубликовано 20 февраля, 2005 Автор Жалоба Поделиться Опубликовано 20 февраля, 2005 aTeos , ZnoY , Тролль , пацаны, ну просто спасибо, очень молодцы!! Добавлено : [mergetime]1108937190[/mergetime] Вот только проблемка одна, мне важно понять как всё это дело просиходит, а не тупо списать с компа, а потом сдать и получить 5, это не интересно!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Payne Опубликовано 28 февраля, 2005 Жалоба Поделиться Опубликовано 28 февраля, 2005 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 := ''; {результат сначала будет равен пустой строке, т.к. его еще нет } 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. Ссылка на комментарий Поделиться на другие сайты Поделиться
AleXGray Опубликовано 10 марта, 2005 Жалоба Поделиться Опубликовано 10 марта, 2005 Дома посмотрю, где-то писал, из любой системы в любую, но она на с++. Это не подходит? Ссылка на комментарий Поделиться на другие сайты Поделиться
Feur_GOR Опубликовано 13 марта, 2005 Автор Жалоба Поделиться Опубликовано 13 марта, 2005 Спасибо всем, я сам уже научился! Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Форматцевт Опубликовано 14 апреля, 2005 Жалоба Поделиться Опубликовано 14 апреля, 2005 max15 извини, может я и террорист, но есть такой язык форт, так в нем это проще все решается, и исходники есть. В этом языке система текущего исчисления задается числом 8 разрядным от 2 до 255. Посмотри его, если будет не лень, может он тебе и понравится за одно познакомишься с ОПЗ :D Ссылка на комментарий Поделиться на другие сайты Поделиться
freeloader Опубликовано 21 апреля, 2005 Жалоба Поделиться Опубликовано 21 апреля, 2005 Как хорош Basic :) Hex; Oct; правдо, для двоичного самому писать надо, но это не сложно, если знаешь принцип ;) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти