Совсем недавно мы закончили разбор первого раздела сборника «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, но вот откуда брать так сказать формулы я не знаю. дали бы в задании — всё быстро и решилб.
хуйца сосни штефан
СПАСИБО ВСЕМУ САЙТУ