Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
1

Разрядность(нумерация) элементов числа

26.07.2016, 14:10. Просмотров 1202. Ответов 23
Метки нет (Все метки)

Я написал такую вот прогу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
void main()
{
    int a=0, i, n, s;
    cin>>n;
    for(i=0;i<=n;i++)
    {
        s = n%10;
        n /= 10;
        cout<<"a-"<< a <<"="<< s <<endl;
        a++;
    }
    system("pause");
}
Но в ней кое что не так работает как мне нужно а именно! Во время печати элементов числа они(элементы) печатаются с конца т.е.
к примеру возьмём число (596)

а-0 = 6.
а-1 = 9.
а-2 = 5.

Т.е. понимаете должно выдать другое.

а-0 = 5.
а-1 = 9.
а-2 = 6.


И всё это при условии что пользователь может вводить любое число!

Добавлено через 4 минуты
только что обнаружил что прога не обрабатывает числа больше 3-ёх значных.

Добавлено через 2 минуты
Исправил, написал вместо цикла for(i=0;i<=n;i++) на седьмой строке вот это while (n!=0)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2016, 14:10
Ответы с готовыми решениями:

Определить разрядность числа
Не получается решить задачи.... 1)Дано целое число. Если оно является однозначным, вывести число...

Определить разрядность числа
Добрый день, написал функцию для определения разрядности числа, однако отказывается работать....

Определить разрядность десятичного числа
2.Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их...

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

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

23
zss
Модератор
Эксперт С++
8105 / 7240 / 4507
Регистрация: 18.12.2011
Сообщений: 19,144
Завершенные тесты: 1
26.07.2016, 14:11 2
Цитата Сообщение от Maxim09 Посмотреть сообщение
прога не обрабатывает числа больше 3-ёх значных
У Вас цикл до n, которое Вы меняете
C++
1
 for(i=0;n!=0;i++)
А в принципе i Вам здесь ни к чему
C++
1
while(n!=0)
1
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 14:14  [ТС] 3
Но основная проблема остаётся как сделать так чтоб очерёдность печати элементов числа была не с низу вверх а с верху в низ. Как я уже указывал выше.
0
zss
Модератор
Эксперт С++
8105 / 7240 / 4507
Регистрация: 18.12.2011
Сообщений: 19,144
Завершенные тесты: 1
26.07.2016, 14:23 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    int n;cin>>n;
    string res;
    while(n!=0)
    {
        char t = '0'+n%10;
        res+=t;
        n /= 10;
    }
    reverse(res.begin(),res.end());
    cout<<res<<endl;
    system("pause");
    return 0;
}
2
26.07.2016, 14:23
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 14:30  [ТС] 5
Извините но по моему что-то не то, нужно было пронумеровать элементы числа.

Добавлено через 1 минуту
Но если можно добавьте комментарии к проге.
0
shilko2013
250 / 227 / 185
Регистрация: 02.04.2016
Сообщений: 894
Завершенные тесты: 2
26.07.2016, 14:37 6
Лучший ответ Сообщение было отмечено Maxim09 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main() {
    
    int n;
    cin >> n;
    vector<int> v;
    while (n > 0) {
        v.push_back(n % 10);
        n /= 10;
    }
    int j = 1;
    for (int i = v.size() - 1; i > -1; --i) {
        cout << j << "ый разряд = " << v[i] << endl;
        ++j;
    }
    return 0;
}
Добавлено через 2 минуты
Кстати, можно стрингом...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
int main() {
int n;
    cin >> n;
    string s;
    while (n > 0) {
        s += char('0'+n % 10);
        n /= 10;
    }
    reverse(s.begin(), s.end());
    for (int i = 0; i < s.size(); ++i)
        cout << i+1 << "ый разряд = " << s[i] << endl;
    End(start_time);
    return 0;
}
Добавлено через 12 секунд
Как у zss
2
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 14:41  [ТС] 7
Спс за ответы но не могли бы вы написать комментарии напротив строк в программах.
0
shilko2013
250 / 227 / 185
Регистрация: 02.04.2016
Сообщений: 894
Завершенные тесты: 2
26.07.2016, 14:47 8
Лучший ответ Сообщение было отмечено Maxim09 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream> //подключаем библиотеки
#include<algorithm>
using namespace std;
int main() {
int n;
    cin >> n; //читаем число
    string s;
    while (n > 0) {
        s += char('0'+n % 10); //число превращаем в строку
        n /= 10;
    }
    reverse(s.begin(), s.end()); //переворачиваем строку
    for (int i = 0; i < s.size(); ++i) //печатаем по очереди всю строку
        cout << i+1 << "ый разряд = " << s[i] << endl;
    return 0;
}
2
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 15:00  [ТС] 9
Честно говоря я пока что не знаю как работают следующие товарищи
C++
1
2
3
('0'+n % 10)
reverse(s.begin(), s.end())
s.size();
И потому был-бы очень благодарен вам за объяснения оных или ссылку на сайт с пояснениями.

Добавлено через 37 секунд
Т.е. принцип работы поясните мне.
0
SpBerkut
Объявлятель переменных
949 / 275 / 276
Регистрация: 24.09.2011
Сообщений: 1,009
Завершенные тесты: 2
26.07.2016, 15:06 10
Вариант без STL и string.
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
#include<iostream>
 
int main() {
    int n, r=0, l=0, i=0;
    std::cin >> n;
    r = n;
    while (r%10 == 0) { //определяем число нулей в конце
        l++;
        r/=10;
    }
    r = 0;
    while (n>0) { //переворачиваем число
        r*=10;
        r+=n%10;
        n/=10;
    }
    while (r>0) { //выводим разряды перевёрнутого числа
        std::cout << "a-" << i++ << " = " << r%10 << "\n";
        r/=10;
    }
    while (l-->0) { //дописываем нули, если они есть
        std::cout << "a-" << i++ << " = 0\n";
    }
    return 0;
}
2
Ferrari F1
793 / 522 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 15:07 11
Maxim09,
Цитата Сообщение от Maxim09 Посмотреть сообщение
C++
1
('0'+n % 10)
n % 10 - последняя цифра числа

Чтобы представить цифру в виде символа, нужно добавить к нему целое число 30 (код '0' имеет значение целого числа 30 в ascii)
http://book.itep.ru/10/ascii.htm
1
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 15:28  [ТС] 12
Благодарю всех за ответы но у меня всё равно целое море вопросов...поищу в каких нибудь книжках.
А по каким темам посоветуйте мне пройтись чтоб стало ясно что тут и как?
0
Overloading
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
26.07.2016, 15:45 13
Цитата Сообщение от Maxim09 Посмотреть сообщение
Благодарю всех за ответы но у меня всё равно целое море вопросов...поищу в каких нибудь книжках.
А по каким темам посоветуйте мне пройтись чтоб стало ясно что тут и как?
Можно так если я все правильно понял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int myArray[5]; // Массив 5 элелемнов 
 
    int i;
    for ( i=0; i<5; i++) // Цикл заполнения массива
    {
        cout << "Value for myArray[" << i << "]= ";
        cin >> myArray[i]; // Считываем число с клавиатуры.
    }
    for (i = 0; i<5; i++)
        cout << i << ":" << myArray[i] <<endl; // Выводим массив циклом.
    return 0;
}
Результат.

Value for myArray[0]= 5
Value for myArray[1]= 9
Value for myArray[2]= 6
Value for myArray[3]= 5
Value for myArray[4]= 9
0:5
1:9
2:6
3:5
4:9
Press any key to continue . . .
1
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 15:49  [ТС] 14
Overloading, почти но не совсем так!
0
Overloading
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
26.07.2016, 15:52 15
Без массива имеется ввиду?
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 16:05  [ТС] 16
Нет я имел в виду нумерация элементов числа!
Т.е. 52 ввели
1 эл числа = 5
2 эл числа = 2
вот что требовалось! Но у меня не так вышло а получилось вот как
1 - 2
2 - 5
т.е. наоборот (снизу вверх).

Добавлено через 1 минуту
Господа товарищи помогли советами но т.к. я новичок совсем и к стыду своему почти половины не понял
0
Overloading
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
26.07.2016, 16:10 17
Цитата Сообщение от Maxim09 Посмотреть сообщение
Нет я имел в виду нумерация элементов числа!
Т.е. 52 ввели
1 эл числа = 5
2 эл числа = 2
вот что требовалось! Но у меня не так вышло а получилось вот как
1 - 2
2 - 5
т.е. наоборот (снизу вверх).
Добавлено через 1 минуту
Господа товарищи помогли советами но т.к. я новичок совсем и к стыду своему почти половины не понял
Цитата Сообщение от Maxim09 Посмотреть сообщение
Overloading, почти но не совсем так!
Ну так естественно 596 / 10 = 59,6 6 - первое число. и т.д
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 16:12  [ТС] 18
А вот как так сделать чтоб было как я хочу
Чуть выше описали и написали но увы и ах мая не панимай
0
Overloading
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
26.07.2016, 16:42 19
Цитата Сообщение от Maxim09 Посмотреть сообщение
А вот как так сделать чтоб было как я хочу
Чуть выше описали и написали но увы и ах мая не панимай
Ну тогда наверо так. Да и цикл не нужен Но это для 3х значных чисел, у 2х знычных 1е будет 0.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main()
{
    int n, n3, n2, n1;
    cin>>n;
        n1 = n/100;
        n2 = n%100/10;
        n3 = n%10;  
        cout<<"a-0"<<"="<< n1 <<endl;
        cout<<"a-1"<<"="<< n2 <<endl;
        cout<<"a-2"<<"="<< n3 <<endl;
    return 0;
}
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
26.07.2016, 16:56  [ТС] 20
...Ну это уж совсем простенький вариант
0
26.07.2016, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 16:56

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

Массив, в котором возможна нумерация элементов не с нуля
Нужно написать класс, описывающий массив со смещенной нумерацией элементов (в котором возможна...

Переставить соседние элементы массива: 1-й со 2-м, 3-й с 4-м и т.д. Нумерация элементов начинается с единицы
Входные данные Первая строка содержит размер массива N . Во второй строке через пробел задаются N...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru