Руководство полного чайника по программированию на языке Си


Задача: нарисовать таблицу


/* Задача: нарисовать таблицу вида

кот кот кот кошка кошка кот кот кот кошка кошка кот ...

Где идет последовательность кот, кот, кот, кошка, кошка... повторяющаяся много раз и располагаемая по 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'); */ }




- Начало -  - Назад -  - Вперед -