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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2017, 21:47   #1
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию Вывести весь текст словами в виде количественного числительного - Pascal

Задано некоторое натуральное число k. Требуется вывести весь текст словами в виде количественного числительного, которое означает заданное число в соответствии с требуемым падежом (числа от 1 до 99 , падеж задаётся цифрой)
Помогите сделать так, что бы число и падеж читались из файла, а результат выводился в этот же файл и в самой программе.

Код:
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 = (('двадцать', 'двадцати', 'двадцати', 'двадцать', 'двадцатью', 'двадцати'),
                          ('тридцать', 'тридцати', 'тридцати', 'тридцать', 'тридцатью', 'тридцати'),
                          ('сорок', 'сорока', 'сорока', 'сорок', 'сорока', 'сорока'),
                          ('пятьдесят', 'пятидесяти', 'пятидесяти', 'пятьдесят', 'пятьюдесятью', 'пятидесяти'),
                          ('шестьдесят', 'семидесяти', 'семидесяти', 'семьдесят', 'семьюдесятью', 'семидесяти '),
                          ('семьдесят', 'семидесяти', 'семидесяти', 'семьдесят', 'семьюдесятью', 'семидесяти'),
                          ('восемьдесят', 'восьмидесяти', 'восьмидесяти', 'восемьдесят', 'восемьюдесятью', 'восьмидесяти'),
                          ('девяносто', 'девяноста', 'девяноста', 'девяносто', 'девяносто', 'девяноста'));
 
 
 
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];
        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;
procedure PrintDigits (const num, NextNum, position, pad : Integer; var flag : Boolean; f:text; s:string);
begin
        if num = 0 then
                Exit;
        if (position in TewTwenty) and (num*10 + NextNum >= 10)
        and (num*10 + NextNum <= 19) then begin
                Write (f,Between10And19[NextNum+1, pad],s);
                flag := FALSE;
                if position <> 2 then
                        Write (f,PrintPst(num, position, pad), ' ',s);
                        Write (PrintPst(num, position, pad), ' ')
                        end
        else begin
                flag := TRUE;
                Write (f,PrintPst (num, position, pad), ' ',s);
                Write (PrintPst(num, position, pad), ' ')
        end
 
end;
 
var
        s : string;
        digits : TDigits;
        i, n, pad : Integer;
        flag : Boolean;
         f :text;
begin
      Assign(f,'File.txt');
      Rewrite(f);
      writeln('Введите число и падеж = ');
        ReadLn (s);
        GetDigits (s, digits, n);
        ReadLn (pad);
        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,f,s);
                        Close(f);
end.
avatar54 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal] Дан текст со словами из строчных русских букв. Составить программу, для вывода всех гласных буквы, которые входят хотя бы в одно слово более двух раз Борис65 Помощь студентам 9 07.06.2017 11:08
[Free Pascal]: Как вывести значения в виде дополнительного столбца матрицы? Jon_Morgan Помощь студентам 1 24.12.2016 19:42
Вывести введенный в поле ввода текст в виде картинки 33333 Общие вопросы Delphi 1 26.06.2014 18:55
вывести в виде таблицы (pascal ABC) программирование Помощь студентам 0 06.05.2013 14:32
Pascal. Вывести массив из m строк и n столбцов в виде матрицы. igagogi Помощь студентам 1 23.12.2012 23:02