Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТPascal Сборник конспектов.doc
Скачиваний:
24
Добавлен:
10.11.2018
Размер:
924.67 Кб
Скачать

10. Решение задач на ветвления.

1. Квадратное уравнение.

Даны коэффициенты квадратного уравнения (ax2+bx+c=0). Найти решения.

Предположим, что коэффициент a<>0, тогда следует поступить так:

Program Kvur;

Var a,b,c,d,x,x1,x2:Real;

Begin

Write(‘a b c=’);ReadLn(a,b,c);

d:=Sqr(b)-4*a*c;

If d>0 Then Begin

x1:=(-b-sqrt(d))/(2*a);

x2:=(-b+sqrt(d))/(2*a);

WriteLn(‘x1=’,x1:8:4);

WriteLn(‘x2=’,x2:8:4);

End;

If d=0 Then Begin

x:=-b/(2*a);

WriteLn(‘x=’,x:8:4);

End;

If d<0 Then WriteLn(‘Нет корней!’);

ReadLn;

End.

Объявляем все переменные

Осуществляем ввод данных

Вычисляем дискриминант d

Если d>0 То

находим х1

находим х2

выводим ответ х1

выводим ответ х2

Если d=0 То

находим х

выводим ответ х

Если d<0 То выводим ‘Нет корней!’

Пауза

Проверка <Ctrl>+F9

a b c=1 -5 6 <Enter>

x1= 2.0000

x2= 3.0000

a b c=1 -2 1 <Enter>

x= 1.0000

a b c=1 1 1 <Enter>

Нет корней!

Для того чтобы программа работала и при равном нулю значении первого коэффициента ее нужно доработать:

Program Kvur;

Var a,b,c,d,x,x1,x2:Real;

Begin

Write(‘a b c=’);ReadLn(a,b,c);

d:=Sqr(b)-4*a*c;

If a<>0 Then Begin

If d>0 Then Begin

x1:=(-b-sqrt(d))/(2*a);

x2:=(-b+sqrt(d))/(2*a);

WriteLn(‘x1=’,x1:8:4);

WriteLn(‘x2=’,x2:8:4);

End;

If d=0 Then Begin

x:=-b/(2*a);

WriteLn(‘x=’,x:8:4);

End;

If d<0 Then WriteLn(‘Нет корней!’);

End;

If a=0 Then WriteLn(‘Это не кв. ур.!’);

ReadLn;

End.

Если a<>0 То

Решаем обычным способом

Если a=0 То

выводим ‘Это не кв.ур!’

2. Числа.

Даны три разных числа. Найти наибольшее из них.

А. Первое решение.

Program Chisla;

Var a,b,c,max: Real;

Begin

Write(‘a b c=’);ReadLn(a,b,c);

If (a>b) And (a>c) Then

max:=a

Else

If b>c Then

max:=b

Else

max:=c;

WriteLn(‘max=’,max:8:4);

ReadLn;

End.

Если a>b И a>c То

max:=a

Иначе

Если b>c То

max:=b

Иначе

max:=c

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

Б. Второе решение.

Program Chisla;

Var a,b,c,max: Real;

Begin

Write(‘a b c=’);ReadLn(a,b,c);

If (a>b) And (a>c) Then max:=a;

If (b>a) And (b>c) Then max:=b;

If (c>a) And (c>b) Then max:=c;

WriteLn(‘max=’,max:8:4);

ReadLn;

End.

Если a>b И a>c То max:=a

Если b>a И b>c То max:=b

Если c>a И c>b То max:=c

Второе решение читается намного легче. Кроме того, понятно, что делать, если чисел будет четыре или пять.

В. Третье решение.

Program Chisla;

Var a,b,c,max: Real;

Begin

Write(‘a b c=’);ReadLn(a,b,c);

max:=a;

If b>max Then max:=b;

If c>max Then max:=c;

WriteLn(‘max=’,max:8:4);

ReadLn;

End.

приравняем max:=a

Если b>max То изменим max:=b

Если c>max То изменим max:=c

Третье решение самое замечательное.

3. Числа №2.

Даны пять разных чисел. Найти наименьшее из них.

4. Числа №3.

Даны три разных числа. Найти среднее по величине. Например: 7 9 1  среднее=7.

5. Числа №4.

Даны три числа. Найти сколько среди них одинаковых.

Примеры: 1 2 3  нет 1 2 1 два 7 7 7 три

6. Точка и окружность.

Даны: окружность (xo,yo,R) и точка (x,y).

Изобразить точку и окружность разными цветами.

Определить где точка: внутри окружности, снаружи, на границе.

Математика:

Если L>R, то снаружи

Если L<R, то внутри

Если L=R, то на границе

В этой задаче нужно совместить графику и вычисления.

Program Tochka;

Uses Graph;

Var gd,gm: Integer;

xo,yo,R,x,y: LongInt;

L: Real;

Begin

gd:=Detect;InitGraph(gd,gm,’’);

Write(‘xo yo R=’);ReadLn(xo,yo,R);

Write(‘x y=’);ReadLn(x,y);

SetColor(1);Circle(xo,yo,R);

PutPixel(x,y,14);

L:=Sqrt(Sqr(xo-x)+Sqr(yo-y));

If L>R Then WriteLn(‘снаружи’);

If L=R Then WriteLn(‘на границе’);

If L<R Then WriteLn(‘внутри’);

ReadLn;

CloseGraph;

End.

Придумываем имя программе

Объявляем использование графики

Переменные для вкл. граф. Режима

Исходные данные

Вспомогательная переменная

Включаем графический режим

Вводим данные для окружности

Вводим данные для точки

Изображаем окружность

Изображаем точку

Вычисляем L

Если L>R То выводим ‘снаружи’

Если L=R То выводим ‘на границе’

Если L<R То выводим ‘внутри’

Пауза

Выключение граф. режима

Запуск <Ctrl>+F9

xo yo R=320 240 100<Enter>

x y=320 240<Enter>

внутри

xo yo R=320 240 100<Enter>

x y=420 240<Enter>

на границе

xo yo R=320 240 100<Enter>

x y=320 240<Enter>

снаружи

7. Две окружности.

Даны две окружности (x1,y1,R1) и (x2,y2,R2).

Изобразить окружности. Найти: сколько общих точек они имеют.

Математика:

(L – расстояние между центрами окружностей)

Если L>R1+R2 То ‘ноль’

Если L=R1+R2 То ‘одну’

Если L<R1+R2 И L> Abs(R1-R2) То ‘две’

Если L=Abs(R1-R2) И L<>0 То ‘одну’

Если L=0 И R1=R2 То ‘окружности совпали’

Если L<Abs(R1-R2) То ‘одну’

8. Прямоугольник и точка.

Дан прямоугольник (x1,y1,x2,y2) и точка (x,y).

Изобразить обе фигуры.

Найти где точка (внутри, снаружи или на границе).

Математика:

Если (x-x1)*(x-x2)<0 И (y-y1)*(y-y2)<0 То ‘внутри’

Если (x-x1)*(x-x2)>0 ИЛИ (y-y1)*(y-y2)>0 То ‘снаружи’

Если x=x1 И (y-y1)*(y-y2)<0 То ‘на границе’

Если x=x2 И (y-y1)*(y-y2)<0 То ‘на границе’

Если y=y1 И (x-x1)*(x-x2)<0 То ‘на границе’

Если y=y2 И (x-x1)*(x-x2)<0 То ‘на границе’

Если y=y1 И x=x1То ‘в углу’

Если y=y2 И x=x1То ‘в углу’

Если y=y1 И x=x2То ‘в углу’

Если y=y2 И x=x2То ‘в углу’

9. Возраст человека.

Дано число лет человека. Словесно охарактеризовать его возраст.

<0  ошибка ввода

0  младенец

1..3  ясли

4..6  детский сад

7..17  школьник

18..28  молодой

29..40 средний возраст

41..60 пожилой

>60  пенсионер

В этой задаче используем знак отношения in.

Program Vozrast;

Var n: Integer;

Begin

Write(‘Введите свой возраст n=’);Readln(n);

If n<0 Then WriteLn(‘Не может быть!’);

If n=0 Then WriteLn(‘Вы младенец!’);

If n in [1..3] Then WriteLn(‘У вас ясельный возраст!’);

If n in [4..6] Then WriteLn(‘Вы ходите в детский сад!’);

If n in [7..17] Then WriteLn(‘Вы школьник’);

If n in [18..28] Then WriteLn(‘Вы молодой человек’);

If n in [29..40] Then WriteLn(‘У Вас средний возраст’);

If n in [41..60] Then WriteLn(‘Вы зрелый человек’);

If n >60 Then WriteLn(‘Вам наверно трудно жить на пенсию!’);

ReadLn;

End.

10. Оценка.

Дана оценка ученика в виде целого числа.

Дайте словесное описание этой оценки

11. Температура воздуха.

Дана температура воздуха в виде целого числа.

Дайте словесное описание этой температуры (холодно, тепло, ну очень холодно, ну это абсолютный ноль…..)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]