Системы счисления

Ответить
Яська
Сообщения: 2
Зарегистрирован: 26 окт 2009, 18:42

7. Написать программу преобразования введенного десятичного числа в восьмеричный формат
Angel666
Сообщения: 40
Зарегистрирован: 17 май 2009, 23:51

Яська писал(а):7. Написать программу преобразования введенного десятичного числа в восьмеричный формат

x - это число которое переводим, y - это формат в который переводим.

Код: Выделить всё

program perevod;
uses crt;
var x, y, rez, k: integer;
begin
clrscr;
writeln ('vvedite x, y');
readln (x, y);
rez:=0;
k:=1;
while x >= y do
begin
rez:=rez + k*(x mod y);
x:= x div y;
k:=k*10;
end;
rez:=rez + k*x;
writeln(rez);
readln;
end.
Прости если что, могут быть ошибки в синтаксисе, давно не писала на паскале :)

PS: если будут ошибки присылай скриншот, просто у меня не стоит паскаль, проверить не могу!!!
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а):. Написать программу преобразования введенного десятичного числа в восьмеричный формат
Куда смотрят модераторы? Тема не соответсвует первому посту.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Посмотрел, перенес, переименовал.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Код: Выделить всё

function Trans(x,y:integer):string
var i,b,d,z:integer;
     s:string;
begin
       if y<=1 then Trans:='Не допустимое основание' else
       begin 
              b:=x;
              if (b<0) then z:=-1 else z:=1;
              s:='';
              b:=abs(b);          
              repeat
                       d:=b mod y;
                       b:=b div y;
                       s:=IntToStr(d)+s;
              until (b=0)
       end;
       if z<0 then s:='-'+s;
       Trans:=s;   
end;
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
&quot писал(а):ошибки в синтаксисе
Не только в синтаксисе. Если res имеет числовой тип, то Write(res) выведет только в десятичном.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Angel666
Сообщения: 40
Зарегистрирован: 17 май 2009, 23:51

atavin-ta писал(а):
Не только в синтаксисе. Если res имеет числовой тип, то Write(res) выведет только в десятичном.
Все прекрасно работает без ошибок, и выдает то что надо!!!
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

atavin-ta писал(а):

Код: Выделить всё

function Trans(x,y:integer):string
Можно было указать, что эта функция только для оснований не больше 10. Для всех остальных (до 36 включительно) надо поменять
s:=IntToStr(d)+s;
на
if d<10 then s:=IntToStr(d)+s
else s:=chr(ord('A')+d-10)+s;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить