
Совсем недавно мы закончили разбор первого раздела сборника «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.Согласитесь, что это были не очень сложные задачи, поэтому никаких объяснений и блок-схем не требуется. Если же у вас возникли какие-либо проблемы, то не стесняйтесь и пишите все свои вопросы в комментарии под этой статьей. Ну, а если вам просто понравилась эта статья, то обязательно кликайте по кнопочкам, которые расположены ниже. 🙂
я не особый знаток информатики но спасибо большое вашему сайту
а почему тут нету case?
Program Integer_2;
var M,k: integer;
begin
write (‘Введите значение M: ‘);
readln (M);
k := M div 1000;
write (‘Количество полных тонн: ‘,k,’.’);
end.
Компилирую в Geany, при вводе значения больше 32000, получаю ответ например: 38000 ответ -27.
Подскажите пожалуйста почему так считает?
8 задание, мой код:
var
des,ed,a:integer;
begin
write(‘a : ‘);
read(a);
des:= a div 10;
ed:= a mod 10;
writeln(ed,des);
end.
в предлагаемом Решении
Если вводить десятки, то 0 не отображается, в моем коде, отображается. Может я и не прав, но так понял условия.
Сайт очень классный и для меня, как новичка в программировании — полезный, спасибо, еще неделю назад такая задача для меня была темным лесом, успехов.
Вообще говоря, я не совсем поняла, что значит «вводить десятки».
Но так или иначе то, что вы написали, не является формально верным. Например, при вводе 10 вы получаете в выводе 0 1 (или 01), когда по-хорошему ожидается 1.
А, поняла. Кажется, именно это вы и имели в виду.
Да, это расхождение в понимании условия. Но в общем случае верным является именно преобразование 10 -> 1, а не 10 -> 01.
c 6 задания вообще перестал что либо понимать, почему мы в 8 умножаем на 10 и прибавляем десятки? откуда вообще взять это.
так то просто с div mod, но вот откуда брать так сказать формулы я не знаю. дали бы в задании — всё быстро и решилб.
СПАСИБО ВСЕМУ САЙТУ