Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 05.04.2015, 17:36   #1
eragorn2013
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию Автоматическое ограничение массива

Добрый день. Подскажите, пожалуйста, по следующему вопросу.

Пытаюсь поупражняться с одномерными массивами, задача не сложная: нужно написать программку перевода из десятичной системы счисления в двоичную и результат вывести на экран. Вот такой незамысловатый код у меня получился:
Код:
#include <iostream>
#include <locale.h>

using namespace std;

int main()

{
    setlocale(LC_CTYPE,"Russian");

    int number;
    cout<<"Введите десятичное число:";
    cin>>number;

    int array[128];

    for(int i=0;i<128;i++)
    {
    array[i]=number%2;

    number/=2;
    }
    for(int i=128;i>0;i--)
    {
    cout<<array[i];
    }
    return 0;
}
проблема тут лишь одна, при выводе на экран результата в двоичной системе, выдает 128 значений, 6-7 значений которые присвоились (1101101 - например, те что мне нужны) и все остальные элементы массива тупо бессмысленные нули потому что значения им никакие не присваивались. Я понимаю, что можно ограничить массив размером до 7 элементов, а что если вывод результата получится больше 7 элементов? Число то в десятичной системе я могу ввести совершенно любое. Как сделать так, чтобы программа сама вычисляла сколько элементов было присвоено именно В ЭТОТ РАЗ и выдавала на экран только элементы которым были присвоены значения?

Последний раз редактировалось Stilet; 05.04.2015 в 17:52.
eragorn2013 вне форума   Ответить с цитированием
Старый 05.04.2015, 19:26   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Код:
#include <iostream>
#include <locale.h>

using namespace std;

int main()
{
    setlocale(LC_CTYPE,"Russian");

    cout<<"Введите положительное десятичное число: ";
    size_t number = 0;
    cin>>number;
    const size_t origin = number;

    char storage[128] = {};

    size_t len = 0;
    for(size_t i=0; i<128 && number!=0 ; ++i)    
        storage[i] = number%2,
        number/=2,
        ++len;

    cout<<"число "<< origin << " состоит из "<< len <<" битов: ";
    for(size_t i = 1; i != len+1; ++i) 
        cout<< static_cast<int>( storage[len - i] );
    cout<<std::endl;
    
}
_Bers вне форума   Ответить с цитированием
Старый 05.04.2015, 19:50   #3
eragorn2013
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Благодарю
eragorn2013 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое заполнение массива Delphi7 artem66rus Помощь студентам 3 30.01.2013 09:21
Автоматическое определение массива папок в bat файле d_adilet Помощь студентам 0 16.06.2012 18:24
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
Есть ли ограничение в 97-2010 версиях Excel ограничение на размер массива? clever77 Microsoft Office Excel 18 15.05.2011 00:50
ограничение даты Alexi Компоненты Delphi 4 21.04.2009 13:09


00:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.