Новые книги

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

Книга может быть полезна как профессионалам, работающим с цветом, интерьерами, так и широкому кругу читателей, интересующихся воздействием цвета на человека. Описываемые принципы приложимы к любой сфере человеческой жизни, где так или иначе фигурирует цвет. Будь то цветовое оформление огромного производственного цеха, или же создание атмосферы тепла, уюта и релаксации в чайхане; идёт ли речь о подборе обоев мягких, успокаивающих для спальни, либо же жизнеутверждающий, тонизирующих для гостиной; либо речь об одежде, способной сделать человека легче, стройнее или наоборот жёстче, массивней.

Предлагаем уважаемым читателям отправиться в совместное с автором исследование столь богатого и живого океана цвета. В этом путешествии вы, возможно, найдёте для себя что-то новое и практически значимое. А помогать вам будут большое количество иллюстраций, примеров, а также понятный и образный слог автора.
В основу книги легли материалы занятий, апробированные автором в стенах факультета переподготовки специалистов Санкт-Петербургского государственного политехнического университета. Рассмотрены основы работы в сети Интернет, поиск информации, работа с электронной почтой. Описано, как общаться через интернет-форумы, чаты, блоги и социальные сети («ВКонтакте», «Одноклассники»), вести телефонные разговоры через Skype, обмениваться сообщениями через Twitter и др. Даны рекомендации по использованию Интернета при решении бытовых вопросов: бронирование номера в гостинице, заказ билетов, получение госуслуг, покупка товаров и др. Уделено внимание развлечениям и самообразованию: посещение интернет-музеев и библиотек, обучение через Интернет, просмотр телевизионных передач и видеороликов «YouTube» и др. Рассмотрены вопросы безопасности при работе в сети.

Примеры.

Пример 1

/* Задача о размене монеты:
 * Поиск всех возможных коэффициентов a0 .. an разложения числа  S
 * в виде
 *      S = a0 * c0 + a1 * c1 + ... + an * cn
 * где веса c0 .. cn заданы заранее и упорядочены.
 * Веса и коэффициенты неотрицательны (ai >= 0, ci >= 0).
 */
#include <stdio.h>
/* Достоинства разменных монет (веса ci) */
int cost[] = {
	1, 2, 3, 5, 10, 15, 20, 50, 100, 300, 500  /* копеек */
};
#define N       (sizeof cost / sizeof(int))
int count[ N ];         /* число монет данного типа (коэффициенты ai) */
long nvar;              /* число вариантов */
main( ac, av ) char *av[];
{
    int coin;
    if( ac == 1 ){
	fprintf( stderr, "Укажите, какую монету разменивать: %s число\n",
		av[0] );
	exit(1);
    }
    coin = atoi( av[1] );
    printf( "          Таблица разменов монеты %d коп.\n", coin );
printf( " Каждый столбец содержит количество монет указанного достоинства.\n" );
printf( "-------------------------------------------------------------------\n" );
printf( "| 5р. | 3р. | 1р. | 50к.| 20к.| 15к.| 10к.|  5к.|  3к.|  2к.|  1к.|\n" );
printf( "-------------------------------------------------------------------\n" );
    change( N-1, coin );
printf( "-------------------------------------------------------------------\n" );
    printf( "Всего %ld вариантов\n", nvar );
}
/* рекурсивный размен */
change( maxcoin, sum )
	int sum;        /* монета, которую меняем */
	int maxcoin;    /* индекс по массиву cost[] монеты максимального
			 * достоинства, допустимой в данном размене.
			 */
{
	register i;
	if( sum == 0 ){  /* вся сумма разменяна */
		/* распечатать очередной вариант */
		putchar( '|' );
		for( i = N-1 ; i >= 0 ; i-- )
			if( count[i] )
			    printf(" %3d |", count[ i ] );
			else
			    printf("     |" );
		putchar( '\n' );
		nvar++;
		return;
	}
	if( sum >= cost [ maxcoin ] ){
	    /* если можно выдать монету достоинством cost[maxcoin] ,
	     * то выдать ее:
	     */
	    count[ maxcoin ] ++;   /* посчитали выданную монету */
       /* размениваем остаток суммы :
	* Первый аргумент - может быть можно дать еще одну такую монету ?
	* Второй аргумент - общая сумма убавилась на одну монету cost[maxcoin].
	*/
	    change( maxcoin, sum - cost[maxcoin] );
	    count[ maxcoin ] --;   /* ... Теперь попробуем иной вариант ... */
	}
	/* попробовать размен более мелкими монетами */
	if( maxcoin )
		change( maxcoin-1, sum );
}

© Copyright А. Богатырев, 1992-95
Си в UNIX

Назад | Содержание | Вперед