Подсчитать в массивах количество отрицательных элементов - C (СИ)

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

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

Заданы 2 массива А(М) и В(М). Массивы А и В динамические, выделение памяти выполнить функциями calloc() или malloc(), обращение к элементам массива только через указатель. Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наибольшее их количество. Компилятор (Visual C выдает ошибку 'Count Negative' cannot convert parametr1 from 'int' to 'int' и 'Print' cannot convert parametr1 from 'int' to 'int' Возможно я неправтльно передаю аргументы в вызываемые функции? Подскажите,пожалуйста! Сам код:
#include<conio.h>
#include<stdio.h>
#include<locale.h>
#include<stdlib.h>
 
int CountNegative (int*,int);
int Print (int*,int);
 
void main() {
setlocale(LC_CTYPE, "Russian");
system("cls");  
fflush(stdin);
int *A,*B;
int n;
puts(" Введите размер массива: ");  
scanf("%d", &n);
A = (int*) (malloc(n*sizeof(int)));
B = (int*) (malloc(n*sizeof(int)));
int c1,c2;
c1 = CountNegative(*A,n);
c2 = CountNegative(*B,n);
if (c1>c2) Print (*A,n);
else Print (*B,n);
// Освобождение памяти
free (A);
free (B);
if (!A&& !B)// условие логического отрицания
{ 
// выход за пределы памяти
printf("Out of memory. Press any key: "); 
_getch();
}
}
int CountNegative(int *a,int num)// Подсчёт отрицательных элементов массива
{
    num=0;
    for (int i=0;i!=num;i++)
        if (*(a+i)<0)
            num ++;
    if (!num)
    {
        puts ("Ошибка");
        return 0;
    }
    returnnum;
}
void Print(int *ar,int size)
{
int j;
puts("\n");
for (int j=0;j<size;j++);
printf("%6d",*(ar+j));
}

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

textual
Листинг программы
//#include<conio.h>
#include<stdio.h>
#include<locale.h>
#include<stdlib.h>
 
int CountNegative(int*, int);
void FillArray(int*, int);
void Print(int*, int);
 
void main() {
    //setlocale(LC_CTYPE, "Russian");
    //system("cls");
    fflush(stdin);
    int *A, *B;
    int n = 0;
    int c1, c2;
    do {
        puts(" Введите размер массива: ");
        scanf("%d", &n);
        if (!n)
            puts("n<=0. Try again. \n");
    } while (!n);
    A = (int*) calloc(n, sizeof(int));
    if (A == NULL ) {
        printf("Out of memory. Press any key: ");
        exit(1)
    };
    B = (int*) calloc(n, sizeof(int));
    if (B == NULL ) {
        free(A);
        printf("Out of memory. Press any key: ");
        exit(1)
    };
    FillArray(A, n);
    FillArray(B, n);
    c1 = CountNegative(A, n);
    c2 = CountNegative(B, n);
    if (c1 > c2)
        Print(A, n);
    else
        Print(B, n);
    // Освобождение памяти
    free(A);
    free(B);
 
}
 
// Подсчёт отрицательных элементов массива
int CountNegative(int *a, int size) {
    int i = 0;
    int rez = 0;
    for (i = 0; i < size; i++)
        if (*(a + i) < 0)
            rez++;
    return rez;
}
 
void Print(int *ar, int size) {
    int j;
    puts("\n");
    for (j = 0; j < size; j++)
        printf("%6d", *(ar + j));
}
void FillArray(int * array, int size) {
    //функция заполнения массива
}

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

  1. Включаемые заголовки:
    • stdio.h для работы с вводом/выводом
    • locale.h для установки локали на русский язык
    • stdlib.h для работы с памятью и алгоритмами
    • conio.h для работы с клавиатурой и дисплеем (не используется в данном коде)
  2. Функции:
    • CountNegative для подсчета отрицательных элементов в массиве
    • FillArray для заполнения массива значениями (не определена в данном коде)
    • Print для вывода массива на экран
  3. Основная функция:
    • main содержит основную логику программы
    • Запрашивает размер массива у пользователя
    • Выделяет память под два массива с помощью calloc
    • Заполняет массивы с помощью FillArray (которая не определена в данном коде)
    • Подсчитывает количество отрицательных элементов в каждом массиве с помощью CountNegative
    • Выводит на экран массив с большим количеством отрицательных элементов
    • Освобождает память с помощью free
  4. Подсчет отрицательных элементов:
    • Функция CountNegative проходит по всем элементам массива
    • Если элемент отрицательный, увеличивает счетчик на 1
    • Возвращает полученное количество отрицательных элементов
  5. Вывод массива:
    • Функция Print выводит массив на экран
    • Проходит по всем элементам массива
    • С помощью printf выводит каждый элемент, окруженный пробелами

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


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

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

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