Алгоритм

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Алгоритм

Сообщение Fenrir » 31.03.2008 19:34:23

Помогите написать алгоритм программы, которая должна введенное число написать словами
Fenrir
незнакомец
 
Сообщения: 1
Зарегистрирован: 31.03.2008 18:42:29

Сообщение maks » 31.03.2008 21:16:58

поподробнее обесни что иммено надо и какое слово при какой букве
вот напиши так writeln(chr(a)); вместо а пишешь цифру выведет знак c таблицы ascii или пишиш слово
case a of
1:writeln('privet');
2:writeln('poka');
end;
maks
новенький
 
Сообщения: 18
Зарегистрирован: 20.12.2007 21:08:00
Откуда: Вильнюс

Сообщение alexs » 31.03.2008 22:11:44

В инете куча готовых функций суммы прописью на разных языках - ищи. А можно напряч мозги и написать самому - ничего сложного,
элементарный case.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение ViruZ » 01.04.2008 13:26:48

Функция для перевода суммы прописью на украинский язык. Работает в Delphi, в Lazarus не проверял, но тоже должна.
Код: Выделить всё
function currency2Str (value: currency): string;
const hundreds: array [0..9] of string = ('',' сто',' двісті',' триста',' чотириста',' п''ятсот',
        ' шістсот',' сімсот',' вісімсот',' дев''ятсот');

tens: array [0..9] of string = ('','',' двадцять',' тридцять',' сорок',' п''ятдесят',' шістдесят',' сімдесят',' вісімдесят',' дев''яносто');

ones: array [0..19] of string = ('','','',' три',' чотири',' п''ять',' шість',' сім',' вісім',
        ' дев''ять',' десять',' одиннадцять',' дванадцять',' тринадцять',
                                  ' чотирнадцять',' п''ятнадцять',' шістнадцять',' сімнадцять',
                                  ' вісімнадцять',' дев''ятнадцять');
razryad: array [0..6] of string = ('',' тисяч',' мільйон',' мільярд',' трильйон',' квадрильйон', ' квінтільйон');

var s: string; i: integer; val: integer;

function shortNum(s: string; raz: integer): string;
begin
Result:=hundreds[StrToInt(s[1])];
if StrToInt(s)=0 then Exit;
if s[2]<>'1' then begin
Result:=Result+tens[StrToInt(s[2])];
case StrToInt(s[3]) of
1: if raz=1 then Result:=Result+' одна';
2: if raz=1 then Result:=Result+' дві'
else Result:=Result+ones[StrToInt(s[3])];
end;
Result:=Result+razryad[raz];
case StrToInt(s[3]) of
0,5,6,7,8,9: if raz>1 then Result:=Result+'ів';
1: if raz=1 then Result:=Result+'а';
2,3,4: if raz=1 then Result:=Result+'і' else if raz>1 then Result:=Result+'а';
end;
end else begin
Result:=Result+ones[StrToInt(Copy(s,2,2))];
Result:=Result+razryad[raz];
if raz>1 then Result:=Result+'ів';
end;
end;

begin
//перевірка, чи сума від'ємна
if value<0 then begin
Result := 'мінус ';
value := System.Abs(Value);
end;
val:=Trunc(value);
if val=0 then begin Result:='нуль грн. 00 коп.'; Exit; end;
s:=IntToStr(val); Result:=''; i:=0;
while Length(s)>0 do begin
Result:=shortNum(Copy('00'+s,Length('00'+s)-2,3),i)+Result;
if Length(s)>3 then s:=Copy(s,1,Length(s)-3) else s:='';
inc(i);
end;
s:=IntToStr(Trunc((value-val)*100+0.5));
if s='0' then s := '00';
Result:=Result+' грн. '+s+' коп.';
end;
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru