Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1125470679
MakNik
2005-08-31 10:44
2005.10.16
Оптимизация запроса...


14-1127297458
Danilka
2005-09-21 14:10
2005.10.16
Про муниципальные предприятия.


14-1127815480
Vlad Oshin
2005-09-27 14:04
2005.10.16
Рассказик. С Новым Годом.


8-1116912928
ALL
2005-05-24 09:35
2005.10.16
MediaPlayer


14-1127833083
Gorger
2005-09-27 18:58
2005.10.16
Что бы это могло означать,помогите тупому.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский