нарисовать таблицу
/* Задача: нарисовать таблицу вида
кот кот кот кошка кошка кот кот кот кошка кошка кот ...
Где идет последовательность кот, кот, кот, кошка, кошка... повторяющаяся много раз и располагаемая по 6 зверей в строку. */
#include
/* магическая строка */
/* Объявление глобальных переменных. В данном случае - констант. */
int TOMCATS = 3; /* три кота */ int CATS = 2; /* две кошки */ int ANIMALS_PER_LINE = 6; /* шесть зверей в каждой строке */ int LINES = 25; /* число выводимых строк */
/* и нам понадобится еще одна переменная - общее число зверей. Ее мы вычислим через уже заданные, поэтому тут мы ее объявим... но вычислить что-либо можно только внутри функции. В нашем случае - в функции main(). */ int ANIMALS; /* общее число зверей */
int nth_in_line = 0; /* номер зверя в текущей строке */ /* Эта переменная не может быть локальной в функции, так как * тогда она уничтожится при выходе из функции. Нам же необходимо, * чтобы ее значение сохранялось. Поэтому переменная - глобальная. */
/* Функция, которая считает число зверей в одной строке и либо переводит строку, либо переводит печать в следующую колонку (табуляцией). */ void checkIfWeHaveToBreakLine(){ nth_in_line++; /* текущий номер зверя в строке (с единицы) */
if(nth_in_line == ANIMALS_PER_LINE){ /* Если строка заполнена зверьми... */ putchar('\n'); /* новая строка */ nth_in_line = 0; /* в новой строке нет зверей */ } else { putchar('\t'); /* в следующую колонку */ } }
void main(){ int nanimal; /* номер зверя */ int i; /* счетчик */
ANIMALS = ANIMALS_PER_LINE * LINES; nanimal = 0;
while(nanimal < ANIMALS){
for(i=0; i < TOMCATS; i++){ /* Оператор printf() выводит СТРОКУ СИМВОЛОВ. СТРОКА заключается в двойные кавычки (не путать с одиночными для putchar(). */ printf("кот"); nanimal++; /* посчитать еще одного зверя */
/* и проверить - не надо ли перейти на новую строку ? */ checkIfWeHaveToBreakLine(); } for(i=0; i < CATS; i++){ printf("кошка"); nanimal++; /* посчитать еще одного зверя */
/* и проверить - не надо ли перейти на новую строку ? */ checkIfWeHaveToBreakLine(); } } /* putchar('\n'); */ }