main( ) и getarray( )

We use cookies. Read the Privacy and Cookie Policy

main( ) и getarray( )

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

Сначала напишем main( ):

/* сортировка 1 */

#define MAXSIZE 100 /* предельное количество сортируемых целых чисел */

main( )

{

int numbers [MAXSIZE]; /* массив для ввода */

int size; /* количество вводимых чисел */

size = getarray(numbers, MAXSIZE); /* запись чисел в массив */

sort(numbers, size); /* сортировка массива */

print(numbers,/size); /* печать отсортированного массива */

}

Это общий вид программы. Функция getarray() размещает введенное числа в массиве numbers и выдает сообщение о том, сколько значений было считано; эта величина записывается в size. Затем идя функции sоrt( ) и print( ), которые мы еще должны написать; они сортируют массив и печатают результаты. Включая в них size, мы облегчаем им работу и избавляем от необходимости выполнять самим подсчет. Мы также снабдили getarray( ) переменной MAXSIZE, которая сообщает размер массива, необходимого для запоминания.

     Теперь, когда мы добавили size к передаваемой информации, нужно модифицировать рисунок нашего черного ящика. См. рис. 10.6.

 

                                                         РИС. 10.6. Программ: сортировки, дополнительные детали.

Теперь рассмотрим функцию getarray( ):

/* getarray( ), использующая getint( ) */

#define STOP  -1 /* признак EOF */

#define NONUM 1 /* признак нецифровой строки */

#define YESNUM 0 /* признак строки цифр */

getarray(array, limit);

int array[ ], limit;

{

int num, status;

int index = 0; /* индекс массива */

printf(" Эта программа прекращает считывание чисел после %d значений. ", limit);

printf(" или если введен символ EOF. ");

while(index < limit && (status = getint(&num)) != STOP)

{  /* прекращает считывание после достижения limit или EOF */

if(status == YESNUM)

{ array[index++] = num;

printf(" число %d принято. ", num);

} else if(status == NONUM)

printf(" Это было не целое число! Попытайтесь снова. ");

else

printf(" Этого не может быть! Что-то неправильно. ");

if(index == limit) /* сообщить, если массив заполнен */

printf(" Все %d элементов массива заполнены. ", limit);

return(index);

}

Это значительная часть программы, и у нас есть немало замечаний.