Для каждого вектора найти разницу между модулями сумм положительных и отрицательных элементов. - C (СИ)
Формулировка задачи:
Здравствуйте!Прошу Вашей помощи,написал программу,все работает,но надо ее переделать как на скрине,т.е элементы задаются сразу,без цикла.У самого не получается переделать=(
Сама задача заключается в том,что дано три вектора A,B,C.Для каждого найти разницу между абсолютными значениями суммы положительных и абсолютными значениями суммы отрицательных элементов.
Вот,собственно,моя программа,котрую надо изменить:
#include "stdafx.h" #include <locale.h> #include <conio.h> #include <stdio.h> #include <math.h> void vvod(int *x, int n, char name) { printf("\nВектор %c:\n\n", name); for (int i = 0; i<n; i++) { printf("Введите элемент вектора № %d: ", i); scanf_s("%d", &x[i]); } } void raznica(int *x, int n, char name) { int pol = 0; int otr = 0; int razn; for (int i = 0; i<n; i++) { if (x[i] > 0 ) {pol += x[i];} else {otr += x[i];} } razn = (abs(pol))-(abs(otr)); printf("Сумма положительных элементов %c: %d\n", name, pol ); printf("Сумма отрицательных элементов %c: %d\n", name, otr ); printf("Разница %d\n",abs(razn)); } int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Russian"); const int q = 3, w = 3, e = 3; int A[q], B[w], C[e]; vvod(A, q, 'A'); vvod(B, w, 'B'); vvod(C, e, 'C'); raznica (A, q, 'A'); raznica (B, w, 'B'); raznica (C, e, 'C'); _getch(); return 0; }
Решение задачи: «Для каждого вектора найти разницу между модулями сумм положительных и отрицательных элементов.»
textual
Листинг программы
#include "stdafx.h" #include <locale.h> #include <conio.h> #include <stdio.h> #include <math.h> #define N 3 //размер массива void raznica(int *x, int n, char name) { int pol = 0; int otr = 0; int razn; for (int i = 0; i<n; i++) { if (x[i] > 0 ) {pol += x[i];} else {otr += x[i];} } razn = (abs(pol))-(abs(otr)); printf("Сумма положительных элементов %c: %d\n", name, pol ); printf("Сумма отрицательных элементов %c: %d\n", name, otr ); printf("Разница %d\n",abs(razn)); } int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Russian"); int A[N]={15,16,17}, B[N]={1,2,3}, C[N]={21,22,23}; raznica (A, N, 'A'); raznica (B, N, 'B'); raznica (C, N, 'C'); _getch(); return 0; }
Объяснение кода листинга программы
- include директивы для подключаемых файлов
- Определение размера массива в 3 элемента
- Функция
raznica
принимает три аргумента: указатель на массив, его размер и имя массива (для вывода результатов) - Внутри функции инициализируются переменные
pol
иotr
для хранения суммы положительных и отрицательных элементов соответственно - В цикле проходится по всем элементам массива
- Если элемент больше нуля, то он прибавляется к
pol
, иначе кotr
- После прохода по всем элементам, в
razn
записывается разница между абсолютными значениямиpol
иotr
- Вызывается функция
printf
для вывода результатов на экран - В функции _tmain создаются три массива: A, B, C, каждый из которых содержит три элемента
- Функция
raznica
вызывается три раза: для массива A, B и C, передавая в качестве аргументов указатель на массив, его размер и имя массива - В конце программы вызывается функция _getch для приостановки выполнения программы до нажатия клавиши
- Возвращаемое значение 0 от функции _tmain означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д