Суббота, 22.11.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Бухгалтерский калькулятор
ARTEM713Дата: Суббота, 01.12.2007, 23:38 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 0
Замечания: 20%
Статус: Offline
Пользователь вводит число от 0 до 999999, на экране возникает это же число, но записанное приписью.
Требования к программе:
1)Предусмотреть проверку корректности ввода исходных данных
2)Ввод числа можно осуществлять до тех пор, пока пользователь не нажал клавишу''Д'' или ''д''
3)Ввод и вывод данных должен содержать сопровождение
4)Обработку данных производить с помощью процедур и функций

пожалуйста помогите очень надо!!!!!!!

 
PavelДата: Воскресенье, 02.12.2007, 12:17 | Сообщение # 2
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (ARTEM713)
3)Ввод и вывод данных должен содержать сопровождение

Что есть сопровождение?

 
PavelДата: Воскресенье, 02.12.2007, 14:17 | Сообщение # 3
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Вот задача: Остается перевести из транслита. Если надо.

Code
program Buhg_calc;
uses crt;
const
     Hd: array[1..9] of string = ('sto'     , 'dvesti'  , 'trista', 'chetiresta',
                    'pyatsot' , 'shestsot', 'semsot', 'vosemsot',
                    'devyatsot');

     Dc: array[1..10] of string = ('odin' , 'dva', 'tri'  , 'chetire', 'pyat',
                    'shest', 'sem', 'vosem', 'devyat'  , 'desyat');

     th: array[1..10] of string = ('odna' , 'dve', 'tri'  , 'chetire', 'pyat',
                    'shest', 'sem', 'vosem', 'devyat'  , 'desyat');
var
     c: longint;
     res: string;
     tis: boolean;
     rkey: char;

Function Chislo(c: word; tis: boolean): string;
var r, sub: string;
     cdc,n: byte;
     flag: boolean;
begin
flag := false;
r := '';
if c = 0 then
     begin
     chislo := '';
     exit;
     end;

if ((c div 100) > 0) then r := r + hd[c div 100] + ' ';
cdc := c mod 100;

if (cdc <= 10) then
    begin
    if tis then r := r + th[cdc] + ' ' else
    r := r + dc[cdc] + ' ';
    end;

if (cdc > 10) and (cdc < 20) then
    begin
    n := cdc mod 10;
    sub := dc[n];
    if (sub[length(sub)] = 'e') then delete(sub, length(sub), 1);
    if (sub[length(sub)] = 'a') then sub[length(sub)] := 'e';
    r := r + sub + 'nadcat ';
    end;

if cdc >= 20 then
    begin
    if cdc div 10 <= 3 then
       begin
       r := r + dc[cdc div 10] + 'dcat ';
       flag := true;
       end;
    if cdc div 10 = 4 then
       begin
       r := r + 'sorok ';
       flag := true;
       end;
    if cdc div 10 = 9 then
       begin
       r := r + 'devyanosto ';
       flag := true;
       end;

    if flag = false then
       r := r + dc[cdc div 10] + 'desyat ';
    if tis then r := r + th[cdc mod 10] + ' ' else
       r := r + Dc[cdc mod 10] + ' ';
    end;

if tis then
     begin
     if r[length(r) - 1] = 'a' then r := r + 'tysyacha ' else
     if (r[length(r) - 1] = 'e') or
        (r[length(r) - 1] = 'i') then r := r + 'tysyachi ' else
     r := r + 'tysyach ';

     end;
Chislo := r;
end;

begin
clrscr;
repeat
res := '';

writeln(#10#13, 'Vvedite chislo');
{$I-}
readln(c);
{$I+}
if c = 0 then writeln('Nolik');
while (IOResult <> 0) or (c < 0) or (c > 999999) do
     begin
     writeln('Vvedite pravilno chislo: ');
     {$I-}
     readln(c);
     {$I+}
     end;

tis := c div 1000 > 0;
if c div 1000 > 0 then res := chislo(c div 1000, tis);
res := res + chislo(c mod 1000, false);

writeln(res);

writeln('Press [d] to continue...');
rkey := readkey;
until (rkey = 'd') or (rkey ='D');
end.

{A perevodom zanimaites' sami, ya lublu transliteration!!!}
 
ARTEM713Дата: Понедельник, 03.12.2007, 06:06 | Сообщение # 4
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 0
Замечания: 20%
Статус: Offline
мега СПС!!!

Добавлено (02.12.2007, 16:27)
---------------------------------------------
транслит, ты имеешь ввиду перевести надпись типа odin на русский ???

Добавлено (02.12.2007, 23:06)
---------------------------------------------
транслит, ты имеешь ввиду перевести надпись типа odin на русский ???

 
SeqularДата: Понедельник, 03.12.2007, 09:24 | Сообщение # 5
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
ARTEM713, Да, все верно! Транслит - это оно самое "odin" = "один" =)
Pahan, Молодец! Респектую


Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Понедельник, 03.12.2007, 12:20 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Транслит - это еще с эпохи старых телефонов. Сотовые операторы меняли буквы в словах на латинские, потому что некоторые телефоны русский не поддерживали. Вот и в Паскале так же.
Artem пиши еще. Поможем.
 
ARTEM713Дата: Среда, 05.12.2007, 04:48 | Сообщение # 7
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 0
Замечания: 20%
Статус: Offline
оки

Добавлено (04.12.2007, 21:37)
---------------------------------------------
не чегот не работает

Добавлено (04.12.2007, 21:48)
---------------------------------------------
begin
n := cdc mod 10;
sub := dc[n];
if (sub[length(sub)] = 'e') then delete(sub, length(sub), 1);
if (sub[length(sub)] = 'a') then sub[length(sub)] := 'e';
^
вот тут пишет Error 89: ")" Expected

r := r + sub + 'nadcat '; вот тут пишет Error 89
end;

Сообщение отредактировал ARTEM713 - Среда, 05.12.2007, 04:43
 
PavelДата: Среда, 05.12.2007, 09:48 | Сообщение # 8
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
ARTEM713, ты что вручную перепечатывал что-ли? Скопируй все и сохрани все. Я сам лично только что скопировал код и сохранил его. Все работает.
Покрайней мере в среде Turbo Pascal 7.0. За другие среды мы не отвечаем.
 
SeqularДата: Среда, 05.12.2007, 14:20 | Сообщение # 9
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
ARTEM713, Подтверждаю. Программа работает. Никаких ошибок не возникает

Поддерживаю также проект сообщество молодых сисадминов
 
ARTEM713Дата: Пятница, 21.12.2007, 04:03 | Сообщение # 10
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 0
Замечания: 20%
Статус: Offline
а возможно ее проще сделать??напишите как
 
SeqularДата: Пятница, 21.12.2007, 06:55 | Сообщение # 11
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Quote (ARTEM713)
а возможно ее проще сделать??

Возможно

Quote (ARTEM713)
напишите как

Убрать часть ненужного кода


Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Пятница, 21.12.2007, 09:06 | Сообщение # 12
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Эм... Какого такого не нужного? Собсна там ниче лишнего нет. Тока условия на склонения русских слов! Разве код в 2 кб это сложно?
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;