стек с массивом, передаваемым из функции в C - PullRequest
1 голос
/ 03 марта 2012

Как я могу использовать информацию из массива, которая будет передана из функции?

 #include <stdio.h>

 double get_number(double[]);

 main {

 double x, z[100];
 char m;

 do { 
 x = get_number[z];
 printf("More numbers?");
 scanf (" %c", &m);

      }
 while ((m == 'Y')||(m == 'y'))
}


double get_number(double arr[])
{
    printf ("Please enter number :   ?");
    scanf("%d", &arr);
    return arr;
}

Например, когда пользователь нажимает пару раз Y и заполняет массив двумя или тремя числами.Как я могу работать с этими номерами?сосчитать их или просто показать им.

1 Ответ

1 голос
/ 03 марта 2012

Используйте цикл for ().

for (int i = 0; i < array_size; i++) {
     printf ("Number at index %d: %f", i, arr[i]);
}

Конечно, вам нужно знать размер заранее.И не используйте scanf () с таким массивом, почему бы не иметь:

double get_input ()
{
    double number = 0;

    printf ("Please enter number: ");
    scanf ("%d", &number);

    return number;
}

Определите длину вашего массива как фиксированную:

#define ARRAY_SIZE 1024

, если вам нужно больше, чемчто, увеличьте значение или рассмотрите возможность использования структуры списка.

Надеюсь, это поможет

РЕДАКТИРОВАТЬ

Если вы хотите получить сумму, например, вам нужно сначала инициализировать массив:

double array[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++) array[i] = 0;

Затем вы получите ввод:

char input;
int counter = 0;
do {
    if (counter > ARRAY_SIZE) break; // dont cause a segmentation fault

    scanf ("%c", &input);
    double number = get_input();
    array[counter] = number;

} while (input == 'Y' || input == 'y');

Затем, когда это будет сделано, просто пройдите через массив и суммируйте его:

int sum = 0;
for (int i = 0; i < ARRAY_SIZE; i++) {
    sum += array[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...