Деление числа на разряды

Уровень сложности:

Составить программу, которая будет считывать введённое пятизначное число. После чего, каждую цифру этого числа необходимо вывести в новой строке.

В этой задаче нужно воспользоваться операцией — остаток от деления %, пример использования которой показан в статье — арифметические операции, в самом низу.

CppStudio.com
			Деление числа на разряды

Введите пятизначное число: 10819

1 цифра равна 1
2 цифра равна 0
3 цифра равна 8
4 цифра равна 1
5 цифра равна 9
#include <iostream>
using namespace std;
int main()
{
	setlocale (LC_ALL, "RUS");
	cout<<"\t\t\tДеление числа на разряды\n\n";
	int a;
	cout<<"Введите пятизначное число: ";
	cin>>a;
	cout<<"\n";
	if (a>=0&&a<=9999)
	{
		cout<<"Вы ввели неверное число. Число должно быть пятизначным.\n\n";
	}
	else {
		if (a>=100000)
	{
		cout<<"Вы ввели неверное число. Число должно быть пятизначным.\n\n";
	}
	else {

		cout<<"1 цифра равна "<<(a/10000)<<"\n";	
		cout<<"2 цифра равна "<<(a/1000)%10<<"\n";	
		cout<<"3 цифра равна "<<(a/100)%10<<"\n";	
		cout<<"4 цифра равна "<<(a/10)%10<<"\n";	
		cout<<"5 цифра равна "<<a%10<<"\n";	

	cout<<endl;
	return 0;
	}
	}
}

Есть еще одно решение этой задачи, исходник нам прислал — пользователь нашего сайта — Nikita. Его решение содержит оператор goto — это так называемая метка. Вообще считается, что использование меток в коде — плохой стиль программирования, и это на самом деле так. Но в целях обучения, я считаю, что данный исходник — очень даже ничего, поэтому и опубликовал его здесь.

#include <iostream>

using namespace std;

int main()
{
    int five;
    start:
    setlocale(LC_ALL,"Russian");
    cout << "Введите положительное 5-тизначное число: ";
    cin >> five;
    if (five>9999 && five<100000)
    {
        cout << " Первая цифра введенного числа: "       << (five/10000)%10 << endl;
        cout << " Вторая цифра введенного числа: "       << (five/1000)%10 << endl;
        cout << " Третья цифра введенного числа: "       << (five/100)%10 << endl;
        cout << " Четвертая цифра введенного числа: " << (five/10)%10 << endl;
        cout << " Пятая цифра введенного числа: "         << (five/1)%10 << endl;
    }
    else
    {
        cout << "\nВы ввели некорректное число - оно должно быть ПЯТИЗНАЧНЫМ (от 10000 до 99999).\nПовторите ввод, пожалуйста!" << endl;
        goto start;
    }
return 0;
}

Программа рабочая, копируйте код в свой проект и компилируйте. Результат работы программы можно увидеть ниже.

CppStudio.com
Введите положительное 5-тизначное число: 21013
 Первая цифра введенного числа: 2
 Вторая цифра введенного числа: 1
 Третья цифра введенного числа: 0
 Четвертая цифра введенного числа: 1
 Пятая цифра введенного числа: 3

Никитос, благодарю за исходник, спасибо. Твоя программа обязательно кому нибудь поможет.

Следующий исходник нам любезно предоставил пользователь zoomount.  Его программа разработана в MVS, так что, кто работает в среде разработки Microsoft Visual Studio, просто скопируйте этот код в редактор IDE и постройте проект. Ошибок никаких возникнуть не должно. Вот код:

#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	setlocale(LC_ALL,"RUS");
	cout << "\tДеление числа на разряды\n";
	int number;	
	start:
	cout << "\nВведите пятизначное число: ";
	cin >> number;
	if ((number>9999) && (number<=99999))
	for (int i = 0; i < 5; i++) // Цикл, который выделяет разряды числа
		cout << i+1 << "-я цифра = " << (number/static_cast<int>(pow ( 10 , ( 4 - i ))))%10 << endl;
	else
	{
		cout << "\nВы ввели неверное число!\n";
		goto start;
	}
	int menu_num;
	menu:
	cout << "\n1 - Продолжить работу\n2 - Выход\n\nСделайте выбор (1 или 2): ";
	cin >> menu_num;
	switch (menu_num)
		{
			case 1: {goto start; break;}
			case 2: {return 0; break;}
			default: {cout << "\nБудьте внимательнее!\n"; goto menu;}
		}
	system("pause");
}

Кстати, работа программа зациклена с использованием меток а не циклов, это видно в коде. Вывод программы  вы можете посмотреть ниже.

CppStudio.com
	Деление числа на разряды

Введите пятизначное число: 12345
1-я цифра = 1
2-я цифра = 2
3-я цифра = 3
4-я цифра = 4
5-я цифра = 5

1 - Продолжить работу
2 - Выход

Сделайте выбор (1 или 2): 1

Введите пятизначное число: 83421
1-я цифра = 8
2-я цифра = 3
3-я цифра = 4
4-я цифра = 2
5-я цифра = 1

1 - Продолжить работу
2 - Выход

Сделайте выбор (1 или 2): 2

Следующие статьи помогут вам в решении данной задачи:
Автор: Marienko L.
Дата: 01.10.2012
Поделиться:

Комментарии

  1. Lee Amstrong

    Через строку то попроще будет. Оставил возможность варьировать максимальное кол-во разрядов в числе путем простого добавления в вектор «names» новых элементов.

    #include <iostream>
    #include <string>
    #include <vector>
    
    int main(int argc, char const *argv[]) {
       std::vector<std::string> names {{"Первая", "Вторая", "Третья", "Четвертая", "Пятая"}};
       unsigned int number;
       std::cout << "Эй ты, говна кусок, число введи: ";
       std::cin >> number;
       std::string s_number = std::to_string(number);
       if (s_number.size() > names.size()) {
          std::cout << "Ты шо борзый? Максимальное кол-во чисел в числе: " << names.size() << '\n';
          return -1;
       }
       for (size_t i = 0; i < s_number.size(); i++) {
          std::cout << names[i] << " цифра числа: " << s_number[i] << '\n';
       }
       return 0;
    }

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.