Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2012, 18:31   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
Плохо перевод в дусятичную систему исчисления

нужно написать программу перевода из любой системы исчисления в десятичную. пользуюсь такой формулой где S это число с основанием р, i - позиция цифры в числе, то есть действие выглядит вот так только тут вместо х - буква А. так вот
Код:
var n, nm, chislo, S:integer;
    massif, massif2: array[1..16] of integer;
Begin
 clrscr;
writeln('vvedite chislo');  
readln (chislo);

while chislo>0 do 
begin
inc(nm);
massif[nm]:=chislo mod 10;
chislo:=chislo div 10;
end;

for i:=1 to nm do 
begin
massif2[i]:=massif[nm-i+1];
end; {тут просто делим число на цифры и кидаем их в массив, тут все работает}

for j:=1 to nm do
begin
inc(nm); inc(st);
S:=S+massif2[nm]*exp(ln(massif2[nm])*(st-1)); {теперь пытаюсь применить формулу и вот в этой строке какая-то проблема и ничего не работает!}
end;

writeln('summa',S);
readln;
end.
в чем ошибка? помогите!
gylayko вне форума Ответить с цитированием
Старый 07.09.2012, 18:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
for j:=1 to nm do
begin
inc(nm);
Это что за?!
Ты в цикле на каждой итерации раздвигаешь его пределы???
Убери сейчас же.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2012, 19:04   #3
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это что за?!
Ты в цикле на каждой итерации раздвигаешь его пределы???
Убери сейчас же.
inc(nm) убрал, теперь выдает ошибку проверки диапазона!
gylayko вне форума Ответить с цитированием
Старый 07.09.2012, 20:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
uses     math,
  SysUtils;
var i,p,x:integer;s:Extended;
begin
 x:=123;s:=0;p:=8;i:=1;
 while (x<>0) do begin
  s:=s+(x mod 10)*Power(p,i);
  inc(i);
  x:=x div 10;
 end;
 write(s:10:0);readln;
end.
Пойдеть?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.09.2012, 11:19   #5
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
uses     math,
  SysUtils;
var i,p,x:integer;s:Extended;
begin
 x:=123;s:=0;p:=8;i:=1;
 while (x<>0) do begin
  s:=s+(x mod 10)*Power(p,i);
  inc(i);
  x:=x div 10;
 end;
 write(s:10:0);readln;
end.
Пойдеть?
в принципе принцип понятен, спасибо огромное! но в результате постоянно получается не то, что в реальности.
Код:
uses crt, math;
var i,x,p:integer; s:real;
Begin
clrscr;
writeln('vvedite chislo');
readln (x);
writeln('vvedite osnonanie');
readln(p);

s:=0;i:=1;
 while (x<>0) do 
  begin
   s:=s+(x mod 10)*Power(p,i);
   inc(i);
   x:=x div 10;
 end;

writeln('chislo v 10 sisteme=',S:10:0);
readln;
end.
что опять не так?
gylayko вне форума Ответить с цитированием
Старый 08.09.2012, 12:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты пройдись трассировкой и узнаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.09.2012, 12:44   #7
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты пройдись трассировкой и узнаешь.
все! там у меня в модуле math были проблемы, так что я сделал степень как обычно и строку
Код:
x:=123;s:=0;p:=8;i:=1;
убрал вообще. таким образом все значения стали равны нулю по умолчанию и все заработало!
gylayko вне форума Ответить с цитированием
Старый 08.09.2012, 13:06   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
там у меня в модуле math были проблемы, так что я сделал степень как обычно и строку
Если не секрет что за проблемы?
Цитата:
убрал вообще. таким образом все значения стали равны нулю по умолчанию и все заработало!
Ну если у тебя предполагается ввод с клавы то да. Я же просто дал пример.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод числа в двоичную систему исчисления Начинающий програм Помощь студентам 8 11.12.2011 20:26
си++ перевод десячичного числа в заданную систему исчисления Bonne Помощь студентам 0 24.04.2010 16:37
к теме по переводу в десятиричную систему исчисления.. ksena_holy Помощь студентам 2 06.07.2009 14:45
перевод системы исчисления (16 ->10) adwaer Помощь студентам 5 15.06.2008 20:29
Составить библиотечный модуль,который вычисляет умножение в 16-тиричной систему исчисления в паскале LLlM31b3 Помощь студентам 2 19.04.2008 19:08