17 / 17 / 13
Регистрация: 19.11.2014
Сообщений: 156
1

Вывести все цифры введенного натурального числа в обратном порядке

06.01.2015, 00:06. Показов 9470. Ответов 16
Метки нет (Все метки)

Помогите написать программу на С++. Вводится натуральное число. Вывести все цифры числа в обратном порядке. Например (есть 4826, должно получиться 6284). Вот, что-то писал, но уж сильно намутил(

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <conio.h>
 
using namespace std;
 
int main()
{   setlocale (LC_ALL, "Russian");
 
const int n(4); 
float a[n];
 
for (int i=0; i<n; i++){    
cin>>a[i];}
 
cout<<"Mасив :\n";
for (int i=0; i<n; i++){
    cout<<a[i];}
 
cout << "\tОбработано: \n";
for (int i=n; i>0; i-=1){
    cout<<a[i];}
 
    _getch();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2015, 00:06
Ответы с готовыми решениями:

Рекурсия: вывести все цифры заданного натурального числа в обратном порядке
дано натуральное число N. выведите все цифры по одной, в обратном порядке, разделяя их пробелами...

Вывести числа в обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке
Чтобы Вовочка не скучал на уроке информатики, Иван Иваныч специально для него к каждому уроку...

Рекурсивные функции: вывести цифры натурального числа n в обратном порядке
Помогите пожалуйста решить!!! Рекурсивно описать функцию rev_print (n), которая выводит цифры...

Вывести все цифры числа по одной, в обратном порядке
Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке,...

16
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
06.01.2015, 00:14 2
Цитата Сообщение от posol_7 Посмотреть сообщение
Помогите написать программу на С++. Вводится натуральное число. Вывести все цифры числа в обратном порядке. Например (есть 4826, должно получиться 6284). Вот, что-то писал, но уж сильно намутил(

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <conio.h>
 
using namespace std;
 
int main()
{   setlocale (LC_ALL, "Russian");
 
const int n(4); 
float a[n];
 
for (int i=0; i<n; i++){    
cin>>a[i];}
 
cout<<"Mасив :\n";
for (int i=0; i<n; i++){
    cout<<a[i];}
 
cout << "\tОбработано: \n";
for (int i=n; i>0; i-=1){
    cout<<a[i];}
 
    _getch();
    return 0;
}
Почему a[n] у вас float? Мы же вроде в целых числах. Зачем вы считываете 4 числа, дано ведь одно! Его и надо считывать.
Ну и дальше решите сначала задачу попрошу: подумайте, как у четырёхзначного числа вычислить последнюю цифру.

P.s. Последний элемент массива имеет индекс n-1, последний цикл должен с него начинаться. Но это пока не очень важно.
1
Dimension
588 / 456 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
06.01.2015, 00:25 3
C++
1
2
3
4
string s;
cin >> s;
reverse(s.begin(),s.end());
cout << s;
2
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
06.01.2015, 00:30 4
Цитата Сообщение от ltkj Посмотреть сообщение
Почему a[n] у вас float? Мы же вроде в целых числах. Зачем вы считываете 4 числа, дано ведь одно! Его и надо считывать.
Ну и дальше решите сначала задачу попрошу: подумайте, как у четырёхзначного числа вычислить последнюю цифру.

P.s. Последний элемент массива имеет индекс n-1, последний цикл должен с него начинаться. Но это пока не очень важно.
Попрошу = попроще
0
17 / 17 / 13
Регистрация: 19.11.2014
Сообщений: 156
06.01.2015, 00:31  [ТС] 5
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "rus");
 
      unsigned long long int x, k;
      cout<<"Введите число: "; cin>>x;
      cout << "Получили: ";
      while(x>0)
      {
          k=x%10;
          x=x/10;
          cout << k;
      }
getch();
return 0;
}
0
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
06.01.2015, 00:34 6
Цитата Сообщение от posol_7 Посмотреть сообщение
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "rus");
 
      unsigned long long int x, k;
      cout<<"Введите число: "; cin>>x;
      cout << "Получили: ";
      while(x>0)
      {
          k=x%10;
          x=x/10;
          cout << k;
      }
getch();
return 0;
}
Извиняюсь, а если не секрет, почему выбор пал именно на unsigned long long int?
0
17 / 17 / 13
Регистрация: 19.11.2014
Сообщений: 156
06.01.2015, 00:49  [ТС] 7
Цитата Сообщение от ltkj Посмотреть сообщение
Извиняюсь, а если не секрет, почему выбор пал именно на unsigned long long int?
Для работы с большими числами.
0
0 / 0 / 5
Регистрация: 05.01.2015
Сообщений: 30
06.01.2015, 00:50 8
Лучший ответ Сообщение было отмечено posol_7 как решение

Решение

Цитата Сообщение от posol_7 Посмотреть сообщение
Помогите написать программу на С++. Вводится натуральное число. Вывести все цифры числа в обратном порядке. Например (есть 4826, должно получиться 6284). Вот, что-то писал, но уж сильно намутил(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Rus");
    int n = 0, b = 0;
    cout << "Введите число: ";
    cin >> n;
    while(n)
    {
        b = (b * 10) + n % 10;
        n /= 10;
    }
    cout << "\n\nЧисло перевертыш: ";
    cout << b;
    getch();
    return 0;
}
0
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
06.01.2015, 00:53 9
Цитата Сообщение от posol_7 Посмотреть сообщение
Для работы с большими числами.
Да это понятно. Меня просто смутил ваш резкий прогресс в программировании а вообще если задача с какой-то онлайн-системы, там обычно ограничения пишут. Их лучше указывать.

И да, алгоритм dimension работает на гораздо бОльших числах, если что
0
17 / 17 / 13
Регистрация: 19.11.2014
Сообщений: 156
06.01.2015, 00:54  [ТС] 10
Цитата Сообщение от Nuckles Посмотреть сообщение
while(n)
* * {
* * * * b = (b * 10) + n % 10;
* * * * n /= 10;
* * }
Спасибо, работает. Можете объяснить вот эту часть?
0
0 / 0 / 5
Регистрация: 05.01.2015
Сообщений: 30
06.01.2015, 00:58 11
Цитата Сообщение от posol_7 Посмотреть сообщение
Спасибо, работает. Можете объяснить вот эту часть?
На каждом шаге берём остаток от деления числа на 10, получая последнюю цифру и добавляя в конец нового числа.
0
17 / 17 / 13
Регистрация: 19.11.2014
Сообщений: 156
06.01.2015, 00:59  [ТС] 12
Цитата Сообщение от ltkj Посмотреть сообщение
Да это понятно. Меня просто смутил ваш резкий прогресс в программировании а вообще если задача с какой-то онлайн-системы, там обычно ограничения пишут. Их лучше указывать.
И да, алгоритм dimension работает на гораздо бОльших числах, если что
ок, спасибо) я пару месяцев назад только на паскале писал. решил наперед подучить си: смотрел видеоуроки, читал литературу, вот до практики добрался...
0
0 / 0 / 5
Регистрация: 05.01.2015
Сообщений: 30
06.01.2015, 01:01 13
ltkj, зачем использовать массив?
0
5 / 5 / 2
Регистрация: 07.05.2014
Сообщений: 101
06.01.2015, 01:02 14
Для работы с большими числами в таких задачках, как по мне, лучше использовать символьную строку.. Дописал проверку на число, кота на клавиатуру запустил походить - и будет ваше многомиллионное число. Да и выводить каждый раз после выделения цифры ее так же не понимаю зачем. Выделить их в массив и либо рекурсивно вызывать до последнего индекса массива и потом выводить, либо зразу поставить "пока счетчик не ноль" и от счетчик минус один отталкиваться...
P.S. было адресовано posol_7
0
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,726
06.01.2015, 01:02 15
Цитата Сообщение от posol_7 Посмотреть сообщение
Спасибо, работает. Можете объяснить вот эту часть?
а че там объяснять это очевидно
b результируешее число
допустим изначально у нас 25 b=0
C++
1
2
3
4
b = (b * 10)/* умножаем на 10, можно сказать сдвигаем*/+ n % 10/* добавляем младший разряд из n */ ;
b = (0 * 10)/*0*10=0*/+ n % 10/*25%10=5*/  ; итого b=5
n /= 10;
n = 25/10=2;
второй проход
C++
1
2
3
b = (5 * 10)/* 5*10=50*/+ n % 10/*2%10=2*/  ; итого b=52
n /= 10;
n = 2/10=0;
больше проходов нет
в b=52
2
0 / 0 / 5
Регистрация: 05.01.2015
Сообщений: 30
06.01.2015, 01:02 16
Цитата Сообщение от posol_7 Посмотреть сообщение
ок, спасибо) я пару месяцев назад только на паскале писал. решил наперед подучить си: смотрел видеоуроки, читал литературу, вот до практики добрался...
Пожалуста
0
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
06.01.2015, 01:05 17
Цитата Сообщение от Nuckles Посмотреть сообщение
ltkj, зачем использовать массив?
А где я его предлагал использовать? Моя цель не выложить готовое решение, а подвести человека к нему тот коммент про индекс последнего специально поместил под p.s. и написал дальше, что это не очень важно, ибо в другой задаче такая ошибка обязательно встретится, если о ней не рассказать сейчас.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2015, 01:05
Помогаю со студенческими работами здесь

Вывести цифры введенного числа через пробел в обратном порядке
С использыванием цикла while 3. Написать программу, которая выводит на экран все цифры...

Вывести числа обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке
Добрый день. Не могу понять алгоритм решения данной задачи, помогите пожалуйста. Заданы пять...

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

Вывести все цифры числа по одной, в обратном порядке
Задача на рекурсию. Дано натуральное число N. Выведите все его цифры по одной, в обратном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru