Как найти остаток числа pascal

Автор: Виктор Трофимов, МОУ гимназия №5, г. Волгодонск, Ростовская обл.

В Паскале существует возможность использования трех методов определения кратности числа.

1. С помощью оператора div (целоисчисленное деление). Как это работает?

x := 10 div 2 (переменная x получит значение 5; процессор вычисляет пример 10 / 2 и выдает результат 5)

x := 10 div 3 (переменная x получит значение 3; вычисляется 10 / 3 = 3,33 и отбрасывается дробная часть, такова природа работы оператора div)

x := 10 div 4 (переменная x получит значение 2; 10 / 4 = 2,5 – и опять отбрасывается дробная часть).

2. С помощью оператора mod (остаток от деления).

Тут и понятно, остаток от деления числа, которое полностью делится на делитель, будет равен нулю.

x := 10 mod 2 (переменная x получит значение 0; процессор вычисляет по формуле 10 – ((10 div 2) * 2) = 0, то есть оператор mod возвращает пользователю остаток, который получится в результаты вычитания из делимого числа разницы между первым в сторону уменьшения делящимся нацело на делитель… эмм, надеюсь, понятно. Еще на примерах:

x := 10 mod 3 (переменная x получит значение 1; происходит следующее 10 div 3 = 3 (целое), дальше 10 – 3 (результат) * 3 (делитель) = 1)

x := 10 mod 4 (переменная x получит значение 2; вычисляется 10 – ((10 div 4) * 4)).

Внимательно изучите работу операторов div и mod, они важны для решения задач ГИА по информатике.

3. С помощью функции отбрасывания дробной части числа (не округления, а именно отбрасывания).

trunc(z), где z – вещественное число или математическое выражение.

Примеры:

x := trunc(3.33) (x получит значение 3; «удаляется» дробная часть)

x := trunc(10 / 3) (x получит значение 3, 10 / 3 = 3.33, отбрасываем «,33»)

x := trunc(10 / 2) (x получит значение 5, 10 / 2 = 5 (целое число))

x := trunc(10 / 4) (x получит значение 2, 10 / 4 = 2.5, отбрасываем дробную часть)

Но этот метод не совсем удобен, так как дублирует более понятный в тексте программы div. Таким же образом можно проверить кратность чисел:

Если ((x mod 3) = 0), то число кратно трем (остаток от деления равен нулю).

Если ((x mod 8) = 0), то число кратно восьми и т.д.

Как найти цифру, на которую оканчивается число? Все просто, надо найти остаток от деления числа на 10.

Примеры:

Результатом 150 mod 10 будет число 0, т.к. 150 полностью делится на 10. 0 – это последняя цифра числа.

153 mod 10 вернет 3 (153 – ((153 div 10) * 10); 3 – эта цифра, на которую оканчивается число.

87 mod 10 вернет 7 – последнюю цифру числа.

33 mod 10 вернет 3 и т.д. Попробуйте сами: writeln(33 mod 10);

Автор:

Блок-схема

Так как в воскресенье на сайте открывается новая рубрика — решение задач,  мы с вами должны по-быстрому изучить основную часть математических операций, функций и процедур.

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

Процедуры — мини-программы.

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

20131220-004613.jpg

Например, программист хочет в своем суперкоде между блоками выходящих значений прописывать 20 амперсандов. Чтобы облегчить себе задачу, он напишет простую подпрограмму.

program superpuper;
var очень много буковок; 
procedure ampersand; 
begin 
write('&&&&&&&&&&&&&&&&&&&&'); 
end;
begin 
суперсложный код;
ampersand; 
суперсложный код;
ampersand; 
суперсложный код; 
ampersand; 
суперсложный код; 
ampersand; 
end.

Функции в Паскале — мега переменные.

Функции отличается от процедуры тем, что после выполнения функции на ее месте в коде ставится одно число, буква, строка и т.д. Набор встроенных функций в языке Паскаль достаточно широк. Например, для того, чтобы подсчитать квадрат числа можно воспользоваться стандартной функцией sqr(x). Как вы, наверное, уже поняли sqr(x) требует лишь один фактический параметр — число.

Пример: a:=sqr(4).

Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьетесь!

Структура функции представлена на картинке ниже.

20131220-004554.jpg

Если в программу необходимо включить новую уникальную функцию, ее надо описать также, как процедуру. Более подробно о том, как делать собственные процедуры и функции, мы поговорим через 10 уроков. Ниже вы видите таблицу основных стандартных функций и процедур в Паскаль.

Математические функции

Имя Тип аргумента Результат вычисления Пример
Abs(x) Целый или Вещ. Модуль   х Abs(-6) = 6
Sqrt(x) Вещественный Корень из х Sqrt(25)=5
Sqr(x) Целый и Вещ. Квадрат х Sqr(5)=25
Power(x, a) Вещественный Значение ха Power(5,3)=125
Frac(x) Вещественный Дробная часть х Frac(5.67)=0.67
Sin(x) Вещественный Синус х Sin(45)=0.8509
Cos(x) Вещественный Косинус х Cos(45)=0.5253
Arctan(x) Вещественный Арктангенс х Arctan(5)=1.3734
Int(x) Вещественный Целая часть х Int(5.67)=5.0
Random(x) Целый Случайное число (0..х-1) Random(5)=4
Succ(x) Порядковый Следующий Succ(10)=11
Pred(x) Порядковый Предыдущий Pred(‘Z’)=’Y’

Математические процедуры

Inc(x, a) Целый X:=X+A Inc(5)=6
Dec(x, a) Целый X:=X-A Dec(25,20)=5

Преобразование типов

Trunc(x) Вещественный Целая часть х Trunc(5.67)=5
Round(x) Вещественный Округление х до целого Round(5.67)=6
Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!?

Очень странная ошибка.

Очень странная ошибка.

Иногда нам требуется найти частное либо же остаток от деления. В такие моменты на помощь нам приходят такие операции, как div и mod. Заметим, что эти операции выполняются только над целыми числами.

Div

Для того, чтобы найти частное от деления, мы используем операцию div.

   Примеры:

  • 25 div 20 = 1;
  • 20 div 25 = 0;
  • 39 div 5 = 7;
  • 158 div 3 = 52.

Mod

Для того, чтобы найти остаток от деления, мы используем операцию mod.

    Примеры:

  • 25 mod 20 = 5;
  • 20 mod 25 = 0;
  • 39 mod 5 = 4;
  • 158 mod 3 = 2.

Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:

Задача 1. Найти сумму цифр двухзначного числа.

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

Блок-схема

Блок-схема
program Sumoftwo;
var Number, Num1, Num2, Sum: integer;
begin
write('Введите двухзначное число: ');
read(Number);  { Возьмем число 25 }
Num1 := Number div 10; { 25 div 10 = 2 }
Num2 := Number mod 10; { 25 mod 10 = 5 }
Sum := Num1 + Num2; { 2 + 5 = 7 }
write('Сумма двух чисел -- ', Sum);
end.

Задача 2. Найти сумму цифр трехзначного числа.

Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.

Блок-схема

Приоритет div и mod больше, чем приоритете + и -. Поэтому в данной программе можно обойтись без скобок.
program Sumoftree;
var Number, Sum: integer;
begin
write('Введите трехзначное число: ');
read(Number);  { Возьмем число 255 }
Sum := Number div 100 + Number mod 10 + Number div 10 mod 10; { 255 div 100 + 255 mod 10 + 255 div 10 mod 10 = 12 }
write('Сумма трёх чисел -- ', Sum);
end.

Вот и всё. На следующем уроке мы с вами начнём изучать особенности PascalABC.Net.

mcbeat

0 / 0 / 1

Регистрация: 07.02.2011

Сообщений: 30

1

Нужно взять остаток от деления

07.02.2011, 18:07. Показов 6777. Ответов 13

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Там нужно взять корень от число и проверить остаток от деления)))

Не могу понять

Pascal
1
2
3
4
5
var x:real;z:boolean;
      begin
      x:=sqrt(K);
      if x mod 1 = 0 then z:=true
else z:=false;



0



1337 / 988 / 119

Регистрация: 30.07.2010

Сообщений: 5,297

07.02.2011, 18:11

2

как вы собираетесь получать остаток от целочисленного деления действительного числа? что нужно-то? может просто дробная часть числа? тогда просто frac



0



7 / 7 / 1

Регистрация: 03.12.2010

Сообщений: 45

07.02.2011, 18:13

3

непонятно напишы целую програму что она должна делать или задание…



0



mcbeat

0 / 0 / 1

Регистрация: 07.02.2011

Сообщений: 30

07.02.2011, 18:22

 [ТС]

4

Описать функцию IsSquare(K) логического типа, которая возвращает True,
если целый параметр K (> 0) является квадратом любого целого числа,
и False в противном случае. С ее помощью найти кол-во
квадратов в наборе из 10 целых позитивных чисел.

Добавлено через 3 минуты

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program  n7_2 ;
 var A: integer; i,n: byte;
 function IsSquare(K:integer):Boolean;
   var x:real;z:boolean;
      begin
      x:=sqrt(K);
      if x mod 1 = 0 then z:=true
else z:=false;
IsSquare:=z;
      end;
 begin   { главная программа}
     begin
 Writeln('Введите A ');
      Begin
         Write('A= ');read(A);
         IsSquare(A);
      end;
    end;
end.


Не обращайте внимания на главную программу, я ее еще не дописал))))

Добавлено через 50 секунд
Там еще цыкл должен быть



0



iama

1337 / 988 / 119

Регистрация: 30.07.2010

Сообщений: 5,297

07.02.2011, 18:24

5

Pascal
1
2
3
4
function IsSquare (k: integer): boolean;
begin
IsSquare := frac(sqrt(k)) = 0;
end;

кстати, забавно, сравнение целочисленной константы с действительным числом без ипсилона прокатывает.



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

07.02.2011, 18:46

6

Цитата
Сообщение от mcbeat
Посмотреть сообщение

и проверить остаток от деления)

Наверное не остаток от несуществующего деления, а целое число или нет. Я тебе в той теме написал, если не соображаешь, то и не плоди темы, уйдешь отдыхать досрочно…



1



0 / 0 / 1

Регистрация: 07.02.2011

Сообщений: 30

07.02.2011, 20:10

 [ТС]

7

Цитата
Сообщение от Puporev
Посмотреть сообщение

Я тебе в той теме написал, если не соображаешь, то и не плоди темы, уйдешь отдыхать досрочно…

Я не пойму, о чем ты??? Ты наверное меня с кем то путаешь, я только первый день на этом форуме, и при чем тут «не плоди темы»?



0



mcbeat

0 / 0 / 1

Регистрация: 07.02.2011

Сообщений: 30

07.02.2011, 21:15

 [ТС]

9

Точно)) Я и забыл) Сори

Добавлено через 24 минуты
Еще один вопрос)) А как мне теперь подсчитать кол-во существуюших квадратов????

Добавлено через 11 минут
Я написал так, но не знаю как зделать счетчик)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program  n7_2 ;
         var A: integer; i,n: byte;
             function IsSquare(K:integer):Boolean;
                      var x:real;z:boolean;
                          begin
                           if frac(sqrt(k)) = 0 then z:=true
                           else z:=false;
                           writeln(z);
                          end;
begin
       n:=0;
       for i:=1 to 10 do
           begin
            Write('Введите A',i,'= ');readln(A);
            IsSquare(A);
           end;
end.



0



Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

08.02.2011, 08:48

10

Pascal
1
2
3
4
5
6
7
n:=0;
for i:=1 to 10 do
  begin
    Write('Введите A',i,'= ');
    readln(A);
    if IsSquare(A) then inc(n);//считаем
  end;



1



mcbeat

0 / 0 / 1

Регистрация: 07.02.2011

Сообщений: 30

08.02.2011, 09:07

 [ТС]

11

Цитата
Сообщение от Puporev
Посмотреть сообщение

Pascal
1
2
3
4
5
6
7
n:=0;
for i:=1 to 10 do
  begin
    Write('Введите A',i,'= ');
    readln(A);
    if IsSquare(A) then inc(n);//считаем
  end;

Там в задаче нужно посчитать cколько ответов True.

Добавлено через 5 минут
Puporev, Помоги плз



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

08.02.2011, 09:14

12

А я что написал?

Добавлено через 1 минуту

Цитата
Сообщение от mcbeat
Посмотреть сообщение

if IsSquare(A) then

Это и есть, если true, то считаем.
Хоть что-то пытайтесь учить, а не тупо с Божьей помощью писать наборы нерусских букв…



0



0 / 0 / 1

Регистрация: 07.02.2011

Сообщений: 30

08.02.2011, 09:17

 [ТС]

13

СПАСИБО БОЛЬШОЕ)))



0



Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

08.02.2011, 09:21

14

Вот код

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
function IsSquare(K:integer):Boolean;
var x:real;z:boolean;
 begin
  x:=sqrt(K);
  if frac(x)= 0 then z:=true  else z:=false;
  IsSquare:=z;
 end;
var a,n,i:integer;
begin
n:=0;
for i:=1 to 10 do
  begin
    Write('Введите A',i,'= ');
    readln(A);
    if IsSquare(A) then inc(n);//считаем
  end;
write('Количество полных квадратов=',n);
end.

Вот результат
И давай, или включай мозг(при наличии оного), или не трепли нервы и тренируй строевой шаг.

Миниатюры

Нужно взять остаток от деления
 



1



В Паскале можно выполнять стандартные математические операции. Обычно для таких операций применяется целочисленный тип данных – integer. Только при выполнении операции деления ((/)) в результате может получиться вещественное число – real.

Для получения целой части частного в результате деления используется операция div. Дробная часть не выводится, например (14 ) (div ) (3 ) (= ) (4).

Для того, чтобы получить в результате деления остаток, используется операция mod.
Например, (14 ) (mod ) (3 ) (= ) (2).

Попробуем написать программу на языке программирования Паскаль, которая вычислит сумму цифр трёхзначного числа.

Будем использовать операции div и mod.

Пусть введённое число с клавиатуры – (x).
Получим первую цифру числа: (x ) (div ) (100).
Вторую цифру: (x ) (mod) (100 ) (div ) (10).
Третью цифру: (x ) (mod) (10).

Например, с клавиатуры ввели число (238).

(238 ) (div ) (100 ) (= ) (2)
(238 ) (mod ) (100 ) (div ) (10 ) (= ) (3)
(238 ) (mod ) (10 ) (= ) (8)

После нужно будет сложить полученные результаты и вывести ответ на экран.

Screenshot_22.png

Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».

program number7;
uses crt;
var A,B,C: integer;
begin
clrscr;
A:=17;
B:=3;
C:=A div B;
writeln ('17 div 3 = ',C);
C:=A mod B;
writeln ('17 mod 3 = ',C);
C:=A-B;
writeln ('17-3 =',C);
readln
end.

В строке №8 используется операция Div. Это операция деления нацело, т. е. в результате получится целое число без остатка. Если 17 разделить на 3, то получится 5,66666… Здесь — целое число 5, оно и будет результатом операции div.
Строка №10. Операция Mod вычисляет остаток от целочисленного деления. Если мы разделим 17 на 3, то получится 5 – целое число и 2 – остаток. Таким образом, результатом операции Mod будет число 2
Теперь запишем нашу программу в Паскале и и запустим ее.

div mod

div mod.



Дополнение к материалу.

Правила приоритета при выполнении операций в Паскале.

  • Сначала выполняются действия над переменными, которые стоят в скобках.
  • Затем вычисляются функции.
  • Затем умножение и деление.
  • Затем сложение и вычитание.

Операции, которые имеют одинаковый приоритет (сложение и вычитание, деление и умножение) выполняются слева направо, т.е. в порядке очереди.

Понравилась статья? Поделить с друзьями:
  • Как воспользоваться функцией найти айфон
  • Дизайнер как найти поставщика
  • Как найти кабель ethernet
  • Как исправить округлые плечи
  • Как найти координаты точки пересечения прямых алгебра