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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2013, 21:25   #1
Ксения1206
Пользователь
 
Регистрация: 18.04.2013
Сообщений: 13
Печаль Запись количественного числа в заданном падеже

Программа записи количественного числа(до 1000) в заданном падеже.
Помогите сделать((
Ксения1206 вне форума Ответить с цитированием
Старый 18.04.2013, 21:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в заданном падеже.
Чего? Число прописью что ли?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2013, 21:52   #3
Ксения1206
Пользователь
 
Регистрация: 18.04.2013
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Чего? Число прописью что ли?

да,т.е. вводим например число 54 и родительный падеж,он выводит-пятидесяти четырех
Ксения1206 вне форума Ответить с цитированием
Старый 18.04.2013, 22:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Выкладывал или нет, не помню, ну да ладно:
Код:
Function TellMoney(d:Double):String;
const
 	v:array[1..3,1..9] of String=(
	  ('один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять')
	 ,('десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто')
	 ,('сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот')
	);
	tsv:array[1..9] of String = ('тысяча', 'тысячи', 'тысячи', 'тысячи', 'тысяч', 'тысяч', 'тысяч', 'тысяч', 'тысяч');

var s,intt:String;pt,it,imln,imlrd,k,i,m:integer;
begin
 FormatSettings.DecimalSeparator:='.';
 s:=trim(Format('%10.2f',[d]));
 pt:=pos('.',s);
 k:=StrToIntDef(copy(s,1,pt-1),0);
 Result:='';
 if (k>10) and (k<20) then begin
   if(k<>4) then Result:=v[1][k mod 10]+'надцать' else Result:='четырнадцать';
 end else begin
		it:=1; i:=1; imln:=1; imlrd:=1;
		while( k > 0) do begin
     m:= k mod 10;
     if m<>0 then begin

        if imlrd=10 then begin
         i:=1;
         case m of
          1:intt:='миллиард';
          2..4:intt:='миллиарда';
          5..9:intt:='миллиардов';
         end;
         Result:=v[i][m] +' '+ intt + ' ' + Result;
       end else

        if imln=7 then begin
         i:=1;
         case m of
          1:intt:='миллион';
          2,3:intt:='миллиона';
          4..9:intt:='миллионов';
         end;
         Result:=v[i][m] +' '+ intt + ' ' + Result;
       end else

       if it=4 then begin
         i:=1;
         if m<>1 then begin
           Result:=v[i][m] +' '+ tsv[m] + ' ' + Result;
         end else begin
           Result:='одна '+ tsv[m] + ' ' + Result;
         end;
       end else begin
         Result := v[i][m] + ' ' + Result;
       end;

     end;
     k:=k div 10;
     inc(i); inc(it); inc(imln); inc(imlrd);
    end
 end;
 if Result<>'' then Result:=AnsiUpperCase(Result[1])+Copy(Result,2,Length(Result));
 Result:=Result+' грн.';
 if pt<>0 then
  Result:=Result+' '+copy(s,pt+1,Length(s))+' коп.';
end;
Годится?

P.S. Родительность сама оформи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2013, 22:14   #5
Ксения1206
Пользователь
 
Регистрация: 18.04.2013
Сообщений: 13
По умолчанию

А по легче есть программа?По-проще я бы так выразилась..
Ксения1206 вне форума Ответить с цитированием
Старый 18.04.2013, 22:23   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я что-то не углядел в тексте строк типа "одиннадцать", "двенадцать"...
Да и тысячи с миллионами и миллиардами как-то эклектично перемежаются. В принципе, конечно, если программу рассматривать как иллюстрацию возможностей, то - да, в ней показано более одного варианта реализации.
s-andriano вне форума Ответить с цитированием
Старый 18.04.2013, 23:26   #7
Ксения1206
Пользователь
 
Регистрация: 18.04.2013
Сообщений: 13
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Я что-то не углядел в тексте строк типа "одиннадцать", "двенадцать"...
Да и тысячи с миллионами и миллиардами как-то эклектично перемежаются. В принципе, конечно, если программу рассматривать как иллюстрацию возможностей, то - да, в ней показано более одного варианта реализации.

я написала программу где выводит количественные,но я не знаю как сделать с падежом,оформить((у меня вот 2 варианта..
Вложения
Тип файла: txt dr_var3.txt (1.3 Кб, 113 просмотров)
Тип файла: txt perevod1.txt (1.7 Кб, 129 просмотров)
Ксения1206 вне форума Ответить с цитированием
Старый 18.04.2013, 23:30   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я что-то не углядел в тексте строк типа "одиннадцать", "двенадцать"...
Здесь:
Цитата:
if(k<>4) then Result:=v[1][k mod 10]+'надцать'
Не претендую на овации - мои задачи функция решает.
Цитата:
А по легче есть программа?
Ну извини... Кроме промышленного нет ниче.
Цитата:
Да и тысячи с миллионами и миллиардами как-то эклектично перемежаются.
Нормально там все и с тысячами и с миллионами. А кому надо - подкорректирует как нужно.
Цитата:
если программу рассматривать как иллюстрацию возможностей
Функа промышленная, пока не лажала.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2013, 23:47   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

>12
дванадцать грн.
>13
тринадцать грн.
>14
четыренадцать грн.
>15
пятьнадцать грн.
>17
семьнадцать грн.
>18
восемьнадцать грн.
>19
девятьнадцать грн.
s-andriano вне форума Ответить с цитированием
Старый 18.04.2013, 23:54   #10
Ксения1206
Пользователь
 
Регистрация: 18.04.2013
Сообщений: 13
По умолчанию

ребятки помогите пожааааааааааааааааааалуйста((
Ксения1206 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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