Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизНе преобразует... Найти похожие ветки
← →
softerost © (2005-09-26 19:55) [0]Вот, не могу понять почему не преобразует числа в слова больше одной тысячи, Может кто нибудь подскажет где ошибка?:
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.
← →
umbra © (2005-09-26 20:04) [1]так у тебя даже слова "тысяча" в проге нет:))
← →
softerost © (2005-09-26 20:08) [2]2:
case X of
1 : Result:=Result+"tisyacha ";
2,3,4: Result:=Result+"tisyachi ";
else
if Ch<>0 then
Result:=Result+"tisyach ";
end;
Вот...
← →
softerost © (2005-09-26 20:44) [3]Может как то можно переделать код?
← →
Adder © (2005-09-26 21:23) [4]Может и можно.
Но сначала объясните, откуда у Вас взялась вот эта строчка
for i:=1 downto 1 do
и в чем ее смысл?
← →
softerost © (2005-09-26 21:28) [5]
> и в чем ее смысл?
Тогда как сделать?
← →
Adder © (2005-09-26 21:34) [6]
> softerost © (26.09.05 21:28) [5]
Для начала ответьте на вопрос -)
← →
softerost © (2005-09-26 21:48) [7]... -)
← →
softerost © (2005-09-26 21:56) [8]Ну если не правильно испозован цикл, как сделать правильно ?
← →
Adder © (2005-09-27 01:47) [9]Сдается мне, не Ваш это код...
И не нравится он мне.
"Минимальной кровью" исправить можно так (пишу только исправленные фрагменты):
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 рублей.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c