Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для shisik

Ветеран


Сообщения: 3307
Благодарности: 599

Профиль | Отправить PM | Цитировать


Цитата ALEVER:
После чего эти функции должны вернуть в мейн нужные значения, а именно: число(а)(которое(ые) подходит условию) »
Тогда без массивов никак, раз чисел может быть несколько. Как насчёт такого? Я здесь использовал библиотечную функцию pow для возведения в степень. Надеюсь, это не запрпещено?

Код: Выделить весь код
#include <iostream>
#include <cmath>

bool inArray(int *arr, int length, int number)
{
    for (int i = 0; i < length; ++i)
        if (arr[i] == number)
            return true;
    return false;
}

int filterRepeats(int *arr, int length, int *filtered)
{
    int count = 0;
    for (int i = 0; i < length; ++i)
        if (!inArray(filtered, count, arr[i])) {
            filtered[count] = arr[i];
            ++count;
        }
    return count;
}

int countNumbers(int *arr, int length, int number)
{
    int count = 0;
    for (int i = 0; i < length; ++i)
        if (arr[i] == number)
            ++count;
    return count;
}

int main()
{
    int arr[10] = {1, -7, -7, -5, 0, -2, -5, 0, -7, -4};
    int filtered[10];

    int uniqueCount = filterRepeats(arr, 10, filtered);

    for (int i = 0; i < uniqueCount; ++i) {
        int number = filtered[i];

        if (number >= 0 || number % 2 == 0) continue;

        int count = countNumbers(arr, 10, number);

        if (count < 2) continue;

        std::cout << "Number [" << number << "] is repeated [";
        std::cout << count << "] times. Result = [" << pow(number, count);
        std::cout << "]" << std::endl;
    }

    return 0;
}
Вывод, разумеется, можно заменить на fprint.

Последний раз редактировалось shisik, 19-04-2017 в 23:01. Причина: забыл про условие нечётности


Отправлено: 22:58, 19-04-2017 | #10