Возврат из функции нескольких значений - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан массив [1..6]. Выбрать из него положительные элементы и записать в массив A [1..k], где k<6; из отрицательных элементов сформировать массив A2 [1..6-k]. Напечатать сумму и произведение элементов массивов. То, что я "сочинила"
#include <stdio.h>
#include <conio.h>
 
int Newmass(double arr[], int n, int*)
{
    int i, int a1[], int a2[];
    for (i = 0;i < n;i++)
    {
        if (arr[i] >0) a1[i] = arr[i];
        else if (arr[i] <0) *a2[i] = arr[i];
 
    }
    return a1[i];
}
int main()
{
    int i, int n;
    double A[6] = { 5,-2,7,1,8,-3 };
    for (i = 0;i < n;i++)
    printf("%d \t ", Newmass(A+i));
    _getch();
    return 0;
 
}
Надо как то вывести второй массив, используя указатель (Ну так мне кажется ...). Честно говоря как первый массив выводить я тоже понять не могу...

Решение задачи: «Возврат из функции нескольких значений»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define N 6
 
int work(int a1[], int a2[], int a3[], int n)
{
    int i, k = 0;
    for (i = 0;i < n;i++)
    {
        if (a1[i] >= 0)
        {
            *a2 = a1[i];
            a2++;
            k++;
        }
        else
            if (a1[i] < 0)
            {
                *a3 = a1[i];
                a3++;
            }
 
    }
    return k;
}
 
int summass(int *a, int n)
{
    int i, sum = 0;
 
    for (i = 0;i < n;i++)
        sum = sum + a[i];
 
    return sum;
}
 
int mulpmass(int *a, int n)
{
    int i, mulp = 1;
 
    for (i = 0;i < n;i++)
        mulp = mulp * a[i];
 
    return mulp;
}
 
int main()
{
    system("chcp 1251>NUL");
    int k = 0;
    int a1[N] = { 5,-2,7,1,8,-3 };
    int a2[N], a3[N];
 
        k = work(a1, a2, a3, N);
 
        printf("Сумма элементов массива a2 = %d\n", summass(a2, k));
        printf("Сумма элементов массива a3 = %d\n", summass(a3, N - k));
        printf("Произведение элементов массива a2 = %d\n", mulpmass(a2, k));
        printf("Произведение элементов массива a3 = %d\n", mulpmass(a3, N - k));
 
    _getch();
    return 0;
 
}

Объяснение кода листинга программы

  1. include - Подключение стандартной библиотеки для работы с файлами
  2. include - Подключение стандартной библиотеки для работы с памятью
  3. include - Подключение библиотеки для работы с клавиатурой и дисплеем
  4. #define N 6 - Определение размера массива
  5. int work(int a1[], int a2[], int a3[], int n) - Определение функции с четырьмя аргументами
  6. int summass(int *a, int n) - Определение функции для вычисления суммы элементов массива
  7. int mulpmass(int *a, int n) - Определение функции для вычисления произведения элементов массива
  8. int main() - Определение точки входа в программу
  9. system(chcp 1251>NUL) - Команда для установки кодировки консоли
  10. int k = 0; - Объявление переменной для подсчета количества элементов
  11. int a1[N] = {5,-2,7,1,8,-3}; - Объявление массива a1 с шестью элементами
  12. int a2[N], a3[N]; - Объявление двух массивов a2 и a3 для хранения результатов работы функции work
  13. k = work(a1, a2, a3, N); - Вызов функции work с передачей ей аргументов и сохранение результата в переменной k
  14. printf(Сумма элементов массива a2 = %d\n, summass(a2, k)); - Вывод суммы элементов массива a2
  15. printf(Сумма элементов массива a3 = %d\n, summass(a3, N - k)); - Вывод суммы элементов массива a3
  16. printf(Произведение элементов массива a2 = %d\n, mulpmass(a2, k)); - Вывод произведения элементов массива a2
  17. printf(Произведение элементов массива a3 = %d\n, mulpmass(a3, N - k)); - Вывод произведения элементов массива a3
  18. _getch(); - Ожидание нажатия клавиши для завершения программы
  19. return 0; - Конец функции main
  20. return 0; - Конец программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы