Для каждого вектора найти разницу между модулями сумм положительных и отрицательных элементов. - 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;
}

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

  1. include директивы для подключаемых файлов
  2. Определение размера массива в 3 элемента
  3. Функция raznica принимает три аргумента: указатель на массив, его размер и имя массива (для вывода результатов)
  4. Внутри функции инициализируются переменные pol и otr для хранения суммы положительных и отрицательных элементов соответственно
  5. В цикле проходится по всем элементам массива
  6. Если элемент больше нуля, то он прибавляется к pol, иначе к otr
  7. После прохода по всем элементам, в razn записывается разница между абсолютными значениями pol и otr
  8. Вызывается функция printf для вывода результатов на экран
  9. В функции _tmain создаются три массива: A, B, C, каждый из которых содержит три элемента
  10. Функция raznica вызывается три раза: для массива A, B и C, передавая в качестве аргументов указатель на массив, его размер и имя массива
  11. В конце программы вызывается функция _getch для приостановки выполнения программы до нажатия клавиши
  12. Возвращаемое значение 0 от функции _tmain означает успешный конец работы программы

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


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

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

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