Составить программу, которая будет считывать введённое пятизначное число. После чего, каждую цифру этого числа необходимо вывести в новой строке.
В этой задаче нужно воспользоваться операцией — остаток от деления %, пример использования которой показан в статье — арифметические операции, в самом низу.
Деление числа на разряды Введите пятизначное число: 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;
}
Программа рабочая, копируйте код в свой проект и компилируйте. Результат работы программы можно увидеть ниже.
Введите положительное 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");
}
Кстати, работа программа зациклена с использованием меток а не циклов, это видно в коде. Вывод программы вы можете посмотреть ниже.
Деление числа на разряды Введите пятизначное число: 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
Комментарии
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; }