Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2015, 00:56   #1
eragorn2013
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию Массив. Как присвоить значения типа int за раз?

Здравствуйте.

Практикуюсь с массивами. Хочу написать код для консольного приложения, который переводит значение числа двоичной системы счисления в десятичную.

Есть массив int array[128]. Также есть число в двоичной системе: 1111011.

Мне нужно присвоить каждую единицу и ноль этого числа каждому элементу массива отдельно. Т.е. чтобы получилось следующее:

array[0]=1,
array[1]=1,
array[2]=1,
array[3]=1,
array[4]=0,
array[5]=1,
array[6]=1.

Но у меня, при выводе программы на экран, получается только отдельно присваивать каждое число. т.е. вот так:

Введите значение array[0]:_
Введите значение array[1]:_
Введите значение array[2]:_
Введите значение array[3]:_
Введите значение array[4]:_
Введите значение array[5]:_
Введите значение array[6]:_

ВОПРОС: можно ли как-то сделать, чтобы не нужно было вводить по одному числу, а так чтобы сразу введя 1111011 и нажав enter программа автоматически разбила эти числа по одному и распределила по элементам массива? Т.е. нужно чтобы получилось примерно вот так:

Введите значение array[]:1111011

//жмем enter и выводится результат:

array[0]=1,
array[1]=1,
array[2]=1,
array[3]=1,
array[4]=0,
array[5]=1,
array[6]=1.

Как это сделать?

Последний раз редактировалось eragorn2013; 07.04.2015 в 01:04.
eragorn2013 вне форума Ответить с цитированием
Старый 07.04.2015, 02:12   #2
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Код:
#include <vector>
#include <iostream>
#include <string>

using namespace std;


int main()
{
    vector<bool> array;

    string buf;
    cin >> buf;
    for(char ch : buf)
        array.push_back(ch - '0');

    for(bool val : array)
        cout << val;
    return 0;
}
220Volt вне форума Ответить с цитированием
Старый 07.04.2015, 02:25   #3
eragorn2013
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Код не рабочий. Компилятор выдает ошибки
eragorn2013 вне форума Ответить с цитированием
Старый 07.04.2015, 02:37   #4
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Какой компилятор?
220Volt вне форума Ответить с цитированием
Старый 07.04.2015, 04:00   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Есть массив int array[128]. Также есть число в двоичной системе: 1111011.
Зачем?
Число в двоичной системе - это не строка?
Строка - это уже массив, а символ - это целое число.

В массив bool может быть и есть смысл переводить (возможно будет удобней обрабатывать, а может быть и не очень). Но в массив int (как вы просите) - переводить смысла нет, т.к. профита никакого.

И еще, учти что vector<bool> (предложенный выше) работает по-особенному - там работает сжатие и каждый элемент занимает один бит и не все, что справедливо для обычного вектора работает с vector<bool>.
rrrFer вне форума Ответить с цитированием
Старый 07.04.2015, 07:28   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

int array[123] = { 1, 2, 3, ... };
waleri вне форума Ответить с цитированием
Старый 07.04.2015, 10:33   #7
eragorn2013
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Развернуто (но очень условно) написал как должна выглядить моя программа.

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

using namespace std;

int main()

{
    setlocale(LC_CTYPE,"Russian");



    char array[128];
    cout<<"Введите значение:";
    cin>>array;




    for(int i=0;array[i];i++)
    {

        cout<<array[i]<<"\n";
    }
    for(int i=0;i<8;i++)
    {

        if(array[i]==1)// тут я хотел описать, что если переменная типа char = символу "1", то "1"== 1 (переменной типа int)
        {
        array[i]=1;
        }
        if(array[i]==0)
        {
        array[i]=0;
        }
    }

    int a;
    int b;
    int c;
    int d;
    int e;
    int f;
    int g;


    a = array[0]*64;
    cout<<a;
    b = array[1]*32;
    cout<<b;
    c = array[2]*16;
    cout<<c;
    d = array[3]*8;
    cout<<d;
    e = array[4]*4;
    cout<<e;
    f = array[5]*2;
    cout<<f;
    g = array[6]*1;
    cout<<g;

    cout<<a<<"\n";
    cout<<b<<"\n";
    cout<<c<<"\n";
    cout<<d<<"\n";
    cout<<e<<"\n";
    cout<<f<<"\n";
    cout<<g<<"\n";

    int number;
    number=a+b+c+d+e+f+g;

    cout<<number;

    return 0;
}
тут косяк в том, что присвоить значения массиву (именно так, как я описывал выше) можно только при помощи типа char. Это мне сделать удалось. Но дальше эти значения мне нужно перемножать с числами типа int (* 64, * 32, * 16... и т.д.) и понятное дело, что результат перемножения выдает какие-то непонятные значения (именно поэтому мне нужны в массиве значения типа int). в конце переменная number должна быть = 123. В общем код этот получился косячным но, надеюсь, что смысл задуманного мне передать удалось. Как мне грамотно написать этот код?

Последний раз редактировалось eragorn2013; 07.04.2015 в 10:40.
eragorn2013 вне форума Ответить с цитированием
Старый 07.04.2015, 11:35   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Наверно так:
Код:
if(array[i]=='1')// тут я хотел описать, что если переменная типа char = символу "1", то "1"== 1 (переменной типа int)
        {
        array[i]=1;
        }
waleri вне форума Ответить с цитированием
Старый 07.04.2015, 13:11   #9
eragorn2013
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Спасибо. Пока что все получается. Но по ходу написания возникла еще одна загвоздка. Когда я вбиваю двоичное число, можно ли сделать так чтоб оно сохранилось в элементах массива наоборот? Т.е. ввожу 1111011, а сохраняет так:

array[0]=1
array[1]=1
array[2]=0
array[3]=1
array[4]=1
array[5]=1
array[6]=1
eragorn2013 вне форума Ответить с цитированием
Старый 07.04.2015, 14:37   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ктонить, объясните мне, убогому, накой икс тут ваще массив-то?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как присвоить значения кнопкам на Delphi 7? Pro100Serj Помощь студентам 1 26.01.2015 01:52
Как получить из MySQL данные типа int, double и др. Mackey_ C/C++ Базы данных 7 05.04.2013 09:27
Выборка значения из столбца типа INT mike_tihomirov SQL, базы данных 2 07.04.2011 21:31
как присвоить все три значения вектору В и вывести его как массив столбец при вызове функции Tomoa Microsoft Office Excel 8 08.03.2010 20:42
как присвоить map<string,int> m; нулю ? Olya90 Помощь студентам 5 30.09.2009 01:16