Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические работы для ИС-271.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
3.07 Mб
Скачать

Лабораторная работа № 11. Разработка программ, включающих алгоритмы работы с числом

Цель работы:

  • научиться использовать арифметические операции div, mod при работе с числом

  • закрепить теоретические знания о приоритете выполнения арифметических операций

  • закрепить практические навыки по составлению тестов

Оборудование:

  • программная часть – интегрированная среда Turbo Pascal 7.0

  • аппаратная часть - ПЭВМ IBM PC/XT

  • задание на выполнение работы в электронном варианте

Теоретическая часть

Арифметические операции в Паскале напоминают привычные алгебраические или тригонометрические формулы. Отличие в том, что дроби записываются в одну строку и используется необычное обозначение операций умножения (*) и деления ( /, div ).

При записи формул (выражений) в программе следует учитывать такую особенность: компьютер будет в первую очередь выполнять вычисления в скобках, затем операции умножения и деления, и в последнюю очередь- сложение и вычитание:

1. ( )

2. *, /

3. +, -

Арифметические операции в Паскале представлены следующим образом:

Операции с дробными числами (обычные, как в математике).

- вычитание; + сложение; * умножение; / деление.

Операции с целыми числами.

- вычитание; + сложение; * умножение;

Деление представлено двумя операциями:

div - целая часть от деления, mod - остаток.

23 div 3 = 7 23 mod 3 = 2

9 div 4 = 2 9 mod 4 = 1

35 div 10 = 3 35 mod 10 = 5

Следует пояснить смысл присутствия в Паскале нескольких видов операции деления. При использовании операции вещественного деления (/) результатом будет вещественное число (имеющее целую и дробную части). Такое число можно записать только в переменную вещественного типа (типа REAL, способную хранить 6 байт). Попытка записать результат вещественного деления в переменную целого типа (типа INTEGER) будет ошибочной, так как под переменную такого типа в памяти отводится 2 байта, что недостаточно для размещения 6-ти байт вещественного числа. Следует подчеркнуть, что при использовании вещественного деления результатом будет вещественное число даже в том случае, если операндами являются целые числа, например: 4/2 получим 2.0 (в числе "2.0" присутствует дробная часть). Для того, чтобы результатом деления целых чисел было целое число (способное поместиться в переменную типа INTEGER), следует использовать операцию деления "DIV".

Целочисленное деление (div) отличается от обычной операции деления тем, что возвращает целую часть частного, а дробную часть отбрасывает; перед выполнением операции оба операнда округляются до целых значений. Если делимое меньше делителя, то результат целочисленного деления всегда равен нулю:

5 div 2 получим 2

11 div 5 получим 2

2 div 3 получим 0

Приоритет арифметических операций:

  • умножение и деление ( /, div, mod).

  • сложение и вычитание.

Порядок выполнения действий - слева направо. В выражениях могут быть скобки, при этом вначале производятся вычисления в скобках.

Операции с равным приоритетом (+ , - ), (*, /) выполняются слева направо в том порядке, как записаны в выражении. Если у программиста нет уверенности в том, что вычисления будут выполняться в нужном порядке, то лучше расставить лишние скобки, помня о том, что вычисления в скобках выполняются в первую очередь. Например, в выражении А+В*С/D-Е, согласно правилам языка Паскаль, сначала будет выполнено B*C, затем результат делится на D, и только после этого наступит очередь сложения и вычитания:

Если сложение и вычитание требуется выполнить в первую очередь, то следует соответствующим образом расставить скобки: (A+B)*C/(D-E), что в форме алгебраической записи будет выглядеть так:

Взаимосвязь между операциями div и mod проста. Для а>0 и b>0 справедливо:

A mod b = a – (a div b)*b

(a div b)*b + (a mod b) = a

Практическая часть

Пример 1. Дано натуральное число, определить сумму всех цифр в цифровой записи данного числа.

var

n,s:longint;

begin

writeln('Введите число: ');

readln(n);

while n>0 do

begin

s:=s+n mod 10;

n:=n div 10;

end;

writeln('Сумма цифр: ',s);

readln;

end.

Пример 2. Дано натуральное число N. Получить новое число путем удаления всех нулевых цифр из цифровой записи числа. Пример N=1001. Ответ: 11.

Вариант 1.

var

n,k:longint;

s:integer;

begin

writeln('Введите число');

readln(n);

s:=-1;

while n>0 do

begin

   if n mod 10<>0 then

begin

      inc(s);

k:=k+(n mod 10*trunc(exp(ln(10)*s)));

end;

n:=n div 10;

end;

writeln('Результат: ',k);

readln;

end.

Вариант 2.

var

n:longint;

s,rs:string;

    i:byte;

begin

writeln('Введите число');

readln(n);

str(n,s);

for i:=1 to length(s) do

if s[i]<>'0' then rs:=rs+s[i];

writeln('Результат: ',rs);

readln;

end.

Пример 3. Найти удвоенное произведение цифр числа, вводимого с клавиатуры. Например,

ch = 1234, P * 2 = 48.

program cif;

uses crt;

var

c, ch, P: integer;

begin

clrscr;

P:=1;

write('ch='); readln(ch) ;

while ch< >0 do

begin

c:=ch mod 10;

ch:=ch div 10 ;

P:=p*c;

end;

write('P*2=',p*2);

end.

Задания для самостоятельного выполнения

  1. Повторить теоретические сведения из соответствующего раздела данной работы.

  2. Разработать программу в среде Turbo Pascal 7.0.

  3. Составить систему тестов и проверить работу программы на всех возможных значениях исходных данных.

  4. Ответить на контрольные вопросы.

  5. Результаты выполнения лабораторной работы оформить в виде отчета.

Индивидуальные задания:

Вариант 1. Вычислите сумму старших (первых) цифр всех чисел от 1 до 99.

Вариант 2. Найти общую сумму цифр всех двузначных чисел.

Вариант 3. Вычислите, чему равно P - S, где P - произведение , S - сумма цифр числа, вводимого с клавиатуры.

Вариант 4. Найти двузначное число, равное сумме квадрата числа его единиц и куба числа его десятков.

Вариант 5. Найти удвоенную сумму цифр случайного числа из интервала [555; 999].

Вариант 6. Вывести на экран все двухзначные числа, у которых первая цифра кратна 3, а вторая 2.

Вариант 7. Дано трехзначное число. Определить количество всех различных трехзначных чисел, которые можно составить из цифр этого числа.

Вариант 8. Вывести на экран все четырёхзначные числа , у которых сумма первых двух цифр меньше сумме двух последних цифр.

Вариант 9. В заданном с клавиатуры интервале найти все числа, кратные 12 и вычислить их сумму.

Вариант 10. Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N.

Вариант 11. Даны три числа. Подсчитать количество четных цифр в них.

Вариант 12. Среди двузначных натуральных четных чисел найти все числа, кратные 8.

Вариант 13. Найти все натуральные трехзначные нечетные числа, кратные 135 и записать их "обратном" порядке.

Вариант 14. Найти разность между трехзначным числом и числом, составленным из тех же цифр, но взятых в обратном порядке.

Вариант 15. Из заданного числа вычли сумму его цифр. Из результата вновь вычли сумму его цифр и т.д. Через сколько таких действий получится ноль?

Вариант 16. Вывести на экран все четырёхзначные числа, у которых первая цифра кратна 4, вторая цифра не кратна 4 а четвёртая цифра заканчивается на 4.

Вариант 17. Дано натуральное n-значное число. Верно ли, что сумма его цифр больше 10?

Вариант 18. Вывести на экран все четырёхзначные числа, у которых первая цифра равна третей, а вторая цифра неравна четвёртой.

Вариант 19. Вывести на экран все трёхзначные числа, у которых первая цифра кратна 4, а третья заканчивается на 1.

Вариант 20. Дано трехзначное число N. Проверить, будет ли сумма его цифр четным числом.

Вариант 21. Определить , является ли целое число N четным двузначным числом.

Вариант 22. Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа.

Вариант 23. Составить программу вывода самой большой цифры в записи заданного числа.

Вариант 24. Даны три числа. Определить количество чисел, у которых последняя цифра больше по значению первой.

Вариант 25. Даны два числа. Вывести на экран упорядоченную по возрастанию последовательность всех цифр, из которых состоят эти числа.

Контрольные вопросы

  1. В каких случаях используются операции div, mod?

  2. Как выделить первую цифру трехзначного числа?

  3. Как выделить первую цифру n-значного числа?

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

  5. Какой результат выполнения операции mod получится, если делитель больше делимого?

  6. Чем целочисленное деление отличается от обычной операции деления?

  7. Есть ли различие в результатах выполнения следующих операций: 17 mod - 5 и -17 mod 5?

  8. Какую операцию следует использовать, чтобы узнать, кратно ли целое а целому b?

  9. Какой тип должен быть у аргументов операций div и mod?