Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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.
|