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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 11:07   #1
...Оленька...
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 32
По умолчанию Символьные типы данных

помогите пожалуйста решить задачу и составить блок схему!
Дано натуральное n(n<=1000). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д.)
...Оленька... вне форума Ответить с цитированием
Старый 04.01.2009, 01:55   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

С Новым годом...
1. Открываете любой документ Word.
2. Жмёте сочетание клавиш контрол-F9 (это вставка поля).
3. Между возникшими { } вводите, например, =111 \* cardtext
4. Жмёте F9, затем альт-F9.

Если всё правильно (а любая опечатка сведёт все труды на нет — так что пример лучше не набирать, а копиравать прямо отсюда), в документе увидите:
сто одиннадцать
либо
one hundred eleven
либо
Hundertelf
либо
сто одинадцять

Словом, прочтение числа 111 словами того языка, который в вашем редакторе Wоrd стоит по умолчанию.

P/s: конечно, я помог "так себе", но, надеюсь, был полезен (для текста вашей программы)

Последний раз редактировалось Sasha_Smirnov; 04.01.2009 в 02:15.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 04.01.2009, 14:19   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sasha_Smirnov, -1
какое отношение то, что Вы написали имеет отношение к решению задачи на Паскаль?!!!

___________________________________ __________________
...Оленька...
Тема то избитая... на всех языках можно исходники найти... Вы пробовали поискать?
вот, поиск на Гугле

ну, за пятнадцать минут набросал...
Специально для Вас (т.е. обрабатываются только числа до 1000)

Код:
Const
 Sotni    : Array[0..9] Of String[20]=('','сто','двести','триста','четыреста',
           'пятьсот','шестьсот','семьсот','восемьсот','девятьсот');
 Digit21  : Array[0..9] Of String[20]=('десять','одиннадцать','двенадцать',
           'тринадцать','четырнадцать','пятнадцать',
           'шестнадцать','семнадцать','восемнадцать','девятнадцать');
 Desaytki : Array[0..9] Of String[20]=('','','двадцать','тридцать','сорок',
           'пятьдесят','шестьдесят','семьдесят','восемьдесят','девяносто');
 Digit1  : Array[0..9] Of String[20]=('','один','два','три','четыре','пять',
           'шесть','семь','восемь','девять');

Function Sum2Txt(L : LongInt):String;

var STemp : string;
    OneDigit : integer;

begin
 If L=0 Then begin
   Sum2Txt:='Ноль';
   Exit;
 end;
 If L=1000 Then begin
   Sum2Txt:='Тысяча';
   Exit;
 end;
 STemp := '';

 {обработаем сотни}
 if L>99 then begin
   OneDigit := L div 100;
   L := L mod 100;
   STemp := Sotni[OneDigit];
 end;

 {проверяем, если остаток >=10 и <=19}
 if (L>=10) and (L<=19) then
   STemp := STemp + ' ' + Digit21[L-10]
 else begin
   OneDigit := L div 10;
   L := L mod 10;
   STemp := STemp + ' ' + Desaytki[OneDigit];
   if L<>0 then begin
     STemp := STemp + ' ' + Digit1[L];
   end;   
 end;
 
 Sum2Txt:=STemp;
 
End;

var N : integer;
Begin
  WriteLn;
  Write('Введите N (натуральное, N<=1000): ');
  ReadLn(N);
  if (N<0) or (N>1000) then 
    WriteLn('#Ошибка: Неверное число!')
  else 
    WriteLn(N:1,' ',Sum2Txt(N));
End.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 14:24   #4
Teor
Пользователь
 
Регистрация: 20.12.2008
Сообщений: 46
По умолчанию

Вот мой вариант
Код:
program m;
uses crt;
var mas:array[1..3] of integer; i,n:integer;
begin
clrscr;
writeln ('Введите число');
readln (n);
if (n<=0) or (n>1000) then halt;
if n=1000 then write ('тысяча');
for i:=1 to 3 do
begin
mas[i]:=n mod 10;
n:= n div 10;
end;
case mas[3] of
1:write ('сто ');
2:write ('двести ');
3:write ('триста ');
4:write ('четыреста ');
5:write ('пятьсот ');
6:write ('шестьсот ');
7:write ('семьсот  ');
8:write ('восемьсот ');
9:write ('девятьсот ');
end;
case mas[2] of
1:begin
case mas[1] of
1:write ('одинадцать ');
2:write ('двенадцать ');
3:write ('тринадцать ');
4:write ('четырнадцать ');
5:write ('пятнадцать ');
6:write ('шестнадцать ');
7:write ('семнадцать ');
8:write ('восемнадцать ');
9:write ('девятнадцать ');
0:write ('десять ');
end;
end;
2:write ('двадцать ');
3:write ('тридцать ');
4:write ('сорок ');
5:write ('пятьдесят ');
6:write ('шестьдесят ');
7:write ('семьдесят ');
8:write ('восемьдесят ');
9:write ('девяносто ');
end;
if mas[2]<>1 then 
case mas[1] of
1:write ('один');
2:write ('два ');
3:write ('три ');
4:write ('четыри ');
5:write ('пять ');
6:write ('шесть ');
7:write ('семь ');
8:write ('восемь ');
9:write ('девять ');
end;
readkey
end.

Последний раз редактировалось Teor; 04.01.2009 в 20:23.
Teor вне форума Ответить с цитированием
Старый 04.01.2009, 15:54   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Teor. Ошибка у Вас коде. Попробуйте для чисел, заканчивающихся на 1 (как-то 21, 31 .. 991)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 16:21   #6
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Смех

Да вот здесь
Код:
case mas[1] of
2:write ('два ');
3:write ('три ');
4:write ('четыре ');
5:write ('пять ');
6:write ('шесть ');
7:write ('семь ');
8:write ('восемь ');
9:write ('девять ');
end;
нужно вставить
Код:
1:write ('один ');

Последний раз редактировалось pomoshnic; 04.01.2009 в 21:58.
pomoshnic вне форума Ответить с цитированием
Старый 04.01.2009, 17:40   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от pomoshnic
нужно вставить
Код:
1:write ('один ');
Да ну?!!
Ну проверьте.
Число для проверки: 11, 12, 13.... ;-)

попытка не засчитана! ;-)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 20:20   #8
Teor
Пользователь
 
Регистрация: 20.12.2008
Сообщений: 46
По умолчанию

Недопечатка Уже исправил ...

Так я еще у себя ошибки нашел. Ща исправлять буду.

Уже исправил. Вроде

Последний раз редактировалось Teor; 04.01.2009 в 20:25.
Teor вне форума Ответить с цитированием
Старый 04.01.2009, 21:29   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. Подтверждаю, теперь работает.
последнее, надо исправить орфографическую ошибочку (малюсенькую...) :-)
Код:
4:write ('четыри ');
Правильно: "четыре"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 22:08   #10
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Смущение

Да... нужно было сначала протестировать.
pomoshnic вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбинированные типы данных и массивы mar4elo Общие вопросы Delphi 11 01.12.2008 10:41
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Ссылочные типы данных. Динамическая память/HELP!! ромка) Паскаль, Turbo Pascal, PascalABC.NET 2 22.05.2008 09:03
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03
Про типы данных Smorodin Общие вопросы .NET 1 02.10.2007 15:40