Возврат из функции нескольких значений - 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;
}
Объяснение кода листинга программы
- include
- Подключение стандартной библиотеки для работы с файлами - include
- Подключение стандартной библиотеки для работы с памятью - include
- Подключение библиотеки для работы с клавиатурой и дисплеем #define N 6- Определение размера массиваint work(int a1[], int a2[], int a3[], int n)- Определение функции с четырьмя аргументамиint summass(int *a, int n)- Определение функции для вычисления суммы элементов массиваint mulpmass(int *a, int n)- Определение функции для вычисления произведения элементов массиваint main()- Определение точки входа в программуsystem(chcp 1251>NUL)- Команда для установки кодировки консолиint k = 0;- Объявление переменной для подсчета количества элементовint a1[N] = {5,-2,7,1,8,-3};- Объявление массива a1 с шестью элементамиint a2[N], a3[N];- Объявление двух массивов a2 и a3 для хранения результатов работы функции workk = work(a1, a2, a3, N);- Вызов функции work с передачей ей аргументов и сохранение результата в переменной kprintf(Сумма элементов массива a2 = %d\n, summass(a2, k));- Вывод суммы элементов массива a2printf(Сумма элементов массива a3 = %d\n, summass(a3, N - k));- Вывод суммы элементов массива a3printf(Произведение элементов массива a2 = %d\n, mulpmass(a2, k));- Вывод произведения элементов массива a2printf(Произведение элементов массива a3 = %d\n, mulpmass(a3, N - k));- Вывод произведения элементов массива a3_getch();- Ожидание нажатия клавиши для завершения программыreturn 0;- Конец функции mainreturn 0;- Конец программы