Вычислить сумму положительных и отрицательных элементов массива - C (СИ)

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

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

Вычислить Z=(S1+S2)/2, где S1 – сумма положительных элементов массива X(50), а S2 – сумма отрицательных элементов массива А(60). Суммы вычислять в одной подпрограмме.

написал прогу но начал тестить,и сумму она считает неверно.Помогите пожалуйста.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define N 3
#define M 4

void input(int*, int);
void output(int*, int);
int pol(int*, int );
int otr(int*, int);
 
int main()
{
    int X[N],A[M];
    srand(time(0));
    printf("1 ucxodnii massiv:\n\n");
    input(&X[0], N);
    output(&X[0], N);
    printf("2 ucxodnii massiv:\n\n");
    input(&A[0], M);
    output(&A[0], M);
    printf("\n\n\nSumma=%d",( pol(&X[0], N)+ otr(&A[0], M))/2);
    getch();

}
 
void input(int* m, int n)
{
int i;
for(i=0; i<n; i++)
*(m+i) =-5+rand()%10;
}
 
void output(int* m, int n)
{
int i;
 
for(i=0; i<n; i++)
printf("%5d", *(m+i)) ;
printf("\n\n\n");
}
 
int pol(int *m,int n)
{
    int i,sum=0;
    for(i=0;i<n;i++)
    {
    if(*m+i>0)
    sum=sum+(*m+i);
    }
    return sum;
}
 
int otr(int *m,int n)
{
    int i,sum=0;
    for(i=0;i<n;i++)
    {
    if(*m+i<0)
    sum=sum+(*m+i);
    }
    return sum;
}
Нашел ошибку:Он находит и S1 и S2 во втором массиве,а должен S1(сумму положительных) в первом искать,а S2(сумму отрицательных) во втором.

А вот как исправить незнаю.

Решение задачи: «Вычислить сумму положительных и отрицательных элементов массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define N 3
#define M 4
 
 
void input(int*, int);
void output(int*, int);
double pol(int*, int );
double otr(int*, int);
 
int main()
{
    int X[N],A[M];
    srand(time(0));
    printf("1 ucxodnii massiv:\n\n");
    input(&X[0], N);
    output(&X[0], N);
    printf("2 ucxodnii massiv:\n\n");
    input(&A[0], M);
    output(&A[0], M);
    printf("\n\n\nSumma=%lf",( pol(&X[0], N)+ otr(&A[0], M))/2); //место %d(целые числа) поменять на %lf
    getch();
    
 
}
 
void input(int* m, int n)
{
int i;
for(i=0; i<n; i++)
*(m+i) =-5+rand()%10;
}
 
void output(int* m, int n)
{
int i;
 
for(i=0; i<n; i++)
printf("%5d", *(m+i)) ;
printf("\n\n\n");
}
 
double pol(int *m,int n) //тип функции был int , почему нпоменять на double? потому что 5/2=2,5, а у вас 2,0 потому что тип целых чисел
{
    int i,sum=0;
    for(i=0;i<n;i++)
    {
    if(*(m+i)>0) //было *m+i >> *m=-5 ещё + i т.е. -5+і = -5+2 = -3
        sum=sum+(*(m+i)); //и тут так же
    }
    return sum;
}
 
double otr(int *m,int n)//было int тип функции
{
    int i,sum=0;
    for(i=0;i<n;i++)
    {
    if(*(m+i)<0) // и тут
    sum=sum+(*(m+i)); //и тут
    }
    return sum;
}

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

Код представляет собой программу на языке C, которая вычисляет сумму положительных и отрицательных элементов двух массивов. Список действий:

  1. Включаемые заголовочные файлы: В начале кода подключаются необходимые заголовочные файлы: stdio.h, stdlib.h, conio.h и time.h.
  2. Определение констант: Определяются константы N и M, которые представляют собой размеры массивов.
  3. Функции ввода и вывода: В программе определены две функции: input и output. Функция input используется для заполнения массива случайными числами, а функция output - для вывода содержимого массива на экран.
  4. Главная функция: В функции main создаются два массива: X и A, которые будут заполняться числами. Затем эти массивы заполняются случайными числами с помощью функции input. После этого содержимое массивов выводится на экран с помощью функции output.
  5. Функция pol: Эта функция принимает два аргумента: указатель на начало массива и размер этого массива. Внутри функции происходит итерация по всем элементам массива. Если элемент больше нуля, его значение прибавляется к общей сумме.
  6. Функция otr: Эта функция выполняет аналогичные действия, но проверяет, является ли элемент отрицательным.
  7. Вычисление суммы: В конце программы находится сумма положительных и отрицательных элементов двух массивов с помощью функций pol и otr, и выводится на экран.
  8. Завершение программы: В конце программы вызывается функция getch, которая ожидает нажатия клавиши для завершения работы программы. Таким образом, программа заполняет два массива случайными числами, затем вычисляет сумму положительных и отрицательных элементов каждого массива и выводит результат на экран.

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


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

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

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