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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 00:03   #1
mares
 
Регистрация: 28.04.2010
Сообщений: 9
Радость число прописью в паскале

Код:
program chisla_propisyu;
uses crt;
var st:string;
    n,i:longint;
    var c:array[1..4]of integer;
        s:array[1..4,1..3]of string;

begin
 s[1,1]:='миллиард';
 s[1,2]:='миллиарда';
 s[1,3]:='миллиардов';
 s[2,1]:='миллион';
 s[2,2]:='миллиона';
 s[2,3]:='миллионов';
 s[3,1]:='тысяча';
 s[3,2]:='тысячи';
 s[3,3]:='тысяч';
 s[4,1]:='';
 s[4,2]:='';
 s[4,3]:='';

 clrscr;
 readln(n);
 st:='';
 c[1]:=n div 1000000000;
 c[2]:=(n mod 1000000000) div 1000000;
 c[3]:=(n mod 1000000) div 1000;
 c[4]:=n mod 1000;

 for i:=1 to 4 do

if c[i]<>0 then
begin
 if c[i] div 100<>0 then
 case c[i] div 100 of
 1:st:=st+'сто';
 2:st:=st+'двести';
 3:st:=st+'триста';
 4:st:=st+'четыреста';
 5:st:=st+'пятьсот';
 6:st:=st+'шестьот';
 7:st:=st+'семьсот';
 8:st:=st+'восемьсот';
 9:st:=st+'девятьсот';
 end;

 if (c[i] mod 100) div 10<>1 then
 begin
  case (c[i] mod 100) div 10 of
  2:st:=st+' двадцать';
  3:st:=st+' тридцать';
  4:st:=st+' сорок';
  5:st:=st+' пятьдесят';
  6:st:=st+' шестьдесят';
  7:st:=st+' семьдесят';
  8:st:=st+' восемьдесят';
  9:st:=st+' девяносто';
  end;
  case c[i] mod 10 of
  1:if i<=3 then st:=st+' одна' else st:=st+' один';
  2:if i<=3 then st:=st+' две' else st:=st+' два';
  3:st:=st+' три';
  4:st:=st+' четыри';
  5:st:=st+' пять';
  6:st:=st+' шесть';
  7:st:=st+' семь';
  8:st:=st+' восемь';
  9:st:=st+' девять';
  end;
 end
 else
 case (c[i] mod 100) of
 10:st:=st+' десять';
 11:st:=st+' одинадцать';
 12:st:=st+' двенадцать';
 13:st:=st+' тринадцать';
 14:st:=st+' четырнадцать';
 15:st:=st+' пятнадцать';
 16:st:=st+' шестнадцать';
 17:st:=st+' семнадцать';
 18:st:=st+' восемнадцать';
 19:st:=st+' девятнадцать';
 end;

 if (c[i] mod 100>=10) and (c[i] mod 100<=19) then st:=st+' '+s[i,3]+' '
 else
 case c[i] mod 10 of
 1:st:=st+' '+s[i,1]+' ';
 2..4:st:=st+' '+s[i,2]+' ';
 5..10:st:=st+' '+s[i,3]+' ';
 end;

end;

 writeln(st);
  readln;
end.
посмотрите пожалуйста в программе есть косяк все вроде нормально работает, но вместо того чтобы, прога выводила "один миллион" она выводит "одна мллион", так же и с двойко, потом прога не выводит 20000, 30000,...900000. 20000000,30000000,...900000000., вместо 20000 "двадца", 20000000 "двадцать". миллиарды вообще не выводит ((( , хотя 10000, 10000000 выводит, и числа например 22000 или 999999999 выводит отлично. помогите пожалуйста разобраться...

Последний раз редактировалось mares; 30.04.2010 в 00:17.
mares вне форума Ответить с цитированием
Старый 30.04.2010, 15:39   #3
mares
 
Регистрация: 28.04.2010
Сообщений: 9
По умолчанию

но эти способы для делфи (((, мне бы на паскаль, неужели нету знающего человека, который мог бы указать где ошибка в этой проге (((
mares вне форума Ответить с цитированием
Старый 30.04.2010, 15:47   #4
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

Цитата:
но эти способы для делфи
а разница то какая?
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Старый 30.04.2010, 19:38   #5
mares
 
Регистрация: 28.04.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DoDge_VipeR Посмотреть сообщение
а разница то какая?
ну есть наверно разница, они в паскале не работают, твои ссылки тоже не работают

вот что пишет!

"Запрошенная страница не существует.
Вы можете перейти на главную страницу сайта

CyberGuru.ru - программирование и операционные системы

или воспользоваться поиском ниже."
mares вне форума Ответить с цитированием
Старый 30.04.2010, 19:46   #6
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

Код:
var st:string;
    n,i:integer;
    c:array[1..4]of integer;
    s:array[1..4,1..3]of string;
begin
s[1,1]:='миллиард';
s[1,2]:='миллиарда';
s[1,3]:='миллиардов';
s[2,1]:='миллион';
s[2,2]:='миллиона';
s[2,3]:='миллионов';
s[3,1]:='тысяча';
s[3,2]:='тысячи';
s[3,3]:='тысяч';
s[4,1]:='';
s[4,2]:='';
s[4,3]:='';
write('Введите число до 2 147 483 647 n=');
readln(n);
st:='';
c[1]:=n div 1000000000;
c[2]:=(n mod 1000000000) div 1000000;
c[3]:=(n mod 1000000) div 1000;
c[4]:=n mod 1000;
for i:=1 to 4 do
write(c[i],' ');
writeln;
for i:=1 to 4 do
if c[i]<>0 then
 begin
  if c[i] div 100<>0 then
  case c[i] div 100 of
  1:st:=st+'сто';
  2:st:=st+'двести';
  3:st:=st+'триста';
  4:st:=st+'четыреста';
  5:st:=st+'пятьсот';
  6:st:=st+'шестьсот';
  7:st:=st+'семьсот';
  8:st:=st+'восемьсот';
  9:st:=st+'девятьсот';
  end;
  if (c[i] mod 100) div 10<>1 then
   begin
    case (c[i] mod 100) div 10 of
    2:st:=st+' двадцать';
    3:st:=st+' тридцать';
    4:st:=st+' сорок';
    5:st:=st+' пятьдесят';
    6:st:=st+' шестьдесят';
    7:st:=st+' семьдесят';
    8:st:=st+' восемьдесят';
    9:st:=st+' девяносто';
    end;
    case c[i] mod 10 of
    1:if i=3 then st:=st+' одна' else st:=st+' один';
    2:if i=3 then st:=st+' две' else st:=st+' два';
    3:st:=st+' три';
    4:st:=st+' четыре';
    5:st:=st+' пять';
    6:st:=st+' шесть';
    7:st:=st+' семь';
    8:st:=st+' восемь';
    9:st:=st+' девять';
    end;
   end
  else
   case (c[i] mod 100) of
   10:st:=st+' десять';
   11:st:=st+' одиннадцать';
   12:st:=st+' двенадцать';
   13:st:=st+' тринадцать';
   14:st:=st+' четырнадцать';
   15:st:=st+' пятндцать';
   16:st:=st+' шестнадцать';
   17:st:=st+' семнадцать';
   18:st:=st+' восемнадцать';
   19:st:=st+' девятнадцать';
   end;
   if (c[i] mod 100>=10) and (c[i] mod 100<=19) then st:=st+' '+s[i,3]+' '
   else
   case c[i] mod 10 of
   1:st:=st+' '+s[i,1]+' ';
   2..4:st:=st+' '+s[i,2]+' ';
   5..9,0:st:=st+' '+s[i,3]+' ';
   end;
 end;
writeln(st);
readln;
end.
все работает!!! по крайней мере для чисел <2 147 483 647
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Старый 30.04.2010, 19:58   #7
mares
 
Регистрация: 28.04.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DoDge_VipeR Посмотреть сообщение
все работает!!! по крайней мере для чисел <2 147 483 647
спасибо тебе большое!!!

вопрос есть, ты же не спользуешь значение longint почему тогда можно вводить только до 2 147 483 647 ведь это только со значением longint такое

ребята а можно сделать чтобы без ограничения было, чтобы до 999 999 999 999 миллиардов???

Последний раз редактировалось Stilet; 19.05.2010 в 09:15.
mares вне форума Ответить с цитированием
Старый 01.05.2010, 00:36   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно.
ответил Вам в Вашей теме тут - http://www.programmersforum.ru/showthread.php?p=513996
(пост #17)

и прекращайте заниматься кросспостингом!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2010, 19:11   #9
alla _ zip
Пользователь
 
Регистрация: 20.04.2010
Сообщений: 10
По умолчанию

ссылка не октрывается...(((

ммм(( никак....

Последний раз редактировалось Stilet; 19.05.2010 в 09:16.
alla _ zip вне форума Ответить с цитированием
Старый 18.05.2010, 22:16   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Какая ссылка не открывается то?..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Число прописью. Делфи ilnar Помощь студентам 2 18.01.2010 16:42
Как в паскале перевести число с 10-ной с/с в 16-ную с/с Vika Помощь студентам 6 23.12.2008 20:00
Как найти большее число из имеющихся значений в Паскале? Auditor Помощь студентам 7 05.05.2008 21:57
Срочно! Помогите построить СДНФ на Паскале число переменных задает пользователь stscolt Помощь студентам 1 21.04.2008 22:20
Число прописью по русски XPAiN Компоненты Delphi 15 07.01.2008 11:03