Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перенос части кода в функцию пользователя

Ответить
Настройки темы
C/C++ - Перенос части кода в функцию пользователя

Новый участник


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

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


Доброго времени суток.
Есть одномерный массив из 10 элементов (положительных и отрицательных), которые генерируются рандомно.
Ищется произведение одинаковых отрицательных нечетных элементов.
Есть верно работающий код:
Код: Выделить весь код
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
 
int main() {
    system("cls");;
    int ARR[10], i, j, k, n, P;
    srand(time(NULL));
 
    printf("\t\t\t\tARRAY\n");
    for(i=0; i<10; i++) {
        ARR[i]=rand() % 11 - 7;
        printf("%i\t", ARR[i]);
    }
    
    printf("\n");
 
    for (i = 0; i < 10; i++) {
        if (ARR[i] < 0 && ARR[i]%2 != 0) {
            j = 0;
            while (j < i && ARR[j] != ARR[i]) j++;
            if (j == i) {
                n = 0;
                for (k = i + 1; k < 10; k++) {
                    if (ARR[k] == ARR[i]) n++;
                }
 
                if (n != 0) {
                    P = ARR[i];
                    for (k = 0; k < n; k++) P *= ARR[i];
 
                        printf("\nNumber [%d] is repeated [%d] times. Result = [%d]", ARR[i], n+1, P);
                }
            }
        }
    }
    return 0;
}
Например, для ряда:
1 -7 -7 -5 0 -2 -5 0 -7 -4
Получаем:
Number [-7] is repeated [3] times. Result = [-343]
Number [-5] is repeated [2] times. Result = [25]

Задача стоит вывести тоже самое, но использовав функции пользователя. Т.к. ф-ция может возвращать только лишь 1 значение, то соответственно выходит, что нужно 3 таких функции, одна вернет повторяющееся число, вторая - количество повторений и третья - результат. Но т.к. пар таких чисел может быть несколько, то нужна функция, которая их посчитает, а потом что, обернуть в мейне в цикл функции и вывод до кол-ва этих пар. И уже начиная с этого момента возникают трудности. Буду благодарен за любые подсказки и реализации. (Код можно изменять, например, вместо умножения с присваиваниям, возвести в степень число в ко-во повторений, но вывод должен остаться таким же).
Спасибо.

Отправлено: 13:42, 18-04-2017

 

Аватара для shisik

Ветеран


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

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


Цитата ALEVER:
Т.к. ф-ция может возвращать только лишь 1 значение »
А если использовтаь структуру? Плюс можно передавать параметры по ссылкам. Вот и подсказки, как получить более одного результата из функции

Отправлено: 13:50, 18-04-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


shisik, можно использовать только циклы, условия. Структуры и дополнительные функции запрещены.

Отправлено: 16:15, 18-04-2017 | #3


Аватара для shisik

Ветеран


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

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


ALEVER, тогда перейдайте параметры по ссылкам, так получите несколько значений из одной функции.

Цитата ALEVER:
дополнительные функции запрещены »
А как же тогда ваша идея с тремя функциями?

Отправлено: 16:32, 18-04-2017 | #4


Новый участник


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

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


shisik, подразумевается запрет функций, например, для сортировки и прочего, а суть реализации через функцию(ии) пользователя.

Отправлено: 13:00, 19-04-2017 | #5


Аватара для shisik

Ветеран


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

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


Цитата ALEVER:
подразумевается запрет функций, например, для сортировки и прочего, а суть реализации через функцию(ии) пользователя »
Ничего не понял. Что значит запрет функций, но реализация через функцию?

Отправлено: 14:45, 19-04-2017 | #6


Новый участник


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

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


shisik, ок, перефразируем: реализовать тот же самый результат(вывод) с помощью функции(ий) пользователя, используя в них и мейне только проверки и циклы.

Отправлено: 17:09, 19-04-2017 | #7


Аватара для shisik

Ветеран


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

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


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

Ну то есть варавнтов реализации на самом деле очень очень много. Только вот и это нельзя, и то нельзя... Условие не совсем понятно.

Отправлено: 17:47, 19-04-2017 | #8


Новый участник


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

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


shisik, функция мейн передает в функции пользователя массив из 10 рандомных элементов. После чего эти функции должны вернуть в мейн нужные значения, а именно: число(а)(которое(ые) подходит условию), его кол-во повторений и результат, выводом из мейна должна быть строка "Number [%d] is repeated [%d] times. Result = [%d]", где 1 - нечетное отрицательное число, повторяемое 2 и более раз, 2 - кол-во повторений этого числа, 3 - результат перемножения этого числа кол-ва повторений, либо, проще говоря, возвести повторяемое число в кол-во этих повторений. При чем учесть, что таких пар повторяемых чисел может быть больше 1 и соответственно предусмотреть.

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


Аватара для shisik

Ветеран


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

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перенос части кода в функцию пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - перенос профиля пользователя xoy Microsoft Windows 2000/XP 10 21-07-2010 15:37
Разное - [решено] Перенос данных пользователя kvorum Microsoft Windows 7 3 04-03-2010 10:21
[решено] Разбор HTML-кода на логические части Мартиша Вебмастеру 9 20-06-2009 00:09
[решено] перенос части страницы HTML на другую через DOM rus-4-ever Вебмастеру 1 29-10-2008 01:11
подгрузка части кода на html-страницу из отдельного файла shmond Вебмастеру 3 04-04-2007 16:43




 
Переход