Как сложить два массива, но не поэлементно?

Как сложить два массива,что получить третий?Выбор элементов для сложения должен происходить в зависимости от числа которое должно получиться (t1-массив единиц, t2-массив десятков).

const unsigned char t1[10] =
{
    0b00000000, // 0 
    0b00000001, // 1 
    0b00000010, // 2 
    0b00000011, // 3 
    0b00000100, // 4 
    0b00000101, // 5 
    0b00000110, // 6 
    0b00000111, // 7 
    0b00001000, // 8 
    0b00001001, // 9 
};
const unsigned char t2[10] =
{
    0b00000000, // 0
    0b00010000, // 1
    0b00100000, // 2
    0b00110000, // 3
    0b01000000, // 4
    0b01010000, // 5
    0b01100000, // 6
    0b01110000, // 7
    0b10000000, // 8
    0b10010000, // 9
};

Я не понял. Я вот уже шесть минут перечитываю и очень плохо понимаю.

В итоговом третьем массиве 20 элементов?

Выбор элементов для сложения должен происходить в зависимости от числа которое должно получиться (t1-массив единиц, t2-массив десятков).

Это как? Я читаю и не понимаю.

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

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

А оказалось, что проблема-то вообще не в том, что было написано.

Вот маленькая программка. Функция combo() делает нужное тебе преобразование для положительных двузначных чисел. И никакие массивы здесь не нужны.

#include <iostream>
#include <iomanip>

using namespace std;

unsigned char combo(int temperature) {
    return (temperature / 10 << 4) | (temperature % 10);
}


int main() {
    int t;
    cout << "temperature = ";
    cin >> t;

    if (t < 0 || t > 99) {
        cout << "invalid temperature" << endl;
        exit(EXIT_FAILURE);
    }

    cout << hex << (unsigned int)combo(t) << endl;  // вывод в шестнадцатиричном виде!

    return EXIT_SUCCESS;
}

Вы не поняли. У меня есть число 31 в двоичном коде оно выглядит так — 0b00011111.Мне нужно,чтоб оно преобразовалось в элементы массивов t1[2](единицы) , t2[4](десятки) и складывались в одну переменную, которую я дальше буду использовать.

chyslo

odynyci

desyatky = chyslo/10

odynyci = chyslo-desyatky*10

Якось так напевне, для
початку. Я мабудь зараз допишу толком і скомпілюю. Нічого, що я не російською,
що б мені помилки не правити розмірковуючи?
Якщо що, я якось перепишу.

Maxi_Man, думаю, что я понял правильно ))

Просто я считаю, что не имеет смысла держать два массива констант: первый числа от 0 до 9 и второй числа от 0 до 90 с шагом в 10.

То что ты их написал в двоичном виде — ничего не значит. Кстати такая запись: 0b00000001 не откомпилируется. С бОльшим успехом их можно записать в десятичном, восьмеричном или 16-ричном виде — все равно внутри программы они будут храниться в двоичном виде. Это во-первых.

Во-вторых, эти массивы вообще не нужны.

Я написал функцию, которая делает нужное тебе преобразование. Если взять твою магическую температуру 31, то...

  1. делим 31 нацело на 10, получаем 3 0b00000011
  2. это 3 сдвигаем на 4 разряда влево, получаем 0b00110000 (узнал 3 из массива t2?)
  3. считаем остаток от деления 31 на 10, получаем 1 0b00000001 (узнал 1 из массива t1?)
  4. «складываем в одну переменную» полученное на шаге 2 и на шаге 3, получаем 0b00110001 (или 0x31, или в десятичной системе счисления 49).

Dmy, если я правильно понял твою мову, то техничнее будет

odynyci = chyslo % 10

Пожалуйста пиши по-русски. А то

Нічого, що я не російською, що б мені помилки не правити розмірковуючи?

переводится как

Ничего, что я не русский, что бы я не редактировать медитации?

(c) Bing Переводчик

Вот теперь понятно))) Всем спасибо за ответы, особенно,Вам уважаемый Фтьiкай.

Ну да... Ржач!!

Как то так, наверное, для начала. Я наверное сичас допишу толком и скомпилюю. Ничего, что я не русским,
что бы мне ошибки не правити раздумывая(над ошибками)?
Если что, я как небудь перепишу.

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

Не знаю, хоть примерно то, или нет.

#include <iostream>



//odynyci

//desyatky = chyslo/10

//odynyci = chyslo-desyatky*10

int main()
{
   int chyslo = 0, N = 1, desyatky = 0, odynyci = 0, *Array1=NULL, *Array10=NULL;

   std::cout << "Vvedyt N: ";
   std::cin >> N;
   Array1 = new int [N+1]; 
   Array11 = new int [N+1];

    for(int i = 0; i < N; i++)
    {

   std::cout << "Vvedyt chyslo: ";
   std::cin >> chyslo;

   desyatky = chyslo/10;
   odynyci = chyslo-desyatky*10;

   Array1[i]=odynyci; Array1[i]=desyatky;

   }



   for(int i = 0; i < N; i++){

   std::cout << Array1;
   std::cout << Array10;

    }

   return 0;
}

Не сразу ответил- то мама выйди, я полы помыю, то картошки почисть, то мне посмотри то, это, то пробки выкрути, а я же из винды выхожу, иногда так свет мигает... То за хлебом, то я в ванну, под прохладный душ. То я уже картинки смотрю, телок грудастых.

Жара к слову — первый такый день за год — весь день 35. Ночь такая же, со лба течет не переставая. Вот щас
загримели — я не ждал, и льет с шумом, очинь неровно, словно душ кто каждые пол- минуты включаит и выключаит. Пречем гроза строго над городом. Шумят тополя.

odynyci = chyslo % 10

А, ну да, правда!! Точно!

Я не все элементы плюсов помню!

Гроза ушла на север. Мигает ослепительно- бело — голубым каналы молнии и плавно гаснут красноватым огнем. Фантастическая свежесть и тишина с запахом тополей. Я могу сам переводить на русский и править в рукопашную кривости. Я уже купаться не полезу, задрало.

И снова с шумом льет, ровно и сильно. Спать трудно.

Какая звонкая разыгралась гроза, офигеть!!

Dmy, на хрена тебе плюсы? Тебе в литературный надо. Талант однако грешно в землю закапывать ))

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.