Подсчитать в массивах количество отрицательных элементов - 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) { //функция заполнения массива }
Объяснение кода листинга программы
- Включаемые заголовки:
stdio.h
для работы с вводом/выводомlocale.h
для установки локали на русский языкstdlib.h
для работы с памятью и алгоритмамиconio.h
для работы с клавиатурой и дисплеем (не используется в данном коде)
- Функции:
CountNegative
для подсчета отрицательных элементов в массивеFillArray
для заполнения массива значениями (не определена в данном коде)Print
для вывода массива на экран
- Основная функция:
main
содержит основную логику программы- Запрашивает размер массива у пользователя
- Выделяет память под два массива с помощью
calloc
- Заполняет массивы с помощью
FillArray
(которая не определена в данном коде) - Подсчитывает количество отрицательных элементов в каждом массиве с помощью
CountNegative
- Выводит на экран массив с большим количеством отрицательных элементов
- Освобождает память с помощью
free
- Подсчет отрицательных элементов:
- Функция
CountNegative
проходит по всем элементам массива - Если элемент отрицательный, увеличивает счетчик на 1
- Возвращает полученное количество отрицательных элементов
- Функция
- Вывод массива:
- Функция
Print
выводит массив на экран - Проходит по всем элементам массива
- С помощью
printf
выводит каждый элемент, окруженный пробелами
- Функция
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д