Как проверить кратность числа в цикле (не используя if)

Дан массив A размера N и целое число K (1 ≤ K ≤ N). Вывести элементы массива с порядковыми номерами, кратными K: AK, A2·K, A3·K, … . Условный оператор не использовать.

Не могу сообразить как вывести номера массива, которые кратны к, не используя Условный оператор if

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;

int main() {
    Setlocale(LC_ALL, "rus";
    int n, k, i;
    int *A=new int[n];

    cout << "Введите размер массива: ";
    cin >> n;
    cout << "Введите целое число к: ";
    cin >> k;

    cout << "\nМассив: " << endl;
    srand(time(nullptr));
    for (i=0; i<n; i++){
        A[i]=1+rand()%10;
        cout << "arr["<< i <<"] = " << A[i] << endl;
    }

    cout << "\nМассив с элементами кратными к: " << endl;
    for(i=0; i<n; i+=k)
        cout<<A[i]<<endl;

    getchar();
    return 0;
}

Программа по итогу выдает рандомные числа в конце


Ответы (1 шт):

Автор решения: Mikhailo

У вас создается массив какого-то неизвестного размера

int n, k, i;
int *A=new int[n];   // Чему в этот момент равно n?

И только потом вы это n указываете.

cout << "Введите размер массива: ";
cin >> n;

Получается как минимум UB.

Сначала выясните, какой массив вам нужен, а уже потом его создавайте.

→ Ссылка