Функция, которая считает количество положительных, отрицательных, нулевых чисел массива "используя указатели" - PullRequest
0 голосов
/ 20 ноября 2019

Моя основная проблема - написать программу на C, которая использует функцию void с пятью аргументами: массив типа integer T[], его размер M, целое число P, другое целое число N иеще один Null_nbr.
Я НЕ ДЛЯ ИСПОЛЬЗОВАНИЯ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ, и ДЛЯ ИСПОЛЬЗОВАНИЯ УКАЗАТЕЛЕЙ (потому что я сделал это уже без указателей).
Программа, которую я пишу, не возвращает никаких ошибок или предупреждений, но она не 'т работа! Я буду признателен, если кто-нибудь скажет мне, где проблема в моей программе.

#include<stdio.h>
void function(int [], int , int *, int *, int *);
int main() {
    int M, t[M] , i, P, N, Null_nbr;    
    printf("enter the size of your array");
    scanf("%d", &M);
    printf("\n enter the array's elements");
    for(i = 0; i < M; i++) {
        scanf("%d", &t[i]);
    }
    function(t, M, &P, &N, &Null_nbr);
}
void function(int t[], int M, int *P, int *N, int *Null_nbr) {
    int i;
    *P=0;
    *N=0;
    *Null_nbr=0;
    for(i = 0; i < M; i++){
        if(t[i] == 0)
            (*Null_nbr)++;
        else if (t[i] < 0)
            (*N)++;
        else
            (*P)++;
    }
    printf("\n P = %d N = %d and  Null=%d", P, N, Null_nbr);        
}

Ответы [ 2 ]

2 голосов
/ 20 ноября 2019

Некоторые программы / компилятор не позволяют определять размер массива, как вы (t [M]), потому что M не является постоянным значением. Попробуйте написать так. int *array, size array = (int*)malloc(size * sizeof(int)).

Это должно работать следующим образом.

1 голос
/ 20 ноября 2019

Если используется C99 ...
Когда объявлено int t[M], M не хватает указанного значения. Приводит к неопределенному поведению .

Переместить объявление после scanf("%d", &M);

int M, i, P, N, Null_nbr;    
printf("enter the size of your array");
scanf("%d", &M);
assert(M > 0);
int t[M];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...