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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 09:32   #1
pha
 
Регистрация: 05.05.2009
Сообщений: 3
Восклицание частное от деления

Плз. Pascal. Вводится число, содержащее целую и дробную часть. Вывести частное от деления целой части на предпоследнюю цифру дробной части, если она не ноль. В противном случае вывести слово БЕСКОНЕЧНОСТЬ.
pha вне форума Ответить с цитированием
Старый 05.05.2009, 14:48   #2
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Код:
program f;
uses crt;
var chislo:string;
    a,b,c:integer;

    function proverka (s:string):boolean;
    var i:integer;
        priznak:boolean;
        mn_vo:set of char;
    begin
    mn_vo:=['0'..'9','.','-'];
    i:=0;
    repeat
    i:=i+1;
    priznak:=s[i] in mn_vo;
    until (not priznak) or (i>=length(s));
    if (priznak) and (pos('.',s)<>0) then priznak:=(pos('.',s)<length(s)-1) and (pos('.',s)<>1);
    if (priznak) and (pos('-',s)<>0) then priznak:=pos('-',s)=1;
    proverka:=priznak;
    end;

    function strtoint (s:string):integer;
    var k,i:integer;
    begin
    k:=0;
    for i:=1 to length(s) do
        case s[i] of '0':k:=k*10;
                     '1':k:=k*10+1;
                     '2':k:=k*10+2;
                     '3':k:=k*10+3;
                     '4':k:=k*10+4;
                     '5':k:=k*10+5;
                     '6':k:=k*10+6;
                     '7':k:=k*10+7;
                     '8':k:=k*10+8;
                     '9':k:=k*10+9;
        end;
    if s[1]='-' then k:=-k;
    strtoint:=k;
    end;

begin
clrscr;
repeat
 writeln ('Vvedite chislo');
 readln (chislo);
until (proverka(chislo));
if pos('.',chislo)=0 then writeln ('chislo celoe')
                     else begin
                          b:=strtoint(chislo[length(chislo)-1]);
                          if b=0 then writeln ('Otvet: beskonechnost')
                                 else begin
                                      a:=strtoint(copy(chislo,1,pos('.',chislo)));
                                      c:=a div b;
                                      writeln ('Otvet: ',c);
                                      end;
                          end;
readkey;
end.
В переменную chislo будет вводиться число (как строка) с клавиатуры.
В переменную а будет записана целая часть числа.
В переменную b будет записана предпоследняя цифра числа.
В переменную c будет записано частное от деления целой части на предпоследнюю цифру дробной части.
Функция proverka проверяет является ли строка числом, а также, чтобы предпоследний символ не был точкой.
Функция strtoint переводит строку в целое число.
В программе сначала вводится строка chislo до тех пор, пока не будет введено число. Потом идет проверка: целое число или нет? Если не целое, то в b записывается предпоследняя цифра. Затем, если b=0, то выводится ответ бесконечность, а если b<>0, то в a записывается целая часть числа, и в c записывается частное от деления a на b, и выводится ответ.
Сергей089 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
остатки от деления на паскале semennn Помощь студентам 1 01.04.2009 05:32
Получить остаток от деления Cpluser Общие вопросы C/C++ 18 26.02.2009 18:05
остаток от деления % Division Общие вопросы C/C++ 5 25.12.2008 14:08
Массивы, частное, остаток(исправить) Alter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.05.2008 23:37