Возврат из функции нескольких значений - 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;
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д