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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2013, 22:36   #1
Usandy
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 5
По умолчанию Помощь с циклом (Не могу решить проблему)

Написал программу, не получается убрать цикл разряда 4 ( case of 4 при условии, если в 5-ом разряде razr=1 (исключение будет, дабы выводилось, к примеру "одиннадцать тысяч") без учета 4-го разряда, очень нужна помощь, не знаю как сделать и ломаю голову уже 3 дня...



Код:
var R1,R2,R3,R4,R5: array[0..10] of string;
             i:integer;
 StrResult,stPr, stRez : string;
 a,inChislo,razr, strLen : integer;


      begin
      //      1 ðàçðÿä                  //
             R1[1]:=' îäèí ';
             R1[2]:=' äâà ';
             R1[3]:=' òðè ';
             R1[4]:=' ÷åòûðå';
             R1[5]:=' ïÿòü ';
             R1[6]:=' øåñòü ';
             R1[7]:=' ñåìü ';
             R1[8]:=' âîñåìü ';
             R1[9]:=' äåâÿòü ';
                       //      2 ðàçðÿä                  //
                       
             R2[0]:='';
              R2[1]:='';
              R2[2]:=' äâàäöàòü';
              R2[3]:=' òðèäöàòü';
              R2[4]:=' ñîðîê';
              R2[5]:=' ïÿòüäåñÿò';
              R2[6]:=' øåñòüäåñÿò';
              R2[7]:=' ñåìüäåñÿò';
              R2[8]:=' âîñåìüäåñÿò';
              R2[9]:=' äåâÿíîñòî ';
                       //      3 ðàçðÿä                  //
               R3[1]:='ñòî ';
               R3[2]:='äâåñòè';
               R3[3]:='òðèñòà';
               R3[4]:='÷åòûðåñòà';
               R3[5]:='ïÿòüñîò';
               R3[6]:='øåñòüñîò';
               R3[7]:='ñåìüñîò';
               R3[8]:='âîñåìüñîò';
               R3[9]:='äåâÿòüñîò';

                          //      4 ðàçðÿä                  //
               R4[1]:=' îäíà ';
               R4[2]:=' äâå ';
               R4[3]:=' òðè  ';
               R4[4]:=' ÷åòûðå ';
               R4[5]:=' ïÿòü ';
               R4[6]:=' øåñòü ';
               R4[7]:=' ñåìü ';
               R4[8]:=' âîñåìü ';
               R4[9]:=' äåâÿòü ';


                          //    èñêëþ÷åíèÿ ðàçðÿä                  //
                          
                     R5[1]:=' îäèííàäöàòü ';
                     R5[2]:=' äâåííàäöàòü ';
                     R5[3]:=' òðèííàäöàòü ';
                     R5[4]:=' ÷åòûðíàäöàòü ';
                     R5[5]:=' ïÿòíàäöàòü ';
                     R5[6]:=' øåñòíàäöàòü ';
                     R5[7]:=' ñåìíàäöàòü ';
                     R5[8]:=' âîñåìíàäöàòü ';
                     R5[9]:=' äåâÿòíàäöàòü ';


             
             
             
                writeln('Ââåäèòå ÷èñëî');
         readln(inChislo) ;
          stRez := IntToStr(inChislo);
          Strlen:= length(stRez);






     for i:= strLen downto 1 do
       Begin
         stPr:= copy(stRez,strLen - i +1,1);
         razr := StrToInt(stPr);
         

         
         case i of
          1: Begin
               StrResult:= StrResult + R1[razr];
             end;
          2:
               Begin
               if razr=1 then
               Begin
               stPr:= copy(stRez, strLen ,1);
               a := StrToInt(stPr);
               StrResult:= StrResult + R5[a];
               break;
               
                  end
               else
               StrResult:= StrResult + R2[razr];
     end;
          3:
          Begin
               StrResult:= StrResult + R3[razr];
          end;
          4:  Begin
               StrResult:= StrResult + R4[razr];
               If razr=1 then StrResult:= StrResult + ' òûñÿ÷à ';
               if razr=2   then StrResult:=StrResult + ' òûñÿ÷è ';
               if razr=3   then StrResult:=StrResult + ' òûñÿ÷è ';
               if razr=4   then StrResult:=StrResult + ' òûñÿ÷è ';
              if  razr>4 then StrResult:=StrResult + ' òûñÿ÷ ';
                end;

           5:  Begin
                 if razr=1 then
                 Begin
                 stPr:= copy(stRez, razr+1 ,1);
                 a := StrToInt(stPr);
                 StrResult:= StrResult + R5[a];



                  end
               else
               StrResult:= StrResult + R2[razr];

            end;
         end;
          end;

           writeln (strResult)
              end.

Последний раз редактировалось Usandy; 04.11.2013 в 22:39.
Usandy вне форума Ответить с цитированием
Старый 04.11.2013, 22:41   #2
Usandy
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 5
По умолчанию

http://gyazo.com/0e078a0b5d5c12a1717ca6549941ef4d
http://gyazo.com/064f60a3c3b6bfc6dbaaf403fc30ae11
http://gyazo.com/483adcf300f58748795baa2aa0f5bf9f
http://gyazo.com/4754953097004e725bd73f9240c621dc

скрины программы, дабы понять русские символы :D
Usandy вне форума Ответить с цитированием
Старый 05.11.2013, 11:49   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если вам что-то нужно проверить
Цитата:
при условии, если в 5-ом разряде razr=1
так и проверяйте данное данное данное дополнительное условие.
Примерный алгоритм
1. вводите дополнительную переменную (и задаете ЕЙ смысл!!!)
например
Код:
var
  predrazr: integer; // здесь будет значение ПРЕДЫДУЩЕГО разряда
2. задавайте ей значения в соответствии с придуманной ВАМИ логикой ее использования.(в соответствии со "смыслом")
3. используйте ЕЕ для уточнения условий формирования разрядов.
Цитата:
case of 4 при условии,
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.11.2013, 15:29   #4
Usandy
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 5
По умолчанию

сейчас попробую, спасибо за идею
Usandy вне форума Ответить с цитированием
Старый 05.11.2013, 15:47   #5
Usandy
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 5
По умолчанию

немного не понял, переменную внутрь цикла case of, или же вообще дать определенную логику этой переменной до данного цикла?
Usandy вне форума Ответить с цитированием
Старый 05.11.2013, 16:41   #6
Usandy
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 5
По умолчанию

решил проблему чуть по другому, в 5-ом разряде I:=i-1 и все пошло спасибо, что хотябы попробовали помочь, ибо на других форумах даже не смотрели на данное тз, очень благодарен!
Usandy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу решить проблему в программе с BackSpace Namtarius Общие вопросы C/C++ 5 24.02.2012 12:36
Не могу решить проблему с установкой системы, помогите! Na um Операционные системы общие вопросы 13 25.05.2009 13:54
Не могу понять как решить задачи. Нужна помощь Студент заочник Помощь студентам 9 30.12.2008 23:49
ПОМОГИТЕ РЕШИТЬ ПРОБЛЕМУ !!!!!!!!!!!! ЛиЛу Помощь студентам 5 29.12.2008 15:36