Для каждого вектора найти разницу между модулями сумм положительных и отрицательных элементов. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте!Прошу Вашей помощи,написал программу,все работает,но надо ее переделать как на скрине,т.е элементы задаются сразу,без цикла.У самого не получается переделать=( Сама задача заключается в том,что дано три вектора A,B,C.Для каждого найти разницу между абсолютными значениями суммы положительных и абсолютными значениями суммы отрицательных элементов. Вот,собственно,моя программа,котрую надо изменить:
Листинг программы
  1. #include "stdafx.h"
  2. #include <locale.h>
  3. #include <conio.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6. void vvod(int *x, int n, char name)
  7. {
  8. printf("\nВектор %c:\n\n", name);
  9. for (int i = 0; i<n; i++)
  10. {
  11. printf("Введите элемент вектора № %d: ", i);
  12. scanf_s("%d", &x[i]);
  13. }
  14. }
  15. void raznica(int *x, int n, char name)
  16. {
  17. int pol = 0;
  18. int otr = 0;
  19. int razn;
  20. for (int i = 0; i<n; i++)
  21. {
  22. if (x[i] > 0 ) {pol += x[i];}
  23. else {otr += x[i];}
  24. }
  25. razn = (abs(pol))-(abs(otr));
  26. printf("Сумма положительных элементов %c: %d\n", name, pol );
  27. printf("Сумма отрицательных элементов %c: %d\n", name, otr );
  28. printf("Разница %d\n",abs(razn));
  29. }
  30. int _tmain(int argc, _TCHAR* argv[])
  31. {
  32. setlocale(LC_ALL,"Russian");
  33. const int q = 3, w = 3, e = 3;
  34. int A[q], B[w], C[e];
  35. vvod(A, q, 'A');
  36. vvod(B, w, 'B');
  37. vvod(C, e, 'C');
  38. raznica (A, q, 'A');
  39. raznica (B, w, 'B');
  40. raznica (C, e, 'C');
  41. _getch();
  42. return 0;
  43. }

Решение задачи: «Для каждого вектора найти разницу между модулями сумм положительных и отрицательных элементов.»

textual
Листинг программы
  1. #include "stdafx.h"
  2. #include <locale.h>
  3. #include <conio.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6.  
  7. #define N 3 //размер массива
  8.  
  9. void raznica(int *x, int n, char name)
  10. {
  11. int pol = 0;
  12. int otr = 0;
  13. int razn;
  14. for (int i = 0; i<n; i++)
  15. {
  16.     if (x[i] > 0 ) {pol += x[i];}
  17.     else {otr += x[i];}
  18. }
  19. razn = (abs(pol))-(abs(otr));
  20. printf("Сумма положительных элементов %c: %d\n", name, pol );
  21. printf("Сумма отрицательных элементов %c: %d\n", name, otr );
  22. printf("Разница %d\n",abs(razn));
  23. }
  24. int _tmain(int argc, _TCHAR* argv[])
  25. {
  26. setlocale(LC_ALL,"Russian");
  27. int A[N]={15,16,17},
  28.     B[N]={1,2,3},
  29.     C[N]={21,22,23};
  30.  
  31.  
  32. raznica (A, N, 'A');
  33. raznica (B, N, 'B');
  34. raznica (C, N, 'C');
  35.  
  36. _getch();
  37. return 0;
  38. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы