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

Пример 6

Если четырехзначное число, введенное с клавиатуры, является симметричным (например, 1331, 0550), то вывести 1, в противном случае – любое другое число.

Примечание: в переменных a, b, c, d находятся цифры введенного числа, начиная со старшей (разряд тысяч).

Program Example_6;

Var m,a,b,c,d,a1,b1,c1,v,n:integer;

begin

writeln('Введите четырехзначное число:');

readln (m);

a:= m div 1000; {первая цифра}

b:=m mod 1000 div 100;

c:=m mod 100 div 10;

d:=m mod 10; {последняя цифра}

n:=1000*d+100*c+10*b+a;

{переставляем цифры в обратном порядке}

v:=m-n+1;

writeln('Ответ:',v);

readln;

end.

Пример 7

Ввести с клавиатуры 4 целых числа m, n, k, p>0. Если остаток от деления m на n равен k или p, то вывести 1, в противном случае – любое другое число.

Program Example_7;

Var m, n, k, p, a, b, c: integer;

begin

write('Введите 4 целых числа:');

readln(m, n, k, p);

a:=1 div (1+abs(n));

b:=m mod (n+a);

{исключаем деление на ноль}

c:=(b-p)*(b-k)+a+1;

writeln('Ответ:',c);

readln;

end.

Пример 8

Часовая стрелка образует угол α с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате, 0≤α<3600. Ввести с клавиатуры значение α и определить значения угла для минутной стрелки, а также количество часов и полных минут.

Примечание: решение задачи основано на использовании следующих фактов: на 3600/12=300 поворачивается часовая стрелка, передвигаясь между двумя соседними цифрами. За это время минутная стрелка проходит целый круг, т.е. 60 минут. Таким образом, пока часовая стрелка поворачивается на 10, минутная проходит 2 минутных деления. Одно же минутное деление соответствует 3600/60=60.

Program Example_8;

Var ha, h, ma, m: integer;

begin

write('Введите угол:');

readln(ha);

h:=(ha div 30);

m:=(ha mod 30)*2;

ma:=m*6;

writeln('количество часов= ',h);

writeln('количество минут= ',m);

writeln('угол минутной стрелки= ',ma);

readln;

end.

Примечание. Переменной целого типа присваивать зна­чение, получаемое в результате выполнения обычной операции деления "/", нельзя, так как при делении одного целого числа на другое целое число результат не всегда является целым числом.

§9. Вещественный тип данных

В Паскале имеется несколько типов вещественных данных.

Вещественные типы

Тип

Диапазон возможных значений

Точность

Формат

Real

2.9E-39..1.7E38

11-12з.

6 байт

Single

1.5E-45..3.4E38

7-8з.

4 байта

Double

5.0E-324..1.7E308

15-16з.

8 байт

Extended

3.4E-4932..1.1E4932

19-20з.

10байт

Comp

-9.2E18..9.2E18

19-20з.

8 байт

Константа действительного типа может быть представлена в двух видах: числом с фиксированной и плавающей точкой.

Число с фиксированной точкой изображается десятичным числом с дробной частью (дробная часть может быть нулевой). Дробная часть отделяется от целой с помощью точки, например: 127.3, 25.0, -16.003, 200.59, 0.54.

Число с плавающей точкой имеет вид mЕр, где m − мантисса, а р − порядок числа. В качестве m могут быть целые числа и действительные числа с фиксированной точкой, в качестве р − только целые числа. Как мантисса, так и порядок могут содержать знаки "+" и "−".

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

Abs(x) абсолютное значение х

Sqr(х) квадрат х

Sqrt(x) квадратный корень из х

Sin(х) синус х

Cos(х) косинус х

Arctan(х) арктангенс х

Ехр(х) еx

Ln(х) натуральный логарифм х

Trunc(х) целая часть х

Round(х) ближайшее к х целое число

Примечание. В тригонометрических функциях синус и косинус аргумент задается только в радианах.

Выводить данные вещественного типа можно по формату и без него. Если при выводе данных вещественного типа не указан формат, то число выводится с плавающей точкой − мантисса и порядок. На число отводится 17 позиций, при этом в целой части мантиссы присутствует только одна значащая цифра. Изменить стандартную форму вывода можно, используя формат Write(x: m: n), где х − выводимое данное вещественного типа; m − общее количество позиций для вывода числа (включая знак числа, целую часть, точку и дробную часть); n − количество позиций для вывода дробной части. В качестве типа могут быть целые константы, переменные, выражения. Так, использование формата Write(r: 8: 4) для вывода значения r, равного -35,245367, приводит к выводу значения -35.2454.

Пример 1

Даны первый член, разность и число членов арифметической прогрессии. Написать программу вычисления суммы ее членов.

Program Example_9;

Var a1, d, n: integer;

s: real;

Begin

writeln('Введите первый член, разность и

число членов арифм. прогрессии');

readln(a1, d, n);

s:=(2*a1+d*(n-1))*n/2;

writeln('Сумма членов арифметической

прогрессии=', s);

end.

Пример 2

Написать программу вычисления площади треугольника по трем сторонам, пользуясь формулой Герона.

Program Example_10;

Var a, b, c, p, s: real;

begin

Writeln('Введите длины сторон

треугольника');

readln(a, b, c);

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

Writeln('Площадь треугольника=',s);

end.

Пример 3

Написать программу нахождения среднего арифметического и среднего геометрического двух чисел.

Program Example_11;

Var a, b, sa, sq: real;

begin

Writeln('Введите два числа');

readln(a,b);

sa:=(a+b)/2;

sq:=sqrt(a*b);

writeln('среднее арифметич.=',sa,'среднее геометрическое=', sq);

end.

Пример 4

Написать программу нахождения площади и гипотенузы прямоугольного треугольника по двум катетам.

Program Example_12;

Var a, b, s, g: real;

begin

Writeln('Введите длины двух катетов');

readln(a,b);

s:=a*b/2;

g:= sqrt(a*a+b*b);

Writeln('площадь=', s,' гипотенуза= ',g);

end.

Пример 5

Написать программу вычисления длин медиан треугольника, заданного длинами сторон.

Program Example_13;

Var a, b, c, m1, m2, m3: real;

begin

Writeln('Введите длины сторон

треугольника');

readln(a, b, c);

m1:=aqrt(2*a*a+2*b*b-c*c)/2;

m2:=sqrt(2*a*a+2*c*c-b*b)/2;

m3:=sqrt(2*b*b+2*c*c-a*a)/2;

Writeln('медианы равны ', m1,

' ', m2,' ', m3);

end.

Пример 6

Смешали V1 литров воды, имеющей температуру Т1 градусов по Цельсию, с V2 литрами воды, имеющей температуру Т2 градусов по Цельсию. Написать программу вычисления температуры и объема полученной смеси.

Program Example_14;

Var v1, t1, v2, t2, v, t: real;

begin

Writeln('Введите значения v1,t1,v2,t2');

readln(v1, t1, v2, t2);

v:=v1+v2;

t:=(v1*t1+v2*t2)/(v1+v2);

Writeln('Объем смеси = ', v,'Температура смеси= ', t);

end.