Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
Хотя для наглядности речь в задачах может идти о столбах, шагах или распиливания бревна, полностью аналогичные задачи программистам приходится решать на каждом шагу (при работе с массивами, при вычислении количества шагов в циклах и т.д.) Все выражения, которые вам требуется составить, взяты из реальной программистской практики.
Прорешать данные задачи также полезно в связи с тем, что многие не умеют решать задачи в общем виде, когда вместо конкретных чисел используются буквенные обозначения. Кроме того, большинство выпускников обычных школ плохо представляют себе, что значит думать над задачей. Они могут прилежно заучить правила написания и смысл операторов языка, но когда надо изобрести способ решить задачу с их помощью, не понимают, что же им делать.
В данном случае мы имеем дело с простейшей ситуацией – по сути, требуется придумать программу, состоящую из одной строки. Набор операций дан, требуется их скомбинировать так, чтобы получился требуемый результат. Решение данных задач позволит выработать правильный подход и настрой для работы в ситуации когда «неизвестно что делать».
Используя арифметические операторы (+, -, *, /, div, mod), а также функции round(), trunc() и abs(), составьте арифметические выражения для вычисления следующих величин:
1. n-е четное число (первым считается 2, вторым 4 и т.д.)
2. n-е нечетное число (первое равно 1, второе 3 и т.д.)
3. В очереди стоят n людей, сколько человек находится между i-м и k-м в очереди.
4. Сколько нечетных чисел на отрезке (a, b), если a и b – четные? Если a и b – нечетные? a –четное, b – нечетное?
5. Сколько полных минут и часов содержится в x секундах?
6. В доме 9 этажей, на каждом этаже одного подъезда по 4 квартиры. В каком подъезде, и на каком этаже находится n-я квартира.
7. Старинными русскими денежными единицами являются: 1 рубль – 100 копеек, 1 гривна — 10 копеек, 1 алтын — 3 копейки, 1 полушка — 0,25 копейки. Имеется А копеек. Запишите выражения для представления имеющейся суммы в рублях, гривнах, алтынах и полушках.
8. Стрелка прибора вращается с постоянной скоростью, совершая w оборотов в секунду (не обязательно стрелка прибора, может быть это волчок в игре «Что? Где? Когда?» и т.п.) Угол поворота стрелки в нулевой момент времени примем за 0. Каков будет угол поворота через t секунд?
9. Вы стоите на краю дороги и от вас до ближайшего фонарного столба x метров. Расстояние между столбами y метров. На каком расстоянии от вас находится n-й столб?
10. Та же ситуация, что и в предыдущей задаче. Длина вашего шага z метров. Мимо скольких столбов вы пройдете, сделав n шагов.
11. x – вещественное число. Запишите выражение, позволяющее выделить его дробную часть.
12. x – вещественное число. Запишите выражение, которое округлит его до сотых долей (останется только два знака после запятой).
13. n – целое число. Запишите выражение, позволяющее узнать его последнюю цифру.
14. n – четырехзначное целое число. Запишите выражение, позволяющее узнать его первую цифру.
15. Оператор div в Паскале работает только для целых чисел. Составьте выражение, позволяющее получать целую часть от деления вещественных чисел.
16. Выразите операцию mod через другие арифметические операции.
17. x – вещественное число. Запишите выражение, которое даст +1, если x>0 и -1, если x<0 (при x=0 выражение будет неопределено).
18. n и m – целые числа. Запишите выражение, которое давало бы 0, если n кратно m и 1, если не кратно.
19. От бревна длиной L отпиливают куски длиной x. Сколько кусков максимально удастся отпилить.
20. Бревно длиной L распилили в n местах. Какова средняя длина получившихся кусков?
21. Резиновое кольцо диаметром d разрезали в n местах. Какова средняя длина получившихся кусков?
22. На прямой через равные промежутки располагается n точек. Расстояние от первой до последней равно L. Чему равно расстояние от первой точки до i-й? А от k-й до последней? А от i-й до k-й?
23. Известно, что приближенные формулы для вычисления синуса и косинуса работают тем точнее, чем меньше значение аргумента. Поскольку синус и косинус 2π-периодические функции (sin(x) = sin(x+2πn) , где n – любое целое число), то можно вычисление синуса от любого аргумента привести к вычислению синуса от аргумента, лежащего в диапазоне от 0 до 2π. Запишите формулы, позволяющие:
(а) привести положительный угол x в диапазон от 0 до 2π.
(б) аналогично для отрицательного угла.
24. Пусть дано трехзначное число x (например, 123). Составьте выражения, которые позволят вычислить первую, вторую и третью цифру этого числа (числа 1, 2 и 3 в примере). Для облегчения поиска решения имейте в виду, что для двузначного числа первая цифра дается выражением
d1:=x div 10;
а вторая выражением
d2:=x mod 10;
Следующий раздел:
Предыдущий раздел:
Добрый день. Верна ли программа к 3 задаче? :
var
k,i,s: integer;
begin
write(`s=`);
readln(k,i);
s:=k-i-1;
writeln(abs(s));
end
А знвчения условности не были еще описанны. Как без них решить 4-ю задачу?
3-я — правильно.
В 4-й считай, что просто это 3 задачи.
Разве правильное решение у Lena?
Если, к примеру, мы введем 1 и 2, то программа возвращает значение 2.
Да и сама переменная s зачем здесь?
var
i, k: integer;
begin
writeln(‘введите i’);
write(‘i=’);
readln(i);
writeln(‘введите k’);
write(‘k=’);
readln(k);
writeln(‘между i и k — ‘, abs(k-i)-1, ‘ человек’);
end.
Добрый Вечер!
Подскажите верна ли задача №6?
var
n,x,y: integer;
begin
writeln(‘Введите № кв. ‘);
readln(n);
x:=(n+35) div 36;
y:=(n+3) div 4-((n+35) div 36-1)*9;
writeln(‘Подъезд № ‘,x,’ Этаж № ‘,y);
end.
Пожалуйста подскажите № 10. всю голову сломал….
Тарас Викторович!!!!! вернитесь на сайт… ПОЖАЛУЙСТАААА!!!!
Верно ли №14?
program pervaya_cifra;
var
x: integer;
begin
write(‘x= ‘);
readln(x);
write(‘Первая цифра ‘,trunc(x/1000));
end.
верно ли 15?
program delenie;
var
x,y: real;
begin
write(‘x= ‘);
readln(x);
write(‘y= ‘);
readln(y);
write(‘целая часть от деления ‘,trunc(x/y));
end.
а 16?
program delenie;
var
x,y: integer;
begin
write(‘x= ‘);
readln(x);
write(‘y= ‘);
readln(y);
write(‘остаток от деления ‘,x-y*trunc(x/y));
end.
верно ли 17?
program semnadcat;
var
x: real;
begin
write(‘x= ‘);
readln(x);
write(trunc(x/abs(trunc(x))));
end.
верно ли 19?
program devyatnadcat;
var
l,x: integer;
begin
write(‘l= ‘);
readln(l);
write(‘x= ‘);
readln(x);
write(‘макс. кол-во кусков ‘,trunc(l/x));
end.
верно ли 20?
program dvadcat;
var
l,n: integer;
begin
write(‘l= ‘);
readln(l);
write(‘n= ‘);
readln(n);
write(‘средний размер ‘,l/(n+1));
end.
верно ли 21?
program dvadcatodin;
var
n,d: integer;
begin
write(‘d= ‘);
readln(d);
write(‘n= ‘);
readln(n);
write(‘средний размер ‘,pi*d/n);
end.
Здравствуйте Тарас Викторович!
Проверьте пожалуйста №22.
program dvadcat_dva;
var
l,n,i,k: real;
begin
write(‘l= ‘);
readln(l);
write(‘n= ‘);
readln(n);
write(‘i= ‘);
readln(i);
write(‘k= ‘);
readln(k);
write(‘от 1-ой до i ‘,(l/(n-1))*(i-1),’ от k до последней ‘,(l/(n-1))*(n-k),’ от i до k ‘,(l/(n-1))*(k-i));
end.
верно ли 24?
program dvadcat_chetire;
var
x: integer;
begin
write(‘x= ‘);
readln(x);
write(‘1-я цифра — ‘,(trunc(x div 10))div 10,’ 2-я — ‘,(trunc(x div 10))mod 10,’ 3-я цифра — ‘,round((x/10-trunc(x/10))*10));
end.
Николай, 10-я задача:
var
x,y,z,n: integer;
begin
writeln(‘Введите расстояние до ближайшего столба’);
readln(x);
writeln(‘Введите расстояние между столбами’);
readln(y);
writeln(‘Введите длину вашего шага’);
readln(z);
writeln(‘Введите количество шагов’);
readln(n);
writeln(‘Вы прошли мимо ‘, round (z*n/(z*n+x)) + round (z*n/(z*n+x)) * ((z*n-x) div y) ,’ столбов.’);
end.
Спасибо е2-е4!!!
Таким образом можно было задачу №10 решить?
program hz;
var
n, x, y : integer;
b,z: real;
begin
write ( ‘введите расстояние от Вас до столба’);
readln(x);
write ( ‘введите расстояние между столбами’);
readln(y);
write(‘введите длину Вашего шага’);
readln(z);
write(‘введите количество шагов’);
readln(n);
b:=( n*z -(x-y))/y;
b:= trunc (b);
writeln (‘через ‘,n,’ шагов вы пройдете’,b,’ столбов’);
end.
Можно :)
Целую часть от деления можно получить сразу с помощью div. Кстати, тогда и тип real для, по определению, целого числа столбов не понадобился бы. Для большей ясности я бы написал:
(n*z − x) div y + 1
20 задачу может я не до конца понял ? но зачем искать среднюю длину ,если это и есть по сути деление длины на кол-во спиленных мест?
program brevna ;
var
l,n, x: real ;
begin
write (‘введите длину бревна ‘);
readln(l);
write(‘введите количество обрубов’);
readln(n);
x:=l/n;
writeln(‘средняя длина куска равна ‘,x, ‘ м’);
end.
да и в 21 не уверен , что все понял)
program krug ;
var
d,n : real ;
begin
write(‘введите диаметр’);
readln(d);
write(‘введите количество срезов’);
readln(n);
writeln( ‘ средняя длина отрезков равна ‘,d*3.14/n);
end.
20 — бревно длиной L = 1 м распилили в n = 1 (одном) месте. Получились куски со средней длиной L/n = 1 м. Очевидно, пилили вдоль! При больших n, соответственно, предполагается пиление по диагонали.
21 — правильно. Вместо 3.14 можно использовать стандартную функцию pi.
понял ) а так?
program brevna ;
var
l,n, x: real ;
begin
write (‘введите длину бревна ‘);
readln(l);
write(‘введите количество обрубов’);
readln(n);
x:=l/n+1;
writeln(‘средняя длина куска равна ‘,x, ‘ м’);
end.
Так получатся куски по 2 метра :)
а теперь?))
program brevna ;
var
l,n, x: real ;
begin
write (‘введите длину бревна ‘);
readln(l);
write(‘введите количество обрубов’);
readln(n);
x:=l/(n+1);
writeln(‘средняя длина куска равна ‘,x, ‘ м’);
end.
Тарас ,еще проверьте , пожалуйста, задания в главе 2.4
Тарас ! я не понимаю как решить 2 и 3 задачи помогите!!
У меня такое решение к задаче №3:
program Ochered;
var
i, k, n: integer;
begin
writeln(‘Введите количество людей в очереди ‘);
readln(n);
writeln(‘Введите число i ‘ );
readln(i);
writeln(n>=i);
writeln(‘Введите число k ‘);
readln(k);
writeln(n>=k);
writeln(‘Между i и k стоит ‘, abs(i-k)-1, ‘ людей.’);
end.
Задача №1:
program Chet;
var
n: integer;
begin
writeln(‘Введите число n ‘);
readln(n);
writeln(n, ‘-е четное число ‘, 2*n);
end.
Задача №2:
program Nechet;
var
n: integer;
begin
writeln(‘Введите число n ‘);
readln(n);
writeln(n, ‘-е нечетное число ‘, 2*n-1);
end.
Задача №5:
program Vremya;
var
x: integer;
begin
writeln(‘Введите количество секунд ‘);
readln(x);
writeln(‘в ‘, x, ‘ секундах ‘, x div 60, ‘ полных минут ‘, x div 3600, ‘ полных часов ‘);
end.
Задача №6
program Dom;
var
n, x, y, z: integer;
begin
writeln(‘Введите номер квартиры ‘);
readln(n);
x:=(n+35) div 36;
z:= n -(x-1)*36;
y:=(z+3)div 4;
writeln(‘квартира номер ‘, n, ‘ находится в ‘, x, ‘ подъезде ‘, ‘ на ‘, y , ‘ этаже ‘);
end.
Задача №7
program Kopejki;
var
x, a, b, c, d: integer;
begin
writeln (‘введите количество копеек ‘);
readln (x);
a:= x div 100;
b:= (x-a*100) div 10;
c:= (x-a*100-b*10) div 3;
d:= (x-a*100-b*10-c*3)*4;
writeln (a, ‘ рублей ‘, b, ‘ гривен ‘, c, ‘ алтын ‘, d, ‘ полушек ‘);
end.
Проверьте, пожалуйста, задачу №8.
program Krug;
var
x, t, y: real;
begin
writeln (‘введите период вращения стрелки в секундах – время, за которое стрелка совершает один оборот’);
readln (y);
writeln (‘введите время вращения в секундах’);
readln (t);
x:=(2*pi/y)*t;
writeln (‘угол поворота через ‘, t, ‘ секунд равен ‘, x, ‘ радиан’);
end.
Задача №9.
program Stolb;
var
x, y, n: integer;
begin
writeln(‘Введите расстояние до ближайшего столба ‘);
readln(x);
writeln(‘Введите расстояние между столбами ‘);
readln(y);
writeln(‘Введите количество столбов ‘);
readln(n);
writeln(‘Крайний столб находится от вас на расстоянии ‘, x+y*(n-1), ‘ метров.’);
end.
Переделала задачу №8:
program Krug;
var
x, t, y: real;
begin
writeln (‘введите частоту вращения стрелки — количество оборотов за одну секунду ‘);
readln (y);
writeln (‘введите время вращения в секундах’);
readln (t);
x:=2*pi*y*t;
writeln (‘угол поворота через ‘, t, ‘ секунд равен ‘, x, ‘ радиан или ‘, x*180/pi, ‘ градусов ‘);
end.
Помогите найти ошибку в формуле к задаче №8, градусы выходят за пределы 360, как это исправить?
Задача №11.
program Drob;
var
x: real;
begin
writeln(‘Введите дробное число’);
readln(x);
writeln(‘дробная часть числа ‘, x-trunc(x));
end.
Задача №12.
program Okrugleniye;
var
x, y, z: real;
begin
writeln(‘Введите дробное число’);
readln(x);
y:=trunc(x);
z:=(x-trunc(x))*100;
writeln(‘округлено до сотых = ‘, y, ‘.’, round(z));
end.
Задача №13.
program Poslednyaya;
var
n:integer;
x, y: real;
begin
writeln (‘введите цифру’);
readln (n);
x:=n/10;
y:= x-trunc(x);
writeln (‘последняя цифра вашего числа ‘, round(y*10));
end.
Задача №14.
program Pervaya;
var
n:integer;
x, y: real;
begin
writeln (‘введите четырехзначное число’);
readln (n);
x:=n/10000;
y:= x-trunc(x);
writeln (‘первая цифра вашего числа ‘, trunc(y*10));
end.
Задача №15.
program Celaya;
var
x, y: real;
begin
writeln(‘ведите дробное число ‘);
readln(x);
writeln(‘ведите второе дробное число ‘);
readln (y);
writeln(‘Целая часть от деления ‘, trunc(x/y));
end.
Задача №19.
program Brevno;
var
l,x: integer;
begin
writeln(‘Введите длину бревна ‘);
readln(l);
writeln(‘Введите длину бруска в тех же единицах измерения ‘);
readln(x);
write(‘Из бревна получится ‘, l div x, ‘ целых брусков.’);
end.
Задача №20.
program Brevno2;
var
l,n: integer;
begin
writeln(‘Введите длину бревна ‘);
readln(l);
writeln(‘Введите количество распилов ‘);
readln(n);
write(‘Средняя длина бруска ‘, l div (n+1));
end.
Задача №21.
program Kolzo;
var
d,n: real;
begin
writeln(‘Введите диаметр кольца ‘);
readln(d);
writeln(‘Введите количество разрезов ‘);
readln(n);
write(‘Средняя длина куска кольца ‘, pi*d/n);
end.
Задача №22.
program Pryamaja;
var
l, i, k, n, x: real;
begin
writeln(‘Введите количество точек ‘);
readln(n);
writeln(‘Введите расстояние от первой до последней точки ‘);
readln(l);
writeln(‘Введите порядковый номер точки i ‘);
readln(i);
writeln(‘Введите порядковый номер точки k ‘);
readln(k);
x:=l/(n-1);
write(‘Расстояние от первой точки до i-й = ‘, x*(i-1), ‘, расстояние от k-й до последней = ‘, x*(n-k), ‘, расстояние от i-й до k-й = ‘, x*abs(k-i));
end.
Задача №24.
program Tri;
var
x, d1, d2, d3: integer;
begin
writeln(‘Введите трехзначное число ‘);
readln(x);
d1:= x div 100;
d2:= (x-d1*100) div 10;
d3:= x mod 10;
write(‘1-я цифра числа ‘, d1, ‘, 2-я цифра числа ‘, d2, ‘, 3-я цифра числа ‘, d3);
end.
111
если кому интересно ещё)), задача номер 4
program Skolko_Chisel;
var
a, b: real;
begin
write(‘a=’);
readln(a);
write(‘b=’);
readln(b);
writeln(‘Chisel=’, (round(((b — a) — 1) / 2)));
end.
у меня по крайней мере получается, правильно или нет, решать «гуру». Желание научится появилось сегодня, пару часов назад. Почитал, всё доступно написано, как раз для таких, как я. Решение не всё, но остальное путём банальной смены операторов.
Извиняюсь, там конечно же не real, а integer. Кстати затягивает :-)
Евгений, задача 4 состоит из 3 разных задач в первом случае
var
a, b: integer;
begin
writeln(‘введите четное a’);
write(‘a=’);
readln(a);
writeln(‘введите четное b ‘);
write(‘b=’);
readln(b);
writeln(‘нечетных между a и b — ‘, abs (a-b)/2, ‘ единиц ‘);
end.
во втором
var
a, b: integer;
begin
writeln(‘введите нечетное a’);
write(‘a=’);
readln(a);
writeln(‘введите нечетное b ‘);
write(‘b=’);
readln(b);
writeln(‘нечетных между a и b — ‘, abs (a-b)/2-1, ‘ единиц ‘);
end.
в третьем
var
a, b: integer;
begin
writeln(‘введите четное a’);
write(‘a=’);
readln(a);
writeln(‘введите нечетное b ‘);
write(‘b=’);
readln(b);
writeln(‘нечетных между a и b — ‘, abs ((a-b)-1)/2, ‘ единиц ‘);
end.
Задача № 8 (Видимо я жутко тупой, т.к. мучил её ровно сутки:))
var
w, t, c, g, g1: real;
begin
write(‘количество оборотов в секунду=’);
readln(w);
write(‘количество секунд=’);
readln(t);
c:=360*w;
g:=c*t;
g1:=g-(360*trunc(w)*trunc(t));
writeln(trunc(g1));
end.