Информатика, опубликовано 2018-08-22 18:45:18 by Гость

Паскаль. С клавиатуры вводится целое число от 1 до 1000, обозначающая сумму в рублях. Программа должна напечатать эту сумму прописью.Пример: пятнадцать рублей.

Ответ оставил Гость

Var
  m, n: integer;
  s1, s2, s3: string;
  ms: array[1..9] of string;
  md: array[1..9] of string;
  m1: array[11..19] of string;
  me: array[1..9] of string;
  flag: boolean;

begin
 
  flag := false; { Пока ничего не выведено }
  s1 := рубль;
  s2 := рубля;
  s3 := рублей;
  ms[1] := сто; ms[2] := двести; ms[3] := триста; ms[4] := Четыреста;
  ms[5] := пятьсот; ms[5] := пятьсот; ms[6] := шестьсот; ms[7] := семьсот;
  ms[8] := восемьсот; ms[9] := девятьсот;
  md[1] := десять; md[2] := двадцать; md[3] := тридцать; md[4] := сорок;
  md[5] := пятьдесят; md[6] := шестьдесят; md[7] := семьдесят;
  md[8] := восемьдесят; md[9] := девяносто;
  m1[11] := одиннадцать; m1[12] := двенадцать; m1[13] := тринадцать;
  m1[14] := четырнадцать; m1[15] := пятнадцать; m1[16] := шестнадцать;
  m1[17] := семнадцать; m1[18] := восемнадцать; m1[19] := девятнадцать;
  me[1] := один; me[2] := два; me[3] := три; me[4] := четыре; me[5] := пять;
  me[6] := шесть; me[7] := семь; me[8] := восемь; me[9] := девять;
 
  Write(Введите целое число от 1 до 1000: );
  Readln(m);
  if (m 1000) then Writeln(Шутки шутим?)
  else
  if m = 1000 then Writeln(Одна тысяча + s3)
    else
  begin
      { сотни }
    n := m div 100;
    if n > 0 then
    begin
      Write(ms[n]);
      flag := true
    end;
      { десятки }
    m := m mod 100;
    if m = 0 then Writeln( , s3)
    else
    begin
      if (m > 10) and (m       begin
        if flag then Write( );
        Writeln(m1[m], , s3)
      end
      else
      if m > 0 then
      begin
        n := m mod 10;
        m := m div 10;
        if m > 0 then
        begin
          if flag then Write( ) else flag := true;
          Write(md[m])
        end;
        if n 0 then
        begin
          { единицы }
          if flag then Write( );
          Write(me[n], );
          case n of
            1: Writeln(s1);
            2..4: Writeln(s2);
          else Writeln( s3)
          end
        end
        else Writeln( , s3)
      end
    end
  end
end.

Тестовое решение:
Введите целое число от 1 до 1000: 314
триста четырнадцать рублей



Не нашли ответа?
Если вы не нашли ответа на свой вопрос, или сомневаетесь в его правильности, то можете воспользоваться формой ниже и уточнить решение. Или воспользуйтесь формой поиска и найдите похожие ответы по предмету Информатика.

Форма вопроса доступна на полной версии этой страницы.