Ответы пользователя по тегу Массивы
  • С++. Как сложить элементы двух массивов по индексу?

    @WAR_VIK
    Можно вот так:
    #include <iostream>
    
    int main() {
        int arr[]{1,2,3,4};
        int arr2[]{5,6,7,8,9,10};
        int len = std::size(arr);
        int len2 = std::size(arr2);
        int len3 = len > len2 ? len : len2;
        int res[len3];
        int sum{0};
        for(int i{0}; i < len3; ++i) {
            sum = i < len ? arr[i] : 0;
            sum += i < len2 ? arr2[i] : 0;
            res[i] = sum;
        }
        for(int el : res) std::cout << el << ' ';
        return 0;
    }
    Ответ написан
    Комментировать
  • Что не так с кодом,почему пишет ошибка?

    @WAR_VIK
    Вот так можно решить Вашу задачу:
    #include <iostream>
    #include <ctime>
    
    void fillRandom(int* arr, int size, int min, int max) {
        for(int i{0}; i < size; ++i) {
              arr[i] = min + (rand() % ((max - min) + 1));
        }
    }
    
    int main() {
          srand(time(NULL));
          int len{10}, min{10}, max{99};
          int array[len];
          fillRandom(array, len, min, max);
          for(int& i : array) std::cout << i <<' ';
          return 0;
    }

    Можно и по модному - через лямбду:
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <ctime>
    
    void fill_random(std::vector& v, int min, int max) {
           int i{0};
           auto lambda = [&](int index){ v[i] = min + (rand() % ((max - min) + 1)); ++i; };
           std::for_each(v.begin(), v.end(), lambda);
    }
    
    int main() {
           srand(time(NULL));
           int size{10}, min{10}, max{99};
           std::vector<int> vec(size);
           fill_random(vec, min, max);
           for(int& i : vec) std::cout << i << ' ';
           return 0;
    }
    Ответ написан
    2 комментария