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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2008, 21:33   #1
Janette
Пользователь
 
Регистрация: 23.02.2008
Сообщений: 11
По умолчанию перевод в последовательность

Помогите пожалуйста с задачкой ...

При выполнении лабораторной работы не использовать стандартные функции конвертации (Val, Str).


Написать программу, которая переводит любое число типа Real, введенное пользователем, в последовательность символов и выводит ее на экран

Последний раз редактировалось Janette; 22.03.2008 в 21:52.
Janette вне форума Ответить с цитированием
Старый 23.03.2008, 08:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

получите и распишитесь! ;-))

Код:
const
  Epsilon = 0.001;

var
  r : real;
  s : string;
  IntPart, FraqPart : integer;
  i : integer;

function OneDigitStr(i:integer):string;
var
  c : char;
begin
  c := chr(i + $30);
{
если CHR тоже нельзя использовать,
     тогда либо
       куча if i=0 then .../ i=1 / i=2 и так до i=9
     либо case
      case i of
         0: c:='0';
         1: c:='1';
         ...
         9: c:='9';
      end;
}
OneDigitStr := c
end;

function MyIntToStr(Number:integer):string;
var
  ss : string;
  OneDigit : integer;
begin
  ss := '';
  if Number=0 then ss:='0'
  else
    repeat
      OneDigit := Number mod 10;
      Number := Number div 10;
      ss := OneDigitStr(OneDigit) + ss;
    until Number=0;
  MyIntToStr := ss
end;

begin
  WriteLn('Введите вещественное число: ');
  Readln(r);
  s := '';
  if r<0 then
  begin
    s := '-';
    r := r*(-1.0);
  end;
  if r<Epsilon then
    s:=s+'0.000'
  else
    begin
      {отделяем целую и дробную части. }
      IntPart := trunc( r);
      FraqPart := trunc(((r-int(r))/Epsilon)+Epsilon);

      {получаем строчку из целая часть + разделитель + дробная часть}
      s := s + MyIntToStr(IntPart) + ',' + MyIntToStr(FraqPart);
    end;
 WriteLn(s)
end.
p.s. ВНИМАНИЕ! в функции OneDigitStr комментарий исключительно для Вас! не стоит это показывать преподавателю! ;-)
удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2008, 14:11   #3
Janette
Пользователь
 
Регистрация: 23.02.2008
Сообщений: 11
По умолчанию

Спасибо огромное!!!! =)
Janette вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательность чисел с степенью до N SEREG@ Помощь студентам 4 15.06.2008 22:41
НАпечатать наибольшую последовательность состоящую gred Помощь студентам 6 23.03.2008 16:12
числовая последовательность pelsh Помощь студентам 1 15.02.2008 03:20
числовая последовательность и массив дангер Паскаль, Turbo Pascal, PascalABC.NET 6 28.01.2008 20:38
Paskal. Числовая последовательность. Flash_ Помощь студентам 10 18.01.2007 16:52