2013-10-06 6 views
0

Я пытаюсь написать функцию, которая возвращает массив нестандартного размера и заполняется случайными числами. Весь мой код как таковой:Создание настраиваемого размера массива со случайными номерами

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

int check_error(int a); 
void initialize_array(int array[],int a); 
void print_array(int array[],int a); 
int replace(int array[],int i, int b, int c); 

int main(void) 
{ 
    int asize, array; 
    printf("Hello!\nPlease enter the size of the array:\n"); 
    scanf("%d", &asize); 
    check_error(asize); 
    while (check_error(asize)==0) 
    { 
      printf("Invalid input! Enter the size of the imput size again:\n"); 
      scanf("%d", &asize); 
    } 
      if (check_error(asize)==1) 
    { 
      initialize_array(array, asize); 
    } 
} 

int check_error(int a) 
{ 

    if (a> 0 && a <= 100) 
      return 1; 
    else 
      return 0; 
} 
void initialize_array(int array[], int a) 
{ 
    int i; 
    srand(time(NULL)); 
    for(i=0; i < a; i++) 
    { 
      array[i]=rand()%10; 
    } 
} 

В частности мне нужна помощь в получении initialize_array работать как задумано.

+0

В чем ваш вопрос? Что делает ваш код? Что вы ожидаете от этого? –

+0

Мой вопрос в том, как создать этот массив со случайными числами. Этот код принимает целочисленное значение от пользователя и определяет, насколько велик массив. Код проверяет, имеет ли размер массива от 0 до 100, затем либо 0, либо 1. Мне нужна программа для создания массива, который «asize» большой, со случайными числами от 0 до 9, чтобы заполнить эти точки в 1D массиве , –

ответ

2

В своем коде, удалить предыдущее определение массива, а затем сделать это:

if (check_error(asize)==1) { 
     int array[asize]; 
     initialize_array(array, asize); 
     // other stuff here 
} 

Обратите внимание, что массив является действительным только между {} 's КРП (check_error) заявление.

+0

+1 Единственный способ сделать это без динамического выделения - использовать VLA на стороне вызывающего абонента и сохранить выходную реализацию 'initialize_array()'. Кроме того, добавление функциональности (по общему признанию переполнения) предоставления нижней и верхней границы диапазона случайных чисел, сгенерированных в виде пары параметров, было бы приятным прикосновением. +1 независимо. Это жизнеспособное решение. – WhozCraig

+0

@WhozCraig, хорошая точка на VLA. Я об этом не думал. –

+0

Лаборатория заявляет, что я не могу использовать указатели в своем коде, чтобы использовать функции и передавать массивы через функции. –

Смежные вопросы