Новые книги

As distributed computer systems become more pervasive, so does the need for understanding how their operating systems are designed and implemented. Andrew S. Tanenbaum's Distributed Operating Systems fulfills this need. Representing a revised and greatly expanded Part II of the best-selling Modern Operating Systems, it covers the material from the original book, including communication, synchronization, processes, and file systems, and adds new material on distributed shared memory, real-time distributed systems, fault-tolerant distributed systems, and ATM networks. It also contains four detailed case studies: Amoeba, Mach, Chorus, and OSF/DCE. Tanenbaum's trademark writing provides readers with a thorough, concise treatment of distributed systems.
Книга, которую вы сейчас держите в руках – это полноценное пошаговое руководство по построению вашей собственной воронки продаж.

? Если вы хотите автоматизировать продажи и получать максимальные конверсии.

? если вы хотите выстроить доверительные отношения с клиентами через емкие, четкие и понятные тексты.

? если в вашей голове уже есть линейка продуктов и услуг, но она пока не реализована и вы не знаете, как это сделать быстро и с минимальными усилиями.

? если у вас хаос в товарах и инфопродуктах, и вы понятия не имеете, что и когда предложить клиенту.

? если вы хотите уделять достаточно времени семье, друзьям, своим близким и быть мобильным.

? если вы действительно хотите зарабатывать «на автомате» от 300 000 руб в месяц, и самое главное – делать это легко и уверенно.

Выполните рекомендации из этой книги, и вы увидите финансовый результат незамедлительно. Внедрив технологии автоматизации вашего бизнеса, вы раз и навсегда избавитесь от хаоса в ваших предложениях.

Примеры.

Пример 2

/* Подсчет количества вхождений каждой из букв алфавита в файл.
 * Выдача таблицы.
 * Подсчет частоты использования битов в байтах файла.
 */
#include <stdio.h>
#include <ctype.h>
long bcnt[8];
char masks[8] = {       /* маски битов */
	1, 2, 4, 8, 16, 32, 64, 128 };
long cnt[256];          /* счетчики для каждой из 256 букв */
/* распечатка букв в стиле языка СИ */
char *pr( c ){
	static char buf[ 20 ];
	switch( c ){
	case '\n': return   " \\n "   ;
	case '\r': return   " \\r "   ;
	case '\t': return   " \\t "   ;
	case '\b': return   " \\b "   ;
	case '\f': return   " \\f "   ;
	case '\033': return " ESC"    ;
	case '\0': return   " \\0 "   ;
	case 0177: return   " ^? "    ;
	}
	if( c < ' ' ){
		sprintf( buf, " ^%c ", c + 'A' - 1 );
	}else if( isspace(c)){
		sprintf( buf, " '%c'", c );
	}else if( ! isprint( c ))
		sprintf( buf, "\\%3o", c );
	 else   sprintf( buf, "  %c ", c );
	 return buf;
}
main( argc, argv ) char **argv;  {
	FILE *fp;
	if( argc == 1 ) process( stdin );
	else{   argv++; argc--;
		while( *argv ){
			printf( "----- FILE %s -----\n", *argv );
			if((fp = fopen( *argv, "r" )) == NULL ){
				printf( "Can not open\n" );
			}else{  process( fp ); fclose( fp );   }
			argv++; argc--;
		}
	}
	exit(0);
}
/* обработать файл с поинтером fp */
process( fp ) FILE *fp;
{       register i; int c; int n;
	/* зачистка счетчиков */
	for( i=0; i < 256; i++ ) cnt[i]  = 0L;
	for( i=0; i < 8  ; i++ ) bcnt[i] = 0;
	while( ( c=getc(fp)) != EOF ){
		 c &= 0377;
	     /* подсчитать букву */
		cnt[ c ] ++;
	     /* подсчет битов */
		for( i=0; i < 8; i++ )
			if( c & masks[i] )
				bcnt[ i ] ++;
	}
	/* выдача результатов в COL колонок */
#define COL 4
	printf( "\tASCII map\n" );
	for( n=i=0; i < 256; i++ ){
	     /* if( cnt[i] == 0l ) continue; */
	     printf( "%s  %5ld      |", pr(i), cnt[i] );
	     if( ++n == COL ){ n = 0; putchar('\n'); }
/* или       if((i % COL) == (COL-1)) putchar('\n');       */
	}
	printf( "\n\tBITS map\n" );
	for( i=7; i >=0 ; i-- ) printf( "%6d ", i );
	putchar( '\n' );
	for( i=7; i >=0 ; i-- )
		printf( "%6ld ", bcnt[i] );
	putchar( '\n' ); putchar( '\n' );
}

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

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