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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2013, 14:41   #1
alexkolbasnikov
 
Регистрация: 01.10.2013
Сообщений: 3
По умолчанию Непростая задача на строки. Turbo Pascal

Зада фрагмент текста. Отредактировать его, заменяя изображения чисел последовательностью числовых триад и пробелов так, чтобы в дробной части числа распологались полные триады (Например, 22452,5276 должно представиться как 22 452,527 600) Буду очень признателен за помощь!
alexkolbasnikov вне форума Ответить с цитированием
Старый 01.10.2013, 15:21   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
22452,5276 должно представиться как 22 452,527 600
мне кажется, это неверное преобразование. В дробной части находится число 5276, и оно не может записано 527 6...., так как это вызовет неверное прочтение
Вадим Мошев вне форума Ответить с цитированием
Старый 01.10.2013, 15:26   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 function foo(n:double):String;
 var i,j:integer;Result:String;
 begin
  Str(n:10:8,Result);
  i:=pos('.',Result);;j:=i;
  while j<length(Result) do begin
    inc(j,4);insert(' ',Result,j);
  end;
  while i>0 do begin
    dec(i,3);insert(' ',Result,i);
  end;
foo:=Result;
 end;

begin
  write(foo(22452.5276));
end;
подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2013, 15:47   #4
alexkolbasnikov
 
Регистрация: 01.10.2013
Сообщений: 3
По умолчанию

Вроде всё работает спасибо, кроме Str(n:10:8,Result), подскажите, если не трудно, для чего служит эта функция, если её убрать то в конце нули не ставятся, как можно обойтись без неё?

Последний раз редактировалось alexkolbasnikov; 01.10.2013 в 16:09.
alexkolbasnikov вне форума Ответить с цитированием
Старый 01.10.2013, 16:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не работает(
Ну убери оттуда форматтер. Оставь только имя переменной.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2013, 18:04   #6
HedgehogLu
 
Аватар для HedgehogLu
 
Регистрация: 04.09.2013
Сообщений: 9
По умолчанию

без форматтера может оказаться трабла при больших числах когда оно представится через Е.
Либо использовать форматер и добивать нужные нули, либо писать собственную функцию представления числа в строку.
Либо представлять целую часть с пробелами. потом дробную часть умножить на 10 в нужной степени и опять целую часть представить строкой но уже без пробелов, тогда нужное количество нулей будет.

Хотя проще добить до нужного количества нулей ручками в уже существующем коде
Контактные данные: ICQ - 642431158 e-mail - Hedgehog@ukr.net
Чтобы хорошо писать программы - нужно, как минимум, писать программы
HedgehogLu вне форума Ответить с цитированием
Старый 01.10.2013, 19:19   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
мне кажется, это неверное преобразование.
Преобразование верное, но вот имеет ли оно смысл?

Мой вариант..
Код:
var
        s : string;
        i, t, p : Integer;

begin
        ReadLn (s);

        i := 1;
        while i <= Length(s) do begin
                if (i mod 3 = 0) and (s[i] in ['0'..'9']) then
                        Write (' ');
                Write (s[i]);
                Inc (i)
        end;

        p := Pos (',', s);
        t := (Length(s) - p) mod 3;

        for i := 1 to t do
                Write (0)
end.
Poma][a вне форума Ответить с цитированием
Старый 01.10.2013, 21:02   #8
HedgehogLu
 
Аватар для HedgehogLu
 
Регистрация: 04.09.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от alexkolbasnikov Посмотреть сообщение
Зада фрагмент текста. Отредактировать его, заменяя изображения чисел последовательностью числовых
И я купился
Блиииииин а нафига вообще преобразовывать текст в число, когда достаточно просто анализировать текст.
Идем по тексту до первой цифры продолжаем пока идут цифры если перед цифрами не стояло запятой или точки то разбиваем на триады если же стояла то копируем как есть. При разбитии на триады надо будет возвращаться от конца последовательности цифр к началу
вот и все. И пофиг насколько эти цифры большие и т.д.
Контактные данные: ICQ - 642431158 e-mail - Hedgehog@ukr.net
Чтобы хорошо писать программы - нужно, как минимум, писать программы
HedgehogLu вне форума Ответить с цитированием
Старый 01.10.2013, 21:10   #9
HedgehogLu
 
Аватар для HedgehogLu
 
Регистрация: 04.09.2013
Сообщений: 9
По умолчанию

Poma][a у вас все та-же проблема вы разбиваете цифры на триады и после зяпятой. Более того триды у вас разбиваются от начала числа и без учета букв. насколько я понимаю фразу "Стоимость 10000,1 у.е" разобьет "Стоимость 1 000 0,1 у.е0"
Однако не совсем то что надо по заданию

П.С. Если ошибся сорри - компилил в голове
Контактные данные: ICQ - 642431158 e-mail - Hedgehog@ukr.net
Чтобы хорошо писать программы - нужно, как минимум, писать программы
HedgehogLu вне форума Ответить с цитированием
Старый 01.10.2013, 21:13   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
вы разбиваете цифры на триады и после зяпятой.
А что нам говорит пример :
Цитата:
22452,5276 должно представиться как 22 452,527 600
Цитата:
Более того триды у вас разбиваются от начала числа и без учета букв.
Ага.. Я как-то упустил фразу про то, что задан именно текст..
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача turbo pascal на тему: файлы с произвольным доступом в Pascal ExCiTeC Паскаль, Turbo Pascal, PascalABC.NET 0 28.01.2013 20:36
Turbo Pascal записи, строки lvl Помощь студентам 1 21.11.2012 11:47
Строки Turbo Pascal lvl Помощь студентам 5 13.11.2012 17:11
Turbo pascal.Строки. Avatonk Помощь студентам 6 24.10.2011 00:16
Turbo Pascal 7.0 Строки (String) Lerank Помощь студентам 11 16.12.2008 20:27