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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2023, 12:40   #1
faktor
Пользователь
 
Регистрация: 14.02.2023
Сообщений: 10
По умолчанию С++ количество элементов массива, делящегося на 7

Дан такой массив
Код:
int main() {
    int a[50];
    int p[50];

    p[0] = 12;
    a[0] = p[0] - 64;

    for (int i = 1; i < 50; i++)
    {
        p[i] = (p[i - 1] * 67 + 11) % 128;
        a[i] = p[i] - 64;
    }

    cout << "All Items of \"a\" array: " << '\n';
    for (int i = 0; i < 50; i++) cout << a[i] << " ";

    return 0;
}
Выходные данные массива:
All Items of "a" array:
-52 -17 24 -45 -60 -41 -48 -5 60 63 8 35 52 39 -64 -53 44 15 -8 -13 36 -9 48 27 28 -33 -24 -61 20 -57 32 -21 12 47 -40 1
9 4 23 16 59 -4 -1 -56 -29 -12 -25 0 11 -20 -49

Нужно дописать функцию рекурсии, передать туда наш массив что бы посчитать количество элементов, делящегося на 7: и вывести результат

помогите, объясните пожалуйста как это написать?
faktor вне форума Ответить с цитированием
Старый 03.03.2023, 13:22   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
// Долго объяснять что происходит в двух if
// Сначала проверяем количество элементов на равенство 0
// Потом проверяем, что i-ый элемент не кратен z
// А дальше складываем единички
int f(int *a, int n, int z) { return ( n == 0 ) ? 0 : f( a + 1, n - 1, z ) + (( *a % z ) ? 0 : 1 ); }

// в main
cout << endl << "Count = " << f(a, 50, 7) << endl;
macomics вне форума Ответить с цитированием
Старый 03.03.2023, 14:40   #3
faktor
Пользователь
 
Регистрация: 14.02.2023
Сообщений: 10
По умолчанию

macomics, А можно это сделать через if без объяснения
faktor вне форума Ответить с цитированием
Старый 03.03.2023, 16:19   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
int f(int *a, int n, int z) {
  int x = 0;
  if ( n == 0 )
    return x;
  x = f( a + 1, n - 1, z );
  if ( *a % z )
    return x;
  return x + 1;
}
macomics вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите программу, которая заполняет массив из N элементов целыми числами в диапазоне [ A , B ] и определяет количество элементов этого массива, у которых сумма цифр равна K . triplefake Паскаль, Turbo Pascal, PascalABC.NET 2 17.11.2020 11:29
Вычислить функцию у(x) = ах + в, где а и в - количество элементов массива А(I) лежащих в диапазоне (0,...,15) и (40,...,120) соответственно. Нахождение количества элементов массива, лежащих Okonnaya Rama Фриланс 4 22.10.2020 19:25
Количество элементов массива MadKiller JavaScript, Ajax 0 13.12.2012 14:40
количество элементов массива datgen Общие вопросы C/C++ 2 28.12.2011 03:14
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04