Решение задач. День Пятый. Задачи Integer1-10


integer1-10

Совсем недавно мы закончили разбор первого раздела сборника «1000 задач по программированию» — раздела Begin. Но на этом мы не останавливаемся, и прямо сейчас начинаем разбирать новый раздел — раздел Integer. (Думаю, вы уже догадались, что все переменные, представленные в следующих задач Integer1-10 — целые числа.)

В  Integer  основной упор будет сделан на div и mod.

Integer1. Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных метров в нем (1 метр = 100 см).

Program Integer_1;

var l, k: integer;

begin
  write ('Введите значение L:');
  readln (l);
  k := l div 100;
  write ('Количество полных метров: ', k,'.');
end.

Integer2. Дана масса M в килограммах. Используя операцию деления нацело, найти количество полных тонн в ней (1 тонна = 1000 кг).

Program Integer_2;

var M, k: integer;

begin
  write ('Введите значение M: ');
  readln (M);
  k := M div 1000;
  write ('Количество полных тонн: ', k,'.');
end.

Integer3°. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).

Program Integer_3;

var a, k: integer;

begin
  write ('Введите размер файла: ');
  readln (a);
  k := a div 1024;
  write ('Количество полных килобайтов: ', k,'.');
end.

Integer4. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию деления нацело, найти количество отрезков B, размещенных на отрезке A.

Program Integer_4;

var a, b, k: integer;

begin
  write ('Введите a и b: ');
  readln (a, b);
  k := a div b;
  write ('Количество отрезков B, размещенных на отрезке A: ', k);
end.

Integer5. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.

Program Integer_5;

var a, b, k: integer;

begin
  write ('Введите a и b: ');
  readln (a, b);
  k := a mod b;
  write ('Длина незанятой части отрезка: ', k);
end.

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

Integer6. Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем — его правую цифру (единицы). Для нахождения десятков использовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления.

Program Integer_6;

var chislo, desyatki, edinizi: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  desyatki := chislo div 10;
  writeln (desyatki);
  edinizi := chislo mod 10;
  writeln (edinizi);
end.

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

Program Integer_7;

var chislo, desyatki, edinizi, summa, proizv: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  desyatki := chislo div 10;
  edinizi := chislo mod 10;
  summa := desyatki + edinizi;
  proizv := desyatki * edinizi;
  writeln ('Сумма цифр числа: ', summa);
  writeln('Произведение цифр числа: ', proizv);
end.

Integer8°. Дано двузначное число. Вывести число, полученное при перестановке цифр исходного числа.

Program Integer_8;

var chislo, desyatki, edinizi: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  desyatki := chislo div 10;
  edinizi := chislo mod 10;
  chislo := edinizi * 10 + desyatki;
  writeln ('Полученное число: ', chislo);
end.

Integer9. Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни).

Program Integer_9;

var chislo, sotni: integer;

begin
  write ('Введите число: ');
  readln (chislo);
  sotni := chislo div 100;
  writeln (sotni);
end.

Integer10. Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки).

Program Integer_10;

var chislo, desyatki, edinizi: integer;

begin
write ('Введите число: ');
readln (chislo);
edinizi := chislo mod 10;
writeln (edinizi);
desyatki := chislo mod 100 div 10;
writeln (desyatki);
end.

Согласитесь, что это были не очень сложные задачи, поэтому никаких объяснений и блок-схем не требуется. Если же у вас возникли какие-либо проблемы, то не стесняйтесь и пишите все свои вопросы в комментарии под этой статьей. Ну, а если вам просто понравилась эта статья, то обязательно кликайте по кнопочкам, которые расположены ниже.  🙂

  1. Program Integer_2;

    var M,k: integer;

    begin
    write (‘Введите значение M: ‘);
    readln (M);
    k := M div 1000;
    write (‘Количество полных тонн: ‘,k,’.’);
    end.
    Компилирую в Geany, при вводе значения больше 32000, получаю ответ например: 38000 ответ -27.
    Подскажите пожалуйста почему так считает?

  2. 8 задание, мой код:

    var
    des,ed,a:integer;
    begin
    write(‘a : ‘);
    read(a);
    des:= a div 10;
    ed:= a mod 10;
    writeln(ed,des);

    end.
    в предлагаемом Решении
    Если вводить десятки, то 0 не отображается, в моем коде, отображается. Может я и не прав, но так понял условия.

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

  3. Вообще говоря, я не совсем поняла, что значит «вводить десятки».
    Но так или иначе то, что вы написали, не является формально верным. Например, при вводе 10 вы получаете в выводе 0 1 (или 01), когда по-хорошему ожидается 1.

  4. А, поняла. Кажется, именно это вы и имели в виду.
    Да, это расхождение в понимании условия. Но в общем случае верным является именно преобразование 10 -> 1, а не 10 -> 01.

  5. c 6 задания вообще перестал что либо понимать, почему мы в 8 умножаем на 10 и прибавляем десятки? откуда вообще взять это.
    так то просто с div mod, но вот откуда брать так сказать формулы я не знаю. дали бы в задании — всё быстро и решилб.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *