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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2014, 17:34   #41
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

скачала, побаловалась, но видно,что-то не угадываю. пожалуйста, будьте так добры.
Veronika_13 вне форума Ответить с цитированием
Старый 07.07.2014, 17:55   #42
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Переведите в CP866
Poma][a вне форума Ответить с цитированием
Старый 07.07.2014, 18:12   #43
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

пробовала по таблице и вообще несвязный текст получился
Veronika_13 вне форума Ответить с цитированием
Старый 07.07.2014, 19:14   #44
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

пожалуйста. очень надо
Veronika_13 вне форума Ответить с цитированием
Старый 07.07.2014, 19:30   #45
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Бинго!
Код:
const
        TewTwenty : set of Byte = [2, 5];

        Ones : array [1..9, 1..6] of string = (('один', 'одного', 'одному', 'один', 'одним', 'одном'),
                          ('два', 'двух', 'двум', 'два', 'двумя', 'двух'),
                          ('три', 'трёх', 'трём', 'три', 'тремя', 'трёх'),
                          ('четыре', 'четырех', 'четырём', 'четыре', 'четырьмя', 'четырёх'),
                          ('пять', 'пяти', 'пяти', 'пять', 'пятью', 'пяти'),
                          ('шесть', 'шести', 'шести', 'шести', 'шестью', 'шести'),
                          ('семь', 'семи', 'семи', 'семь', 'семью', 'семи'),
                          ('восемь', 'восьми', 'восьми', 'восьми', 'восемью', 'восьми'),
                          ('девять', 'девяти', 'девяти', 'девять', 'девятью', 'девяти'));


        BetWeen10And19 : array [1..10, 1..6] of string = (('десять', 'десяти', 'десяти', 'десять', 'десятью', 'десяти'),
                          ('одиннадцать', 'одиннадцати', 'одиннадцати', 'одиннадцать', 'одиннадцатью', 'одиннадцати'),
                          ('двенадцать', 'двенадцати', 'двенадцати', 'двенадцать', 'двенадцатью', 'двенадцати'),
                          ('тринадцать', 'тринадцати', 'тринадцати', 'тринадцать', 'тринадцатью', 'тринадцати'),
                          ('четырнадцать', 'четырнадцати', 'четырнадцати', 'четырнадцать', 'четырнадцатью', 'четырнадцати'),
                          ('пятнадцать', 'пятнадцати', 'пятнадцати', 'пятнадцать', 'пятнадцатью', 'пятнадцати'),
                          ('шестнадцать','шестнадцати', 'шестнадцати', 'шестнадцать', 'шестнадцатью', 'шестнадцати'),
                          ('семнадцать','семнадцати','семнадцати','семнадцать','семнадцатью','семнадцати'),
                          ('восемьнадцать', 'восемнадцати', 'восемнадцати', 'восемнадцать', 'восемнадцатью', 'восемнадцати'),
                          ('девятнадцать',  'девятнадцати', 'девятнадцати', 'девятнадцать', 'девятнадцатью', 'девятнадцати'));


        Tens : array [1..8, 1..6] of string = (('двадцать', 'двадцати', 'двадцати', 'двадцать', 'двадцатью', 'двадцати'),
                          ('тридцать', 'тридцати', 'тридцати', 'тридцать', 'тридцатью', 'тридцати'),
                          ('сорок', 'сорока', 'сорока', 'сорок', 'сорока', 'сорока'),
                          ('пятьдесят', 'пятидесяти', 'пятидесяти', 'пятьдесят', 'пятьюдесятью', 'пятидесяти'),
                          ('шестьдесят', 'шестидесяти', 'шестидесяти', 'шестьдесят', 'шестьюдесятью', 'шестидесяти'),
                          ('семьдесят', 'семидесяти', 'семидесяти', 'семьдесят', 'семьюдесятью', 'семидесяти'),
                          ('восемьдесят', 'восьмидесяти', 'восьмидесяти', 'восемьдесят', 'восемьюдесятью', 'восьмидесяти'),
                          ('девяносто', 'девяноста', 'девяноста', 'девяносто', 'девяноста', 'девяноста'));

        Hundreds : array [1..9, 1..6] of string = (('сто', 'ста', 'ста', 'сто', 'ста', 'ста'),
                          ('двести', 'двухсот', 'двумстам', 'двести', 'двумястами', 'двухстах'),
                          ('триста', 'трёхсот', 'трёмстам', 'триста', 'тремястами', 'трёхстах'),
                          ('четыреста', 'четырёхсот', 'четырёмстам', 'четыреста', 'четырьмястами', 'четырёстах'),
                          ('пятьсот',  'пятисот', 'пятистам', 'пятьсот', 'пятьюстами', 'пятистах'),
                          ('шестьсот', 'шестисот', 'шестистами', 'шестьсот', 'шестьюстами', 'шестистах'),
                          ('семьсот', 'семисот', 'семистам', 'семьсот', 'семьюстами', 'семистах'),
                          ('воcемьсот', 'восьмисот', 'восьмистам', 'восемьсот', 'восемьюстами', 'восьмистах'),
                          ('девятьсот', 'девятисот', 'девятистам', 'девятьсот', 'девятьюстами', 'девятистах'));

type
        TDigits = array [1..100] of Byte;

function PrintPst (const num, position, pad : Integer) : string;

begin
        case position of
                1 : PrintPst := Ones[num, pad];
                2 : PrintPst := Tens[num-1, pad];
                3 : PrintPst := Hundreds[num, pad]

        end
end;


procedure GetDigits (const s : string; var digits : TDigits; var n : Integer);
var
        i : Integer;
begin
        n := Length(s);
        for i := 1 to n do
        // ожидается что ввод будет корректен!
                digits[i] := Ord(s[i]) - 48

end;
Poma][a вне форума Ответить с цитированием
Старый 07.07.2014, 19:31   #46
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
procedure PrintDigits (const num, NextNum, position, pad : Integer; var flag : Boolean);

begin
        if num = 0 then
                Exit;

        if (position in TewTwenty) and (num*10 + NextNum >= 10) and (num*10 + NextNum <= 19) then begin
                Write (Between10And19[NextNum+1, pad]);
                flag := FALSE;
                if position <> 2 then
                        Write (PrintPst(num, position, pad), ' ')
        end
        else begin
                flag := TRUE;
                Write (PrintPst (num, position, pad), ' ')
        end

end;

var
        s : string;
        digits : TDigits;
        i, n, pad : Integer;
        flag : Boolean;

begin
        ReadLn (s);
        GetDigits (s, digits, n);

        ReadLn (pad); // супер неадекватное название, но case - не нравится..
        // кстати, ожидается что падеж будет цифрой от 1 до 7

        flag := TRUE;
        digits[n+1] := 0;
        for i := 1 to n do
                if flag then
					PrintDigits (digits[i], digits[i+1], n-i+1, pad, flag);
end.
Poma][a вне форума Ответить с цитированием
Старый 07.07.2014, 19:38   #47
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

Вы спаситель.спасибо большое
Veronika_13 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа записи натурального числа прописью в заданном падеже Hope1 Помощь студентам 0 06.04.2012 14:38
Вывести все совершенные числа в заданном интервале А — В ксения777 Помощь студентам 5 31.10.2011 21:14
Найти все простые числа в заданном диапазоне Nikita++ Помощь студентам 8 20.10.2010 20:05
в заданном массиве вывести все четные числа leysan Помощь студентам 2 09.12.2009 22:08