Вычисления и вывод сделать в разных функциях в СИ

Только начал изучать С, так что сильно не ругайте) В общем нужно найти числа оканчивающиеся на 0 и вывести их номер на экран. Но сделать это всё в разных функциях.

void vvod(int A[10], int i) {
    srand(time(NULL));
    for (i = 0; i < 10; i++) {
        *(A + i) = rand();

    }
}

void vivod(int i, int A[10]) {
    printf("Массив из 10 чисел:\n");
    for (i = 0; i < 10; i++) {
        printf("%d) %d\n", i + 1, *(A + i));
    }

}
void raschot1(int i, int A[10], int masi[10], int N) {
    N = 0;
    for (i = 0; i < 10; i++) {
        if (*(A + i) % 10 == 0) {
            masi[N] = i + 1;
            N++;
        }
    }
}
void vivod1(int i, int masi[10], int N) {
    printf("Число оканчивающиеся на 0 под номером: %d \n", masi[N]);
    
}

Вроде придумал что-то, но проблема в том, что выводится только один номер. А чисел оканчивающихся на 0 может быть много (оно и понятно). Но как это сделать не знаю. Прошу помощь.


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

Автор решения: Виктор

Код для изучения:

void vvod(int *A) {
    int i;
    srand(time(NULL));
    for (i = 0; i < 10; i++) {
        *(A + i) = rand();
    }
}

void vivod(int *A) {
    int i;
    printf("Массив из 10 чисел:\n");
    for (i = 0; i < 10; i++) {
        printf("%d) %d\n", i + 1, *(A + i));
    }
}

int raschot1(int *A, int *masi) {
    int N = 0;
    int i;
    for (i = 0; i < 10; i++) {
        if (*(A + i) % 10 == 0) {
            masi[N] = i + 1;
            N++;
        }
    }
    return N;
}
void vivod1(int *masi, int N) {
    int i;
    for (i = 0; i < N; i++) {
        printf("Число оканчивающиеся на 0 под номером: %d\n", masi[i]);
    }
}

int main(int argc, char *argv[]) {
    int A[10], arr[10];
    int N;
    vvod(A);
    vivod(A);
    N = raschot1(A, arr);
    vivod1(arr, N);
    return 0;
}
→ Ссылка