![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не преобразует...
softerost © (2005-09-26 19:55:00)Вот, не могу понять почему не преобразует числа в слова больше одной тысячи, Может кто нибудь подскажет где ошибка?:
program proga;
uses crt;
var flag11:boolean;
i,k:integer;
x, ch : longint;
result: string;
begin
clrscr;
{$I-}
while K=0 do begin
write('Vvedite chislo: ');
readln(Ch);
if (ioresult=0) and (ch>=0) then begin
k:=1;
for i:=1 downto 1 do
begin
Flag11:=False;
X:=Ch div 100;
case X of
1: Result:=Result+'sto ';
2: Result:=Result+'dvesti ';
3: Result:=Result+'trista ';
4: Result:=Result+'chetiresta ';
5: Result:=Result+'pyatsot ';
6: Result:=Result+'shestsot ';
7: Result:=Result+'semsot ';
8: Result:=Result+'vosemsot ';
9: Result:=Result+'devyatsot ';
end;
X:=(Ch mod 100) div 10;
case X of
1:
begin
X:=Ch mod 100;
case X of
10: Result:=Result+'desyat ';
11: Result:=Result+'odinadsat ';
12: Result:=Result+'dvenadsat ';
13: Result:=Result+'trinadsat ';
14: Result:=Result+'chetirnadsat ';
15: Result:=Result+'pyatnadsat ';
16: Result:=Result+'shestnadsat ';
17: Result:=Result+'semnadsat ';
18: Result:=Result+'vosemnadsat ';
19: Result:=Result+'devyatnadsat ';
end;
case i of
3: Result:=Result+'millionov ';
2: Result:=Result+'tisyach ';
1: Result:=Result+'rublei ';
end;
Flag11:=True;
end;
2: Result:=Result+'dvadsat ';
3: Result:=Result+'tridsat ';
4: Result:=Result+'sorok ';
5: Result:=Result+'pyatdesyat ';
6: Result:=Result+'shestdesyat ';
7: Result:=Result+'semdesyat ';
8: Result:=Result+'vosemdesyat ';
9: Result:=Result+'devyanosto ';
end;
X:=Ch mod 10;
if not Flag11 then
begin
case X of
1:
if i=2 then
Result:=Result+'odna '
else
Result:=Result+'odin ';
2:
if i=2 then
Result:=Result+'dve '
else
Result:=Result+'dva ';
3: Result:=Result+'tri ';
4: Result:=Result+'chetiri ';
5: Result:=Result+'pyat ';
6: Result:=Result+'shest ';
7: Result:=Result+'sem ';
8: Result:=Result+'vosem ';
9: Result:=Result+'devyat ';
end;
case i of
3:
case X of
1: Result:=Result+'million ';
2,3,4: Result:=Result+'milliona ';
else
Result:=Result+'millionov ';
end;
2:
case X of
1 : Result:=Result+'tisyacha ';
2,3,4: Result:=Result+'tisyachi ';
else
if Ch<>0 then
Result:=Result+'tisyach ';
end;
1:
case X of
1 : Result:=Result+'rubl ';
2,3,4: Result:=Result+'rublyaя ';
else
Result:=Result+'rublei ';
end;
end;
end;
end;
writeln(result);
readln;
end
else
writeln('Chislo dolgno bit Maxlongint');
writeln;
end;
end.
Adder (2005-09-27 01:47:00) [1]Сдается мне, не Ваш это код...
И не нравится он мне.
"Минимальной кровью" исправить можно так (пишу только исправленные фрагменты):
var flag11:boolean;
i,k:integer;
x, ch : longint;
result: string;
temp:longint;
begin
..........
//for i:=1 downto 1 do
//begin
// вместо этих двух строк пишем:
for i:=3 downto 1 do
begin
temp:=ch;
case i of
3: Ch:= Сh div 1000000;
2: Ch:= (Ch div 1000) mod 1000;
1: Ch:= Ch mod 1000;
end;
if (i > 1) and (Ch = 0) then
begin
Ch:=Temp;
Continue;
end;
Flag11:=False;
..................... здесь оставляем всё как было..................
end;
Ch:=Temp; // восстанавливаем Ch перед следующим входом в цикл
end;
writeln(result);
readln;
end
else
writeln('Chislo dolgno bit Maxlongint');
writeln;
end;
end.
Работать будет до 999 999 999 рублей.
softerost (2005-09-26 21:56:00) [2]Ну если не правильно испозован цикл, как сделать правильно ?
softerost (2005-09-26 21:48:00) [3]... -)
Adder (2005-09-26 21:34:00) [4]
> softerost © (26.09.05 21:28) [5]
Для начала ответьте на вопрос -)
softerost (2005-09-26 21:28:00) [5]
> и в чем ее смысл?
Тогда как сделать?
Adder (2005-09-26 21:23:00) [6]Может и можно.
Но сначала объясните, откуда у Вас взялась вот эта строчка
for i:=1 downto 1 do
и в чем ее смысл?
softerost (2005-09-26 20:44:00) [7]Может как то можно переделать код?
softerost (2005-09-26 20:08:00) [8]2:
case X of
1 : Result:=Result+'tisyacha ';
2,3,4: Result:=Result+'tisyachi ';
else
if Ch<>0 then
Result:=Result+'tisyach ';
end;
Вот...
umbra (2005-09-26 20:04:00) [9]так у тебя даже слова "тысяча" в проге нет:))