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

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

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

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


Новичок
*

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

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


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

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


Гость






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


Гость






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

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


Новичок
*

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

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


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


Гость






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

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


Новичок
*

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

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


и что мне делать? мне сначала надо реализовать набор подпрограмм, которые выполняют определенные действия, а потом использовать их для решения 2 задач...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
В смысле???что от меня хотят?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

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


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


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


Гость






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

Во-первых, правильно будет, так как захочет проверяющий, по-этому спроси лучше у преподователя. Тогда проблем не будет. А так вроде правильно, все в меню. Осталось только сортировку сделать и все, остальное у тебя уже есть.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






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


Новичок
*

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

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


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

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

 





- Текстовая версия 1.09.2025 20:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name