Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Деление «длинного» числа на «короткое» нацело с остатком





Решение этой задачи мало отличается от предыдущей, поэтому дадим лишь некоторые пояснения к приведенным ниже программам.

Так как делить на этот раз мы будем «длинное» число, входные данные удобнее представлять в файле. Входным файлом в данной задаче является файл input.txt, а выходным — output.txt.

Делимое при вводе из файла в подпрограмме ReadData запоминается в массиве а (в первом элементе старшая цифра), делитель — в целой переменной b, а целую часть результата будем получать в массиве с (в первом элементе также находится старшая цифра).

Нулевые элементы массивов a и с содержат значения текущей длины этих массивов (а[0]— заполняется при считывании делимого из файла, а с[0] — при получении целой части результата). Так как делитель у нас является числом «коротким», а остаток от деления всегда меньше делителя, то для его получения массив не нужен.

 

Туре

Abyte=array[0..32000] of byte;

Var

а,с: AByte;

b,p: longint;

Procedure ReadData;

var

ch:char;

begin

Assign(input,'input.txt');

Reset(input);

a[0]:= 0; {длина числа А}

c[0]:= 0; {длина числа С}

while not SeekEoln do {пока не достигнут конец строки}

begin

read(ch);

inc (a[0]); {перевод символа в цифру}

а[а[0]]:=ord(ch)-ord('0')

end;

readln;

read(b);

Close(input)

end;

Procedure Count;

var

ptr: word;

begin

p:=0;

ptr:=1;

while (p<b) and (ptr<=a[0]> do

begin

p:=p*10+a[ptr];

inc(ptr)

end;

inc(c[0]); {с[0] — длина целой части частного}

с[с[0]]:= р div b; {определили первую цифру частного}

р:= р mod b;

while ptr<=a[0] do

{определяем остальные цифры частного}

begin

р:=p*10+а[ptr];

inc(ptr);

inc(c[0]);

c[c[0]]:= p div b;

p:= p mod b

end

end;

Procedure WriteResult;

var

i: word;

begin

assign(Output,'Output.txt');

rewrite(Output);

for i:=l to c[0] do write (с[i]); {печатаем целую часть частного от деления}

writeln;

writeln(p); {печатаем остаток от деления}

end;

{Основная программа}

Begin

ReadData;

Count;

WriteResult

End.

 

Date: 2015-05-08; view: 572; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию