IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> И снова системы счисления
Дымка
сообщение 11.07.2005 16:32
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


И снова я со своими глупыми вопросами...
Нужна помощь в сложении, вычитании, умножении и делении чисел в шестнадцатиричной с/с, сама как сделать это не понимаю... Вариант перевода сначала в другую систему не подходит. А еще перевод из двоичной с/с в шестнадцатеричную... Помогите. пожалуйста...

Добавлено: 11.07.05 17:03
и еще, как задать массив чисел, записанных в шестнадцатиричной с/с
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.07.2005 17:07
Сообщение #2


Гость






Как ты хочешь их хранить? В каком виде? Строки, или обычные 10-ные числа?
Если строки, то так:
var hex_arr: array[1 .. 10] of string[8]; {максимум до $FFFFFFFF}
 К началу страницы 
+ Ответить 
Guest
сообщение 11.07.2005 17:13
Сообщение #3


Гость






Цитата(Дымка @ 11.07.05 16:32)
Вариант перевода сначала в другую систему не подходит.

Не в другую, а из строки в число полюбому надо будет.
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 17:23
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


Думалка отказывается работать....;( Помогите...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.07.2005 17:48
Сообщение #5


Гость






Цитата(Дымка @ 11.07.05 16:32)
Вариант перевода сначала в другую систему не подходит.

Это уже обсуждалось на форуме... Тогда пришли к заключению, что это нереализуемо. Все программы так или иначе работают через 10-ную с/с (хочешь что-то возразить? Возьми лист бумаги, и попробуй перемножить $438 и $54 НЕ переводя это в другую с/с. Не выходит? Как же ты хочешь объяснить это компьютеру?).
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 17:52
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


и что мне делать? мне сначала надо реализовать набор подпрограмм, которые выполняют определенные действия, а потом использовать их для решения 2 задач...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 11.07.2005 18:11
Сообщение #7


Гость






Цитата(Дымка @ 11.07.05 17:52)
и что мне делать? мне сначала надо реализовать набор подпрограмм, которые выполняют определенные действия, а потом использовать их для решения 2 задач...


Тогда делаешь так:
Создаешь сперва 2 самые главные функции:
1. Из строки в число:

function from_(s:string;ss:byte):longint;
var q:longint;
begin
q:=0;
for i:=1 to length(s) do begin
s[i]:=char(ord(s[i]) or 32);
case s[i] of
'0'..'9': q:=q*ss+byte(s[i])-ord('0');
'a'..'z': q:=q*ss+byte(s[i])-ord('a')+10;
end; end;
from_:=q;
end;


2. из числа в строку

function to_(q:longint;ss:byte):string;
var s:string;
i:longint;
begin
s:='';
repeat
i:=q-trunc(q/ss)*ss;
if i>9 then i:=i+ord('A')-ord('9')-1;
s:=chr(i+ord('0'))+s;
q:=trunc(q/ss);
until q=0;
to_:=s;
end;



а потом реализуешь набор подпрограмм, типа этих:
function MulHexToHex(s1,s2:string):string;
begin MulHexToHex:=to_(from_(s1,16)*from_(s2,16),16); end;

function DivHexToHex(s1,s2:string):string;
begin DivHexToHex:=to_(from_(s1,16) div from_(s2,16),16); end;

function AddHexToHex(s1,s2:string):string;
begin addHexToHex:=to_(from_(s1,16) +from_(s2,16),16); end;

function HexToBin(s:string):string;
begin HexToBin:=to_(from_(s,16),2); end;

function BinToHex(s:string):string;
begin BinToHex:=to_(from_(s,2),16); end;


На сколько фантазии хватит :yes:
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 19:10
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


function BinToHex(s:string):string;{iz 2 v 16} 
begin
BinToHex:=to_(from_(s,2),16);
end;

А если сделать то же самое с 10-ной?? Это будет работать??
function perevod(s:string):string;{iz 2 v 10} 
begin
BinToHex:=to_(from_(s,2),10);
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 11.07.2005 19:21
Сообщение #9


Гость






Цитата(Дымка @ 11.07.05 19:10)
А если сделать то же самое с 10-ной?? Это будет работать??
function perevod(s:string):string;{iz 2 v 10}
begin
  BinToHex:=to_(from_(s,2),10);
end;


Конечно, только результат будет в строковой переменной.
Если тебе просто напечатать результат, то лучше просто:
writeln(from_(s,2));
иначе to_(..,10) - тоже самое, что и Val.
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 20:03
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
В смысле???что от меня хотят?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 11.07.2005 20:06
Сообщение #11


Гость






Цитата(Дымка @ 11.07.05 20:03)
функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
В смысле???что от меня хотят?


function RavnoHEX(s1,s2:string):boolean;
begin
RavnoHEX:=from_(s1,16)=from_(s2,16);
end;

function NeRavnoHEX(s1,s2:string):boolean;
begin
NeRavnoHEX:=not(from_(s1,16)=from_(s2,16));
end;

function BolsheHEX(s1,s2:string):boolean;
begin
BolsheHEX:=not(from_(s1,16)>from_(s2,16));
end;


И в том же духе smile.gif

Теги не просто так на форуме введены, хотелось бы напомнить !!!

Сообщение отредактировано: volvo - 11.07.2005 20:10
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 20:18
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


functinon BolsheHEX(s1,s2:string):boolean;
begin
BolsheHEX:=not(from_(s1,16)>from_(s2,16));
end;


Наверное, BolsheHEX:=(from_(s1,16)>from_(s2,16)); или я совсем не понимаю?!:(

functinon menweHEX(s1,s2:string):boolean;
begin
menweHEX:=(from_(s1,16)<from_(s2,16));
end;

functinon menw_ili_ravn(s1,s2:string):boolean;
begin
menw_ili_ravn:=(from_(s1,16)<=from_(s2,16));
end;

functinon Bolsh_ili_ravn(s1,s2:string):boolean;
begin
BolsheHEX:=(from_(s1,16)>=from_(s2,16));
end;


Так?

Не забываем про теги !!!

Сообщение отредактировано: GoodWind - 11.07.2005 20:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mlc
сообщение 11.07.2005 20:24
Сообщение #13


Гость






Цитата(Дымка @ 11.07.05 20:18)
functinon BolsheHEX(s1,s2:string):boolean;
begin
BolsheHEX:=not(from_(s1,16)>from_(s2,16));
end;


Наверное, BolsheHEX:=(from_(s1,16)>from_(s2,16)); или я совсем не понимаю?!:(


Да, да, я копировал просто.. У тебе тоже самое в последней функции. smile.gif

>Так?
Ну да, вроде так.
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 21:15
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


Так...Теперь меня запутали в самом задании!!!Может быть, я что-то неправильно понимаю.Но народ. у которых аналогичная постановка предлагают и пункты а-з и цифры 1,2 вынести в меню...и решать все как отдельные задачи...К тому же подпрограммы некоторые будут использоваться и в решении 1 и 2...Объясните, что от меня хотят.. unsure.gif
Цитата
Реализовать набор подпрограмм для выполнения следующих операций над натуральными числами в шестнадцатеричной системе счисления:  а) сложение; б) вычитание; в) умножение; г) деление; д) перевод из двоичной системы счисления в шестнадцатеричную; е) перевод из шестнадцатеричной системы счисления в десятичную; ж) функция проверки правильности записи числа в шестнадцатеричной системе счисления; з) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
1) Возвести число в степень (основание и показатель степени записаны в шестнадцатеричной системе счисления). Ответ выдать в шестнадцатеричной и десятичной системах счисления.
2) Дан массив A - массив чисел, записанных в шестнадцатеричной системе счисления. Отсортировать его в порядке убывания. Ответ выдать в шестнадцатеричной и десятичной системах счисления.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.07.2005 21:25
Сообщение #15


Гость






Вот она - самая основная проблема !!! Сначала нужно было думать, что именно решается, как отдельная задача, а что - нет, а уж потом приступать к реализации. А если перед самой сдачей программы кто-нибудь еще что-нибудь придумает? Программа снова будет исправляться?
 К началу страницы 
+ Ответить 
Дымка
сообщение 11.07.2005 21:33
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


<_< Поясните, а?? А исправлять еще особенно нечего...Эта задача продвигается очень медленными темпами...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mlc
сообщение 12.07.2005 7:23
Сообщение #17


Гость






Цитата(Дымка @ 11.07.05 21:33)
<_<  Поясните, а?? А исправлять еще особенно нечего...Эта задача продвигается очень медленными темпами...

Во-первых, правильно будет, так как захочет проверяющий, по-этому спроси лучше у преподователя. Тогда проблем не будет. А так вроде правильно, все в меню. Осталось только сортировку сделать и все, остальное у тебя уже есть.
 К началу страницы 
+ Ответить 
Дымка
сообщение 12.07.2005 17:14
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


Объясните,пожалуйста, в чем ошибка...Не считывает 2 число из файла и первое после ошибки...
Код
begin
 clrscr;
 write('vvedite imya fajla: ');
 readln(name);
 assign(fl,name);
 {$I-} reset(fl); {$I+}
 if ioresult=0 then
   BEGIN
     repeat
       read(fl,s1);
       writeln('Pervoe 16-ri4noe 4islo: ',s1);
       res3_7:=check_hex(s1);
       if res3_7=false then
         begin
           textcolor(lightred);
           Writeln('Owibka!Povtorite vvod 4isla');
           textcolor(lightblue);
           writeln;
         end;
     until res3_7=true;
     repeat
       read(fl,s2);
       writeln('Vtoroe 16-ri4noe 4islo: ',s2);
       res3_7:=check_hex(s2);
       if res3_7=false then
         begin
           textcolor(lightred);
           Writeln('Owibka!Povtorite vvod 4isla');
           textcolor(lightblue);
           writeln;
         end;
     until res3_7=true;
     close(fl);
   end{if}
 else
   BEGIN
     writeln ('fajl ',name,' ne najden');
     goto vyx;
   end;
 end;

решение после метода случайных чисел, который я тоже еще не сделала...

Код
res3:=addHexToHex(s1,s2);
Writeln('Rezultat raven: ',res3);
writeln;
writeln;


Добавлено: 12.07.05 17:16
и еще один вопрос, можно ли random'ом вывести 16-ричные числа... и как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.07.2005 17:24
Сообщение #19


Гость






Дымка, а файл какие значения содержит? Дело в том, что при ошибке ввода первого числа будет попытка считать следующее за ним число, то есть уже существует вероятность, что одного числа в файле будет не хватать...
 К началу страницы 
+ Ответить 
Дымка
сообщение 12.07.2005 17:29
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


В файл написала случайные числа, их штук 10....ИЛи 16-ричные как-то по-особому писать надо?Если первое является 16-ричным, то выдает его, на месте второго ставит лишь пустоту...В качестве результата выдается 1 число...Если первое не 16-ричное, то выдает ошибку и на месте и первого, и второго пустота...результат-тоже пусто...(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

3 страниц V  1 2 3 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.07.2025 2:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"