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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2008, 15:02   #1
gamer123
Пользователь
 
Регистрация: 19.01.2008
Сообщений: 92
По умолчанию Помогите пожалуйста

Помогите пожалуйста. Мне надо сдавать программу по переводу из одной системы счисления в другие. Взял чужой код. Объясните пожалуста, как она работает - мне надо будет преподу объяснить, а я не знаю как и что...третий день сижу...прога на турбо паскале 7
Вложения
Тип файла: zip TSI.zip (986 байт, 89 просмотров)

Последний раз редактировалось Stilet; 21.02.2008 в 12:52.
gamer123 вне форума Ответить с цитированием
Старый 20.02.2008, 18:18   #2
WittySpark
Пользователь
 
Регистрация: 14.08.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от gamer123 Посмотреть сообщение
Помогите пожалуйста. Мне надо сдавать программу по переводу из одной системы счисления в другие. Взял чужой код. Объясните пожалуста, как она работает - мне надо будет преподу объяснить, а я не знаю как и что...третий день сижу...прога на турбо паскале 7
Извините, но не могу не выразится. Программа - пример отвратительного программирования.
Во-первых, что это за бред:
k:= n mod c; // заметьте, c = 2 (основание системы счисления)
...
if k=1 then // если остаток 1, то...
f:= f+'1'
else // иначе
if k=0 then // А ЭТО ЗАЧЕМ??? Бывают ещё какие-нибудь остатки?
f:= f+ '0';
А циклы меня вообще убили.
Нет. Это, безусловно, убожество...
Мой Вам совет: поищите другой исходник. Например, тут http://algolist.manual.ru/.
В разделе "математика" найдёте перевод из одной системы счисления в другую. Там всё подробнейшим образом описано.
WittySpark вне форума Ответить с цитированием
Старый 20.02.2008, 18:24   #3
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Ищем по форуму

http://www.programmersforum.ru/showthread.php?
Xardas вне форума Ответить с цитированием
Старый 20.02.2008, 19:36   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Вот держи код у меня по ф-иям разбито)))
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Const
    list='0123456789ABSDEF';{Можно продолжить:) }

var Base1, Base2, Number10:Cardinal;
    FirstNumber:String;
Function GetFigure(Number:string; index:Cardinal):Byte;
begin
  Result:=pos(Number[index],list)-1;
end;

Function NumberTo10(Number:String; base:Cardinal):Cardinal;
var
  i:byte;
begin
  Result:=0;
  For i:=1 to length(Number) do
  begin
    Result:=GetFigure(Number,i)*round(Exp((length(Number)-i)*Ln(base)))+Result;
  end;
end;

Function Number10ToBase(Number:Cardinal; base:Cardinal):string;
var
  S:string;
  M:Cardinal;
begin
  s:='';
  Result:='';
  M:=Number;
  While M>=Base do
  begin
    S:=S+List[(M mod base)+1];
    M:=M div base;
  end;
  s:=s+List[M+1];
  For M:=1 to length(s) do
  begin
    Result:=Result+s[length(s)-M+1];
  end;
end;

begin
  Writeln('Система счисления?');
  Readln(base1);
  Writeln('число?');
  Readln(FirstNumber);
  Writeln('К какую?');
  Readln(Base2);
  Write(Number10ToBase(NumberTo10(FirstNumber,base1),base2));
  Readln;
end.
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 21.02.2008, 12:23   #5
gamer123
Пользователь
 
Регистрация: 19.01.2008
Сообщений: 92
По умолчанию

Цитата:
Сообщение от SNUPY Посмотреть сообщение
Вот держи код у меня по ф-иям разбито)))
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Const
    list='0123456789ABSDEF';{Можно продолжить:) }

var Base1, Base2, Number10:Cardinal;
    FirstNumber:String;
Function GetFigure(Number:string; index:Cardinal):Byte;
begin
  Result:=pos(Number[index],list)-1;
end;

Function NumberTo10(Number:String; base:Cardinal):Cardinal;
var
  i:byte;
begin
  Result:=0;
  For i:=1 to length(Number) do
  begin
    Result:=GetFigure(Number,i)*round(Exp((length(Number)-i)*Ln(base)))+Result;
  end;
end;

Function Number10ToBase(Number:Cardinal; base:Cardinal):string;
var
  S:string;
  M:Cardinal;
begin
  s:='';
  Result:='';
  M:=Number;
  While M>=Base do
  begin
    S:=S+List[(M mod base)+1];
    M:=M div base;
  end;
  s:=s+List[M+1];
  For M:=1 to length(s) do
  begin
    Result:=Result+s[length(s)-M+1];
  end;
end;

begin
  Writeln('Система счисления?');
  Readln(base1);
  Writeln('число?');
  Readln(FirstNumber);
  Writeln('К какую?');
  Readln(Base2);
  Write(Number10ToBase(NumberTo10(FirstNumber,base1),base2));
  Readln;
end.
При компилции вылетает ошибка "неверная директива комилятора". также, указывает на uses - sysutils - нет файла sysutils.tpu пишет. что такое??

Последний раз редактировалось Stilet; 21.02.2008 в 12:52.
gamer123 вне форума Ответить с цитированием
Старый 21.02.2008, 12:56   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Это пример для Делфи.
Вот паскалевский:
Код:
program Project2;   

Const   
    list='0123456789ABSDEF';{Можно продолжить:) }   
  
var Base1, Base2, Number10:integer;   
    FirstNumber:String;   
Function GetFigure(Number:string; index:byte):Byte;   
begin   
  Result:=pos(Number[index],list)-1;   
end;   
  
Function NumberTo10(Number:String; base:integer):Cardinal;   
var   
  i:byte;   
begin   
  NumberTo10:=0;   
  For i:=1 to length(Number) do   
  begin   
    NumberTo10:=GetFigure(Number,i)*round(Exp((length(Number)-i)*Ln(base)))+NumberTo10;   
  end;   
end;   
  
Function Number10ToBase(Number:Cardinal; base:integer):string;   
var   
  S:string;   
  M:integer;   
begin   
  s:='';   
  Number10ToBase:='';   
  M:=Number;   
  While M>=Base do   
  begin   
    S:=S+List[(M mod base)+1];   
    M:=M div base;   
  end;   
  s:=s+List[M+1];   
  For M:=1 to length(s) do   
  begin   
    Number10ToBase:=Number10ToBase+s[length(s)-M+1];   
  end;   
end;   
  
begin   
  Writeln('Система счисления?');   
  Readln(base1);   
  Writeln('число?');   
  Readln(FirstNumber);   
  Writeln('К какую?');   
  Readln(Base2);   
  Write(Number10ToBase(NumberTo10(FirstNumber,base1),base2));   
  Readln;   
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.02.2008, 13:16   #7
gamer123
Пользователь
 
Регистрация: 19.01.2008
Сообщений: 92
По умолчанию

begin
result - ошибка, неверный идентификатор



Function NumberTo10(Number:String; base:integer):Cardinal; - неверный идентификатор :-(
gamer123 вне форума Ответить с цитированием
Старый 21.02.2008, 13:58   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

GetFigure:=pos(Number[index],list)-1;
В паскале нет типа Cardinal - целое
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2008, 12:40   #9
gamer123
Пользователь
 
Регистрация: 19.01.2008
Сообщений: 92
По умолчанию

Вот другая программа для перевода в системы счисления. Что-то глючит при переводе в 16тиричную. Помогите найти ошибку...
Вложения
Тип файла: zip PROG_1.zip (938 байт, 56 просмотров)
gamer123 вне форума Ответить с цитированием
Старый 24.02.2008, 12:44   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Код:
var Ciphers : string;

function Convert(Number : longint; Base : longint) : string;
var
    s : string;
    tmp : longint;
begin
    s := '';
    if ( (Base > 0) and (Base <= 16) ) then begin
        tmp := Number;
        repeat
            s := Ciphers[(tmp mod base) + 1] + s;
            tmp := tmp div base;
        until tmp = 0;
    end;
    Convert := s;
end;

begin
    Ciphers := '0123456789ABCDEF';

    writeln(Convert(256, 10));
    writeln(Convert(256, 16));
    writeln(Convert(256, 5));
    writeln(Convert(256, 8));
    writeln(Convert(256, 2));
end.

Последний раз редактировалось B_N; 24.02.2008 в 12:48.
B_N вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста!!! Esenin Помощь студентам 1 21.06.2008 01:45
Помогите пожалуйста Niki Помощь студентам 4 07.06.2008 08:30
помогите пожалуйста pelsh Помощь студентам 2 21.12.2007 00:26