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