Условие задачи : Выводятся два случайных трехзначных числа . Определить у какого из них сумма цифр больше.
Сложность : средняя .
Пример суммы чисел :
237 : 2 + 3 + 7 = 12
Для решения задачи нам понадобиться две переменные для чисел, потом три переменные для того чтобы записать в них цифры числа , затем нужны две переменные чтобы в них занести сумму этих цифр и оператор условия if.
Для начала давайте объявим эти переменные и занесем в них случайные числа.
Помните : для того чтобы делать случайные числа каждый раз разные, необходимо прописать randomize;
Пишем :
uses crt ; var num1 , num2 , i , j , k , sum1 , sum2 : integer begin randomize; {генератор случайных чисел} num1 := 100 + random(900); num2 := 100 + random(900); end.
Вот эта запись :
num1 := 100 + random(900);
Позволит нам генерировать случайные числа от 100 до 999. Запомните на будущее.
Дальше нам нужно разбить каждое число на три цифры. Как мы будем это делать ? С помощью операций div и mod .
Допустим в переменной num1 у нас будет число 256. Для начала давайте возьмем его первую цифру т.е. два :
i := num1 div 100 ;
Такая запись позволит нам получить цифру 2.
Напомню : операция div возвращает нам целую часть от деления.
Дальше нам нужно получить цифру 5 .
j := num1 div 10 mod 10 ;
Вот так мы получим число 5. Как это работает. Сначала у нас делается операция div благодаря которой мы получим 25, а затем у нас выполняется операция mod которая находит остаток от деления.
И нам осталось получить последнюю цифру :
k := num1 mod 10 ;
Теперь нам осталось сложить эти цифры и получить сумму.
sum1 := i + j + k ;
Первая сумма готова, теперь точно также делаем и для второго числа , можно использовать те же переменные i , j , k .
Допустим мы получили два числа . Нам осталось только сравнить чья сумма цифр больше . Пишем :
if sum1 > sum2 then writeln('Сумма цифр числа : ', num1, ' больше чем ', num2 ) else if sum1 < sum2 then writeln('Сумма цифр числа : ', num2, ' больше чем ', num1 ) else writeln('Сумма цифр числа : ', num2, ' равна ', num1 ) ;
Вот и всё , но для наглядности можно вывести выше чему равна сумма цифр каждого числа .
Весь код программы :
uses crt ; var num1 , num2 , i , j , k , sum1 , sum2 : integer ; begin clrscr; {очищаем экран} randomize; {генератор случайных чисел} num1 := 100 + random(900); num2 := 100 + random(900); i := num1 div 100 ; j := num1 div 10 mod 10 ; k := num1 mod 10 ; sum1 := i + j + k ; i := num2 div 100 ; j := num2 div 10 mod 10 ; k := num2 mod 10 ; sum2 := i + j + k ; writeln('Сумма цифр числа : ', num1 , ' = ' ,sum1); writeln('Сумма цифр числа : ', num2 , ' = ' ,sum2); if sum1 > sum2 then writeln('Сумма цифр числа : ', num1, ' больше чем ', num2 ) else if sum1 < sum2 then writeln('Сумма цифр числа : ', num2, ' больше чем ', num1 ) else writeln('Сумма цифр числа : ', num2, ' равна ', num1 ) ; readln; end.