2016-07-12 5 views
3

У меня возникли трудности с моим синтаксисом. Цель нижеприведенной программы - напечатать массив из 20 случайных чисел, найти максимальный массив и затем распечатать массив и макс. У меня есть разделы для инициализации и создания массива без каких-либо проблем, но моя проблема связана с функцией find_max. В основной функции я пытаюсь выработать синтаксис для вызова функции find_max, чтобы я мог распечатать результаты. Если кто-то может помочь исправить мой синтаксис, я бы очень признателен.Функция Caling, которая использует массив как параметр

#include <cstdlib> 
#include <iostream> 
using 
namespace std; 

void 
init_array(int array[], int size, int range) 
{ 
    for (int index = 0; index < size; index++) 
     array[index] = rand() % range; 
} 

void print_array(int array[], int size) 
{ 
    for (int index = 0; index < size; index++) 
     cout << array[index] << " "; 
    cout << endl; 
} 

int find_max (int array[], int size) 
{ 
    int max = array[0]; 
    for (int index = 0; index < size; index++) 
    { 
     if (array[index] > max) 
     max = array[index]; 
    } 
    return max; 
} 


int main() 
{ 
    // Declare array of integers 
    const int size = 20; 
    int array[size] = {0}; 
    int max = find_max(array,size); 


    // Initialize and print array 
    init_array(array, size, 100); 
    print_array(array, size); 
    cout << "The max is:" << max << endl; 



    return 0 ; 
} 

ответ

1

Вы пытаетесь найти max до массив инициализирован. Это не то, что вы хотите. Следующие работы:

const int DATA_SIZE = 20; 
    int data[DATA_SIZE] = {0}; 

    // Initialize and print array 
    init_array(data, DATA_SIZE, 100); 
    print_array(data, DATA_SIZE); 

    // Find maximum value 
    int max = find_max(data, DATA_SIZE); 

    cout << "max = " << max << endl; 

    return 0; 
+0

Вот и все! Спасибо за помощь! – Lumberjacked216

2

Ваш вызов find_max должен использовать свои объявленные переменные и что после вызова init_array. В противном случае ваш массив пуст.

Вызов find_max должен выглядеть следующим образом:

int max = find_max(data, DATA_SIZE); 
+0

Это имеет смысл и, реализуя эти изменения, функция не работает. Не нужно использовать те же объявленные переменные из моей функции find_max. Я сделал эти изменения, которые вы предложили, и теперь программа работает, но теперь моя функция не работает. Он просто печатает максимальное значение, равное нулю. – Lumberjacked216

+0

Не знаю, как выглядит код после изменений, но, возможно, попробуйте засеять rand в начале main: 'srand (time (NULL));'. – Mars

+0

@ Lumberjacked216: Вы спрашиваете о коде, который вы только что написали, чтобы напечатать max, и что вы еще не представили. Мы не телепаты. Мы не можем видеть этот код. –

0

Ну, при объявлении массива таким образом:

int data[DATA_SIZE] = {0}; 

так все 20 элементов в нем равен нуле. ваша основная функция должна выглядеть следующим образом:

int main() 
{ 
    // Declare array of integers 
    const int DATA_SIZE = 20; 
    int data[DATA_SIZE] = {0}; 

    // Initialize and print array 
    init_array(data, DATA_SIZE, 100); 
    cout<< find_max(data, DATA_SIZE)<< endl; 
    print_array(data, DATA_SIZE); 

    return 0 ; 
} 

вы даете 20 элементов случайных значения первым, вызвав init_array, а затем вы пытаетесь найти Макс из них.

0

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

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