Комарова. 1 Примеры задач, с линейным алгоритмом решения
Скачать 160.94 Kb.
|
В языке Pascal операции отношения определены для величин лю- бого порядкового типа (целые, символьный, логический, перечислимый, диапазон). Логическое выражение – это логический операнд или последователь- ность логических операндов, разделенных между собой знаками логических операций (NOT, AND, OR, XOR). Порядок действий при вычислении значения логического выраже- ния: 1. вычисляются значения в скобках; 2. вычисляются значения функций; 3. выполняется унарные операции (операция NOT); 4. выполняется операция AND; 5. выполняются операции OR, XOR; 6. выполняются операции отношения. Действия выполняются слева направо с учетом их приоритета. Же- лаемая последовательность операций обеспечивается путем расстановки скобок в соответствующих местах выражения. При реализации некоторых программ удобно использовать функ- ции, которые имеют логическое значение. Обычно они используются для того, чтобы на некоторый вопрос получить ответ «ДА» или «НЕТ». 1.1 .Примеры задач, с линейным алгоритмом решения 1. Дано два числа, найти остаток от деления первого на второе и вывести результат. Program ostatok; Var a,b,x:integer; Begin Write('введите два числа '); Readln(a,b); X:=a mod b; Writeln('остаток от деления-',x); Readln; End. 2 . Дано два числа найти возведения положительного числа «x» в степень «n», т. е. y = x n . Расчет производится по формуле: y=Exp(n*ln(x)). Program N_2; {возведение положительного числа в степень} Var n, x, y : real; BEGIN Writeln('Программу разработал Иванов'); Writeln('Возведение положительного числа x степень n'); Writeln('x = '); 11 Readln(x); Write('n = '); Readln(n); y := exp(n*ln(x)); Writeln('результат y=', y:10:6); readln; {задержка экрана до нажатия Enter} END. 3 . Определить расстояние на плоскости между двумя точками с за- данными координатами M1(x1,y1) и M2(x2,y2). program example1; var x1, x2, y1, y2: integer; d:real; begin writeln('Эта программа вычисляет расстояние между двумя точками на плоскости'); writeln('Введите координаты двух точек:'); write('x1= '); readln(x1); write('y1= '); readln(y1); write('x2= '); readln(x2); write('y2 ='); readln(y2); d:=sqrt(sqr(x2-x1)+sqr(y2-y1)); writeln('d= ',d); writeln('нажмите Enter для завершения работы программы'); readln end. 4. Скорость первого автомобиля v 1 км/ч, второго – v 2 км/ч, расстоя- ние между ними s км. Какое расстояние будет между ними через t ч, если автомобили движутся в разные стороны? Согласно условию задачи искомое расстояние s 1 =s +(v 1 +v 2 )t (если ав- томобили изначально двигались в противоположные стороны) или s 2 =|(v 1 +v 2 )t -s| (если автомобили первоначально двигались навстре- чу друг другу). Чтобы получить это решение, необходимо ввести исходные дан- ные, присвоить переменным искомое значение и вывести его на печать. Program Car; Var V1, V2, T, S, S1, S2 : Real; Begin Write('Введите скорости автомобилей, рас- стояние между ними и время движения:'); 12 ReadLn(V1, V2, S, T); S1 := S + (V1 + V2) * T; S2 := Abs((V1 + V2) * T – S); WriteLn('Расстояние будет равно ', S1:7:4, ' км или ', S2:7:4, ' км') End. Заметим, что идентификатор должен начинаться с латинской бук- вы, далее, кроме латинских букв, может содержать цифры, знак подчеркивания (_). Разумно, чтобы программа вела диалог с пользователем, т. е. необ- ходимо предусмотреть в ней вывод некоторых пояснительных сообщений. В противном случае даже сам программист может через некоторое время забыть, что необходимо вводить и что является ре- зультатом. Для всех величин в программе объявлен тип Real, что связано со стремлением сделать программу более универсальной и работающей с как можно большими наборами данных. 5. Вычислить значение выражения Для решения задачи достаточно ввести все данные, безошибочно записать выражение и вывести результат. Примечание. При решении этой задачи не учитывается область определения выражения, считается, что вводятся только допустимые данные. Program Expression; Var X, Z : Real; Begin Write('Введите значения переменной X: '); ReadLn(X); Z := 6 * ln(sqrt(exp(x+1)+2*exp(x)*cos(x))) / ln(x – exp(x+3) * sin(x)) + abs(cos(x) / exp(sin(x))); WriteLn('Значение выражения: ', Z : 12 : 6) End. 6 . Текущее показание электронных часов: m часов (0≤ m≤ 23), n минут (0≤ n≤59), k секунд (0≤k≤59). Какое время будут показы- вать часы через p часов q минут r секунд? Program z1; Uses crt; var m,n,k,p,q,r: integer; Begin Clrscr; Write ('Текущее время (час.,мин.,сек.)='); Read(m,n,k); Write ('Следующее время (час.,мин.,сек.)='); 13 Read(p,q,r); m:=m+p; n:=n+q; k:=k+r; m:=(m+trunc((n+trunc(k/60))/60)) mod 24; n:=(n+trunc(k/60)) mod 60; k:=k mod 60; Writeln(m,' час. ',n,' мин. ',k,' сек.'); Readkey; end. 7. Полторы кошки за полтора часа съедают полторы мышки. Сколько мышек съедят X кошек за Y часов? Program z1_2; Uses crt; var x,k,y: real; Begin Clrscr; Write ('кошек:'); Read(x); Write ('время (час.):'); Read(y); k:=2/3*x*y; Writeln(x:3:2,' кошек за ',y:3:2,' час. съедят ',k:3:2,' мышей'); Readkey; end. 8 . Для приготовления квашеной капусты на 10 кг капусты берут 225 г соли , 350 г моркови, 200 г клюквы, 4 г лаврового листа. Сколько соли, моркови, клюквы и лаврового листа надо взять, если закуплено М кг капусты? program z1_5; uses crt; var kap,kl,mor,llist,m:real; begin clrscr; write('m=');read(m); kap:=22.5*m; kl:=20*m; mor:=33*m; llist:=0.4*m; writeln('Для приготовления ',m:2:1,' кг. квашенной капусты нужно:'); writeln('Капусты ',kap:2:1,' г.'); writeln('Клюквы ',kl:2:1,' г.'); writeln('Моркови ',mor:2:1,' г.'); writeln('Лаврового листа ',llist:2:1,' г.'); readkey; end. 14 9. Составьте программу для вычисления длин медиан треугольника, у которого длины сторон a, b, c. program z1_27; uses crt; var a,b,c,ma,mb,mc:real; xb,xc,ub,uc:real; begin {задача решена для остроугольного треугольника} clrscr; write('a,b,c=');read(a,b,c); {найдем 2 любых угла треугольника} xb:=(a*a+c*c-b*b)/(2*a*c); xc:=(b*b+a*a-c*c)/(2*a*b); uc:=arctan(sqrt(1+1/xc)); ub:=arctan(sqrt(1+1/xb)); {по теореме косинусов найдем медианы} ma:=sqrt(sqr(a/2)+sqr(b)-a*b*cos(uc)); mb:=sqrt(sqr(b/2)+sqr(a)-a*b*cos(uc)); mc:=sqrt(sqr(c/2)+sqr(a)-a*c*cos(ub)); writeln('ma=',ma:3:3); writeln('mb=',mb:3:3); writeln('mc=',mc:3:3); readkey; end. 10. Покупатель должен заплатит в кассу S руб. У него имеются 1, 2, 5, 10, 50, 100, 500 руб. Сколько купюр разного достоинства отдаст по- купатель, если он начинает платить с самых крупных? program z3_10; uses crt; var a1,a2,a3,a4,a5,a6,a7: Real; s: integer; Begin ClrScr; Write('Введите S='); read(s); a1:=int(s/500); s:=s mod 500; a2:=int(s/100); s:=s mod 100; a3:=int(s/50); s:=s mod 50; a4:=int(s/10); s:=s mod 10; 15 a5:=int(s/5); s:=s mod 5; a6:=int(s/2); a7:=s mod 2; Writeln('500 руб.-',a1:5:0,' шт.'); Writeln('100 руб.-',a2:5:0,' шт.'); Writeln('50 руб.-',a3:5:0,' шт.'); Writeln('10 руб.-',a4:5:0,' шт.'); Writeln('5 руб.-',a5:5:0,' шт.'); Writeln('2 руб.-',a6:5:0,' шт.'); Writeln('1 руб.-',a7:5:0,' шт.'); Readkey; end. 1.2. Задачи для самостоятельного решения. Программирование линейных алгоритмов 1. Вычислить значения выражений по формулам (все переменные имеют действительный тип): а) b) c) d) e) f) g) h) i) j ) k) l) m ) n) o) p ) 16 q) r) s) t) u) v) w ) x ) 2. Определить время падения камня на поверхность земли с высоты h. 3. Известна длина окружности. Найти площадь круга, ограничен- ного этой окружностью. 4. Вычислить высоту треугольника, опущенную на сторону а, по известным значениям длин его сторон a, b, c. 5. Вычислить объем цилиндра с радиусом основания r и высотой h. 6. Определить расстояние, пройденное физическим телом за вре- мя t, если тело движется с постоянным ускорением а и имеет в начальный момент времени скорость V0. 7. Вычислить площадь треугольника по формуле Герона, если за- даны его стороны. 8. Определить координаты вершины параболы y=ax 2 +bx+c (a<>0). Коэффициенты a,b,c заданы. 9. По данным сторонам прямоугольника вычислить его периметр, площадь и длину диагонали. 10. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. 11. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба. 12. Найти длину окружности и площадь круга заданного радиуса R. 13. Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь. 14. Дано целое четырехзначное число. Используя операции div и mod, найти сумму его цифр. 15. Дано целое четырехзначное число. Используя операции div и mod, найти произведение его цифр. 16. Скорость первого автомобиля V1 км/ч, второго – V2 км/ч, рас- стояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу. 17 17. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (про- тив течения) – T2 ч. Определить путь S, пройденный лодкой. 18. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей. 19. Известно количество жителей в государстве и площадь его тер- ритории. Определить плотность населения в этом государстве. 20. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2). 21. Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов a и b. 22. Заданы координаты трех вершин треугольника (x 1 , y 1 ), (x 2 , y 2 ), (x 3 , y 3 ). Найдите его периметр и площадь. 23. Вычислить длину окружности и площадь круга одного и того же заданного радиуса R. 24. Найти произведение цифр заданного четырехзначного числа. 25. Даны два числа. Найти среднее арифметическое кубов этих чи- сел и среднее геометрическое модулей этих чисел. 26. Даны два действительных числа x и y. Вычислить их сумму, разность, произведение и частное. 27. Даны длины ребра куба. Найти площадь грани, площадь пол- ной поверхности и объем этого куба. 28. Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоту, радиусы вписанной и описанной окружностей. 29. Известна длина окружности. Найдите площадь круга, ограни- ченного этой окружностью. 30. Найти площадь кольца, внутренний радиус которого равен r, а внешний – заданному числу R (R>r). 31. Треугольник задан величинами своих углов и радиусом описан- ной окружности. Найти стороны треугольника. 32. Найти площадь равнобедренной трапеции с основани- ем a и b и углом α при большем основании а. 33. Найти площадь треугольника, две стороны которого равны a и b, а угол между ними g. 34. Найти сумму членов арифметической прогрессии, если извест- ны ее первый член, знаменатель и число членов прогрессии. 35. Найти все углы треугольника, если известны его стороны. Предусмотреть в программе перевод радианной меры углов в градусы, минуты и секунды. 36. Составить программу вычисления объема цилиндра и конуса, которые имеют одинаковую высоту H и одинаковый радиус основания R. 18 |