Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

1. Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме

Предыдущий раздел:

Следующий раздел:

1.7. Задачи на составление арифметических выражений

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

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

В данном случае мы имеем дело с простейшей ситуацией – по сути, требуется придумать программу, состоящую из одной строки. Набор операций дан, требуется их скомбинировать так, чтобы получился требуемый результат. Решение данных задач позволит выработать правильный подход и настрой для работы в ситуации когда «неизвестно что делать».

Задания:

Используя арифметические операторы (+, -, *, /, 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;

Следующий раздел:

Предыдущий раздел:

327 комментариев

  1. Сергей

    //вариант для 10 задачи
    //решил просто добить 9-ую)
    program столб;
    var
    x,y,z:real;
    n:integer;
    begin
    write(‘метров до ближайшего столба — ‘);readln(x);
    write(‘расстояние между столбами (в метрах) — ‘);readln(y);
    write(‘длинна шага ‘);readln(z);
    write(‘узнать расстояния до столба номер — ‘);readln(n);
    writeln(‘до ‘,n,’ столба ‘,n*y-(y-x),’ метров, вы дойдете до него через ‘,(n*y-(y-x))/z,’ шагов.’);
    end.

  2. Сергей

    //вариант для 11,12 задачи
    program столб;
    var
    x:real;
    begin
    write(‘введите вещесевенное число: ‘);readln(x);
    writeln(‘дробная часть ‘,x-trunc(x));
    writeln(‘округлено до сотых ‘,round(x*100)/100);
    end.

  3. Сергей

    //вариант для 13 задачи
    program столб;
    var
    x:integer;
    begin
    write(‘введите целое число: ‘);readln(x);
    writeln(‘последня цифра это ‘,x mod 10);
    end.

  4. Сергей

    //вариант для 14 задачи
    program столб;
    var
    x:integer;
    begin
    write(‘введите целое четырехзначное число: ‘);readln(x);
    writeln(‘последня цифра это ‘,trunc(x/1000));
    end.

  5. Сергей

    //вариант для 15 задачи
    program столб;
    var
    x,y:real;
    begin
    write(‘введите вещественное число: ‘);readln(x);
    write(‘введите вещественное число: ‘);readln(y);
    writeln(‘целая часть их частного = ‘,trunc(x/y));
    end.
    //не знаяю почему, но при вводе чисел 0.6 и 0.2, выводит ответ 2, вместо 3-х.

  6. Сергей

    //вариант для 16 задачи
    program МOD;
    var
    a,b:integer;
    begin
    writeln(‘введите вещественные числа’);
    write(‘a=’); readln(a);
    write(‘b=’); readln(b);
    writeln(‘операция mod ‘,a mod b);
    writeln(‘мой аналог ‘,a-(a div b)*b);
    end.

  7. Сергей

    //вариант для 17 задачи
    program задача17;
    var x: real;
    begin
    write(‘x=’);readln(x);
    writeln(abs(x)/x);
    end.

  8. Сергей

    program задача18;
    var n,m: integer;
    begin
    write(‘n=’);readln(n);
    write(‘m=’);readln(m);
    writeln(round(n/m-n div m+0.5));
    end.

  9. Сергей

    //19 задача
    program бревно;
    var L,x: real;
    begin
    write(‘Длинна бревна — ‘);readln(L);
    write(‘отпиливать по — ‘);readln(x);
    writeln(‘бревно будет распилино на ‘,trunc(L/x),’ кусков длинной — ‘
    ,x,’, несчитая куска длинной ‘,L-trunc(L/x)*x);
    end.

  10. Сергей

    //20 задача
    program бревно;
    var L: real; n:integer;
    begin
    write(‘Длинна бревна — ‘);readln(L);
    write(‘в скольких местах было распилено бревно? ‘);readln(n);
    writeln(‘средняя длинна получившихся кусков = ‘,L/(n+1));
    end.

  11. Сергей

    //21 задача
    program кольцо;
    var d:real;n:integer;
    begin
    write(‘диаметр кольца — ‘);readln(d);
    write(‘в скольких местах было разрезано кольцо? ‘);readln(n);
    writeln(‘средняя длинна получившихся кусков = ‘,(pi*d)/(n+1));
    write(‘можно округлить до целых: ‘,round((pi*d)/(n+1)),’ или до сотых, как удобней: ‘,((pi*d)/(n+1)):0:2);
    end.

  12. Павел

    Здравствуйте. Можете привести примеры для всех задач? А то уже и подзабыл как они решаются.

  13. Дмитрий

    Добрый день подскажите с чего начать не пойму что делать с 1 задачей

  14. Дмитрий

    1. n-е четное число (первым считается 2, вторым 4 и т.д.)
    мне просто не понятно что с этим делать подскажите пожалуйста

  15. Artem

    program zad1;
    var
    x,y: real;
    begin
    write(‘x=’);
    readln(x);
    x:=round(x);
    y:=2;
    writeln(‘n_чётное=’,trunc(x*y));
    end.

  16. Artem

    По-моему, как то так )) только начал изучать 2 часа назад, не судите строго.
    program zad2;
    var
    x,y: real;
    q:integer;
    begin
    write(‘x=’);
    readln(x);
    x:=trunc(x);
    y:=2;
    q:=-1;
    writeln(‘n_чётное=’,((x*y)-q));
    end.

  17. Artem

    program zad3;
    var
    n,i,k:integer;
    begin
    write(‘введите количество тел ‘);
    readln(n);
    i:=1;
    k:=1;
    writeln(‘в промежутке ‘, (n-(i+k)));
    end.

  18. Artem

    program zad5;
    var
    a,b:integer;
    begin
    write(‘секунды ‘);
    readln(a);
    b:=60;
    writeln(‘минуты ‘, (a div b));
    end.

  19. Igor_Pro

    если я правильно понял, вот вариант 3 задачи
    var
    x,y,z: Integer;
    begin
    write(‘Человек в очереди-‘); readln(x);
    write(‘Сколько между ‘); readln(y);
    write(‘и ‘); readln(z);
    writeln(‘В промежутке-‘,z-y);
    end.

  20. Никита

    вот моя версия пятой задачи
    program секунды;
    var
    x: integer;
    begin
    write(‘Секунд, x= ‘);
    readln(x);
    writeln(‘Сколько полных минут=’, trunc(x/60));
    writeln(‘Сколько полных часов=’, trunc(x/3600));
    end.

  21. NesyBred

    Задание 9, правильно?
    program zad9stolb;
    uses crt;
    Var
    X, y, a, b,f:Real;
    begin
    Write(‘растояние до столба: x= ‘, );
    Read(x);
    Write(‘растояние между столбов: y= ‘, );
    Read(y);
    Write(‘столб до которого нужно узнать растояние:a= ‘, );
    Read(a);
    F:=a-1;
    b:=y*f+x;
    Write(b);
    end.

Добавить комментарий