X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V  < 1 2
Открыть тему
Тема закрыта
> Помогите с Паскалем.
Ветер
Ветер
сообщение 23.10.2009, 16:06; Ответить: Ветер
Сообщение #12


Так как в условии задачи сказано, что требуется вывести целое четырехзначное число в литерном виде, получается, что:
1) на входе есть цифры
2) на выходе должна получиться строка с текстовым представлением числа.

набросал программу на паскале, которая это делает (чистого паскаля нет, поэтому писал в delphi):

program numconv;

{$APPTYPE CONSOLE}
uses
  SysUtils;

const
  input: string = '9322';

function getnum_0_9 (digit, pol: char): string;
const
  data: array['0'..'9','0'..'1'] of string =
    (
      ('', ''),
      ('один', 'одна'),
      ('два', 'две'),
      ('три', 'три'),
      ('четыре', 'четыре'),
      ('пять', 'пять'),
      ('шесть', 'шесть'),
      ('семь', 'семь'),
      ('восемь', 'восемь'),
      ('девять', 'девять')
    );
begin
  getnum_0_9 := data[digit, pol];
end;

function getnum_10_19 (digit: string): string;
const
  data: array[10..19] of string =
    (
      'десять',
      'одиннадцать',
      'двенадцать',
      'тринадцать',
      'четырнадцать',
      'пятнадцать',
      'шестнадцать',
      'семнадцать',
      'восемнадцать',
      'девятнадцать'
    );
var
  code : integer;
  int: integer;
begin
  val(digit, int, code);
  getnum_10_19 := data[int];
end;

function getnum_20_90 (digit: char): string;
const
  data: array['0'..'9'] of string =
    (
      '',
      '',
      'двадцать',
      'тридцать',
      'сорок',
      'пятьдесят',
      'шестьдесят',
      'семьдесят',
      'восемьдесят',
      'девяносто'
    );
begin
  getnum_20_90 := data[digit];
end;

function getnum_100_900 (digit: char): string;
const
  data : array['0'..'9'] of string =
    (
      '',
      'сто',
      'двести',
      'триста',
      'четыреста',
      'пятьсот',
      'шестьсот',
      'семьсот',
      'восемьсот',
      'девятьсот'
    );
begin
  getnum_100_900 := data[digit];
end;

function getnum_thousand (digit: char): string;
const
  data : array['0'..'9'] of string =
    (
      '',
      'тысяча',
      'тысячи',
      'тысячи',
      'тысячи',
      'тысяч',
      'тысяч',
      'тысяч',
      'тысяч',
      'тысяч'
    );
begin
  getnum_thousand := data[digit];
end;

var
  output: string;

begin
//  input[1] - тысячи

  if (input[1] > '0') then
  begin
    output := getnum_0_9(input[1], '1') + ' ' + getnum_thousand(input[1]) + ' ';
  end;

//  input[2] - сотни
  if (input[2] > '0') then
  begin
    output := output + getnum_100_900(input[2]) + ' ';
  end;

//  input[3] - сотни
  if (input[3] > '0') then
  begin
    if (input[3] < '2') then
    begin
      output := output + getnum_10_19(input[3]+input[4]);
    end
    else
    begin
      output := output + getnum_20_90(input[3]) + ' ';
//  input[4] - единицы
      if (input[4] > '0') then
      begin
        output := output + getnum_0_9(input[4], '0');
      end;
    end;
  end
//  input[4] - единицы
  else
  begin
    output := output + getnum_0_9(input[4], '0');
  end;
  writeln('число: ' + input + '. литерный вид: ' + output);
  readln;
end.


для того, чтобы она запустилась в паскале, думаю, что нужно будет убрать {$APPTYPE CONSOLE} и поменять uses SysUtils; на паскалевские стандартные библиотеки.

исходное число прописано, как константа:
input: string = '9322';


если число меньше тысячи - нужно вбивать нули в начало строки, чтобы длина все равно оставалась равной 4.
input: string = '0167';


на идеальность решения не претендую =)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
piligrim
piligrim
Topic Starter сообщение 23.10.2009, 16:27; Ответить: piligrim
Сообщение #13


Спасибо большое, Ветер и zver777.
Ветер, не поленились и набрали такое большое кол-во кода. Все-таки я не уверен, что задание требует столько кода.

Сообщение отредактировал piligrim - 23.10.2009, 16:28


--------------------
Куплю контент(скан) женской тематики(гламур,одежда, парфюмерия и пр). ЛС.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ветер
Ветер
сообщение 23.10.2009, 16:30; Ответить: Ветер
Сообщение #14


(piligrim @ 23.10.2009, 13:54) *
препод немного по другому объяснял. в тетради так написал мне:
введено x=1237
результат:
а='1'
b='2'
c='3'
d='7'
1 число х разбить на цифры x1,x2,x3,x4
а= chr(x1+48);
далее с другими цифрами, но суть я не пойму.


это меняет дело. в этом случае нужно использовать такую программу:
program litout
{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  input: string = '9554';

var
  i: integer;
  code : integer;
  int: integer;

begin
  // пробегаем по числу
  for i := 0 to 3 do
  begin
    // преобразуем символ в соответствующее число
    val(input[i], int, code);
    // печатаем
    write(chr(int+48));
  end;
  readln;
end.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
piligrim
piligrim
Topic Starter сообщение 23.10.2009, 16:40; Ответить: piligrim
Сообщение #15


Вот это больше похоже. Еще раз огромное спасибо, выручили.


--------------------
Куплю контент(скан) женской тематики(гламур,одежда, парфюмерия и пр). ЛС.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
piligrim
piligrim
Topic Starter сообщение 8.11.2009, 22:56; Ответить: piligrim
Сообщение #16


Еще вопросы появились.

1.Сторона правильного вписанного в окружность многоугольника с удвоенным числом сторон выражается через сторону исходного многоугольника a н-ное и радиус описанной окружности R в виде формулы.


2. Даны натуральное число N, действительное число X. Среди чисел E( в степени cos(X(в степени 2K)) sin(x(в степени 3K)) ( K=1,...,n) найти ближайшее к какому нибудь целому.


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал piligrim - 8.11.2009, 23:19


--------------------
Куплю контент(скан) женской тематики(гламур,одежда, парфюмерия и пр). ЛС.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V  < 1 2
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 731 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1702 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2345 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12542 24.7.2020, 17:02
автор: -JamesSmips-
Открытая тема (нет новых ответов) Помогите с поиском доноров
3 tehno_music 3361 4.11.2019, 17:15
автор: goblin78


 



RSS Текстовая версия Сейчас: 25.4.2024, 9:22
Дизайн