Книга: Язык Си - руководство для начинающих
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);
}
Это значительная часть программы, и у нас есть немало замечаний.
- MainWindow
- Your Own Domain Name and Third-Party DNS
- Providing DNS for a Real Domain with BIND
- Providing DNS for a Real Domain
- Registering the Domain
- Maintaining Accurate Serial Numbers
- Using Single Quotes to Maintain Unexpanded Variables
- Maintaining yum
- 5.2.2. Kernel Startup: main.c
- Maintaining Your System
- DOMAIN
- Accepting mail for other domains