Функция «Массив» препятствует правильной работе программы - PullRequest
0 голосов
/ 12 апреля 2019

Моя функция не работает должным образом. Программа запускается, но когда она попадает в цикл for, функция не работает и останавливает программу, даже если предполагается, что она продолжает цикл. Если бы вы могли проверить мою функцию массива и сказать мне, если есть что-то, что я не понимаю или делаю правильно.

Спасибо за ваше время.

Я точно знаю, что цикл не проблема, потому что когда я удаляю функцию, она работает нормально. Я также попытался поместить 'b' в параметре массива функций, например, "int Array (int a [b], int b, int c);"

#include <stdio.h>
#include <stdlib.h>

/*Function*/

int Array(int a[], int b,  int c);

/*Main Program*/
int main()

{

int S, C, *A, *B;
printf("How Many Numbers Would You Like in Array A and B? ");
scanf("%d\n", & S);

/*For Loop Asking The User to Enter a Value and using the Array function to calculate/store the B[] Value*/
for (C=0; C<=S; ++C){
    printf("\nWhat is A[%d]  ", C);
    scanf("%d", & A[C]);
    B[C] = Array(A, S, C);
    }
}


/*Function*/    
int Array(int a[], int b, int c)
{
if (a[c] < 0){
        return a[c] * 10;

    } else {
        return a[c] * 2;

                }
}

Ожидаемые результаты:

  • Программа просит пользователя ввести размер массива, который будет использоваться для * A и * B

  • Программа использует цикл for, чтобы попросить пользователя ввести значение для каждой позиции в массиве * A, используя это значение для вычисления значения для каждой подходящей позиции B

Фактические результаты:

  • Программа просит пользователя ввести размер массива, который будет использоваться для * A и * B

  • Программа использует цикл for, чтобы попросить пользователя ввести значение для каждой позиции в массиве * A, программа запрашивает у пользователя одно значение и затем останавливается.

1 Ответ

1 голос
/ 12 апреля 2019

Вы не выделяете память для массива A. Вы просто объявляете его как указатель на int, затем начинаете записывать в него значения, которые собираются в какую-то произвольную ячейку памяти.После первого сканирования, которое получает S, вам нужно присвоить A = malloc(S * sizeof(int)), прежде чем получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...