Раздел: Задачи / Простейшие /

Найти произведение цифр заданного четырехзначного числа

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

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

Условие задачи

Задача 6.1.2.4
Найти произведение цифр заданного четырехзначного числа

Задача простая, но, судя по количеству запросов в Интернете, далеко не все могут решить её самостоятельно. Вам советую всё-таки попробовать это сделать. А уже потом посмотреть решение.

Как найти произведение цифр числа

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

  1. Получить остаток от деления на 10. Это будет крайняя правая цифра числа.
  2. Получить остаток от деления на 100 и разделить результат на 10. Это будет вторая справа цифра числа.
  3. Получить остаток от деления на 1000 и разделить результат на 100. Это будет третья справа цифра числа.
  4. Выполнить целое деление на 1000. Это будет первая слева цифра числа.

По идее надо ещё проверить число, которое ввёл пользователь (если, конечно, мы предоставим ему такую возможность).

Так как число является четырёхзначным, то оно не может быть менее 1000 и более 9999. Вот это условие мы и должны проверить, прежде чем выполнять какие-то действия.

Также число может быть отрицательным. Но про знак числа в условиях задачи ничего не сказано. Поэтому будем считать, что оно положительное (в любом случае цифры числа не могут быть отрицательными, так что даже если допустить, что число будет отрицательным, то на результат это не повлияет, а придётся только добавить дополнительную проверку вхождения числа в диапазон -9999…-1000).

Ну а теперь решения на Паскале и С++.

Решение задачи 6.1.2.4 на Паскале
program multinum;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
var
  Num : word;   //Число
  D0  : word;   //Крайняя правая цифра числа
  D1  : word;   //Вторая справа правая цифра числа
  D2  : word;   //Третья справа цифра числа
  D3  : word;   //Крайняя левая цифра числа

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Write('Enter a 4-digit integer : ');
  ReadLn(Num);

  //Проверить правильность ввода данных
  if (Num < 1000) or (Num > 9999) then
    begin
      WriteLn('The number must be in the range 1000...9999');
      ReadLn;
      Exit;   //Выйти, если данные неправильные
    end;

  D0 := Num mod 10;
  D1 := (Num mod 100) div 10;
  D2 := (Num mod 1000) div 100;
  D3 := (Num div 1000);

  WriteLn('The digits of number :', D3:2, D2:2, D1:2, D0:2);
  Write(D3, ' * ', D2, ' * ', D1, ' * ', D0, ' = ');
  WriteLn(D3 * D2 * D1 * D0);

  WriteLn('The end. Press ENTER...');
  ReadLn;
end.

Решение задачи 6.1.2.4 на С++
#include 
#include 

using namespace std;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
unsigned short int Num;  //Число
unsigned short int D0;   //Крайняя правая цифра числа
unsigned short int D1;   //Вторая справа правая цифра числа
unsigned short int D2;   //Третья справа цифра числа
unsigned short int D3;   //Крайняя левая цифра числа

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
int main(int argc, char *argv[])
{
  cout << "Enter a 4-digit integer : ";
  cin >> Num;

  //Проверить правильность ввода данных
  if ((Num < 1000) || (Num > 9999))
  {
    cout << "The number must be in the range 1000...9999" << endl;
    system("PAUSE");
    return EXIT_SUCCESS;  //Выйти, если данные неправильные
  }

  D0 = Num % 10;
  D1 = (Num % 100) / 10;
  D2 = (Num % 1000) / 100;
  D3 = (Num / 1000);

  cout << "The digits of number : ";
  cout << D3 << ' ' << D2 << ' ' << D1 << ' ' << D0 << endl;
  cout << D3 << " * " << D2 << " * " << D1 << " * " << D0 << " = ";
  cout << D3 * D2 * D1 * D0 << endl;
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика