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