Книга: Язык Си - руководство для начинающих

main( ) и getarray( )

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 значений. n", limit);

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

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

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

if(status == YESNUM)

{ array[index++] = num;

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

} else if(status == NONUM)

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

else

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

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

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

return(index);

}

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

Оглавление книги


Генерация: 0.102. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз