Вычислить сумму положительных и отрицательных элементов массива - 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, которая вычисляет сумму положительных и отрицательных элементов двух массивов. Список действий:
- Включаемые заголовочные файлы: В начале кода подключаются необходимые заголовочные файлы: stdio.h, stdlib.h, conio.h и time.h.
- Определение констант: Определяются константы N и M, которые представляют собой размеры массивов.
- Функции ввода и вывода: В программе определены две функции: input и output. Функция input используется для заполнения массива случайными числами, а функция output - для вывода содержимого массива на экран.
- Главная функция: В функции main создаются два массива: X и A, которые будут заполняться числами. Затем эти массивы заполняются случайными числами с помощью функции input. После этого содержимое массивов выводится на экран с помощью функции output.
- Функция pol: Эта функция принимает два аргумента: указатель на начало массива и размер этого массива. Внутри функции происходит итерация по всем элементам массива. Если элемент больше нуля, его значение прибавляется к общей сумме.
- Функция otr: Эта функция выполняет аналогичные действия, но проверяет, является ли элемент отрицательным.
- Вычисление суммы: В конце программы находится сумма положительных и отрицательных элементов двух массивов с помощью функций pol и otr, и выводится на экран.
- Завершение программы: В конце программы вызывается функция getch, которая ожидает нажатия клавиши для завершения работы программы. Таким образом, программа заполняет два массива случайными числами, затем вычисляет сумму положительных и отрицательных элементов каждого массива и выводит результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д