LibKing » Книги » comp-programming » Джесс Либерти - Освой самостоятельно С++ за 21 день.

Джесс Либерти - Освой самостоятельно С++ за 21 день.

Тут можно читать онлайн Джесс Либерти - Освой самостоятельно С++ за 21 день. - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Джесс Либерти - Освой самостоятельно С++ за 21 день.
  • Название:
    Освой самостоятельно С++ за 21 день.
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.11/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

Джесс Либерти - Освой самостоятельно С++ за 21 день. краткое содержание

Освой самостоятельно С++ за 21 день. - описание и краткое содержание, автор Джесс Либерти, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков. Отдельное занятие посвящено вопросам объектно-ориентированного анализа и проектирования приложений. Подробно рассмотрены все средства и подходы конструирования собственных пользовательских классов.

Книга рассчитана на широкий круг читателей, интересующихся современными проблемами программирования.

Освой самостоятельно С++ за 21 день. - читать онлайн бесплатно полную версию (весь текст целиком)

Освой самостоятельно С++ за 21 день. - читать книгу онлайн бесплатно, автор Джесс Либерти
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

1. Создайте защиту от повторного включения файла заголовка STRING.H.

#ifndef STRING_H

#define STRING_H

...

#endif

2. Напишите макрос assert(), который

• будет печатать сообщение об ошибке, а также имя файла и номер строки, если уровень отладки равен 2;

• будет печатать сообщение (без имени файла и номера строки), если уровень отладки равен 1;

• не будет ничего делать, если уровень отладки равен 0.

1: #include

2:

3: #ifndef DEBUG

4: #define ASSERT(x)

5: #elif DEBUG — 1

6: #define ASSERT(x)

7: if (! (x))

S: {

9: cout << "ERROR!! Assert " << #x << " failed\n";

10: }

11: #elif DEBUG == 2

12: #define ASSERT(x)

13: if (! (x) )

14: {

15: cout << " ERROR!! Assert " << #x << " failed\n";

16: cout << " on line " << __LINE__ << "\n";

17: cout << " in file " << __LINE__ << "\n";

18: }

19: #endif

3. Напишите макрос DPrint, который проверяет, определена ли лексема DEBUG, и, если да, выводит значение, передаваемое как параметр.

#ifndef DEBUG:

#define DPRINT(string)

#else

#define DPRINT(STRIN6) cout << #STRING:

#endif

4. Напишите программу, которая складывает два числа без использования операции сложения (+). Подсказка: используйте побитовые операторы!

Если рассмотреть сложение двух битов, то можно заметить, что ответ будет содержать два бита: бит результата и бит переноса. Таким образом, при сложении двух единиц в двоичной системе бит результата будет равен нулю, а бит переноса — единице. Если сложить два двоичных числа 101 и 001, получим следующие результаты:

101 // 5

001 // 1

110 // 6

Следовательно, если сложить два соответствующих бита (каждый из них равен единице), то бит результата будет равен 0, а бит переноса — 1. Если же сложить два сброшенных бита, то и бит результата, и бит переноса будут равны 0. Если сложить два бита, один из которых установлен, а другой сброшен, бит результата будет равен 1, а бит переноса — 0. Перед вами таблица, которая обобщает эти правила сложения

Левый бит lhs Правый бит rhs Перенос Результат

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

Рассмотрим логику бита переноса. Если оба суммируемых бита (lhs и rhs) равны 0 или хотя бы один из них равен 0, бит переноса будет равен 0. И только если оба бита равны 1, бит переноса будет равен 1. Такая ситуация в точности совпадает с определением побитового оператора И (&).

Если подобным образом рассмотреть логику бита результата, то окажется, что она совпадает с выполнением оператора побитового исключающего ИЛИ (^): если любой из суммируемых битов (но не оба сразу) равен I, бит результата равен 1, в противном случае — 0.

Полученный бит переноса добавляется к следуюшему значимому биту. Это можно реализовать либо итеративным проходом через каждый бит, либо использованием рекурсии.

#include

unsigned int add( unsigned int lhs, unsigned lnt rhs )

{

unsigned int result, carry;

while ( 1 )

{

result = lhs ^ rhs;

carry = lhs & rhs;

if ( carry == 0 )

break;

lhs = carry << 1;

rhs = result;

};

return result;

}

int main()

{

unsigned long a, b;

for (;;)

{

cout << "Enter two numbers. (0 0 to stop): ";

cin << a << b:

if (!a && !b)

break;

cout << a << " + " << b << " = " << add(a,b) << endl;

}

return 0;

}

В качестве альтернативного варианта эту проблему можно решить с помошью рекурсии:

#include

unsigned int add( unsigned int lhs, unsigned int rhs )

{

unsignod int carry = lhs & rhs;

unsigned int result = lhs * rhs;

if ( carry )

return add( result, carry << 1 );

else

return result;

}

int main()

{

unsigned long a, b;

for (;;)

{

cout << "Enter two numbers. (0 0 to stop): **;

cin << a << b;

if (!a && !b)

break;

cout << a << " + " << b << " = " << add(a,b) << endl;

}

return 0;

}

#include

int main()

{

cout << "Hello World!\n"

return 0;

}

int main()

{

unsigned short x;

unsigned short у;

unsigned short z;

z = x * у;

return 0;

}

int main()

{

unsigned short Width;

unsigned short Length;

unsigned short Area;

Area = Width * Length;

return 0;

}

Ниже приводится синтаксис оператора if.

Форма 1:

if (условие)

выражение;

следующее выражение;

Если условие возвращает true, то выполняется выражение, а за ним и следующее выражение. Если условие возвратит false, то выражение игнорируется, а программа переходит к выполнению следующего выражения.

Помните, что вместо выражения может использоваться целый блок, заключенный в фигурные скобки.

Форма 2:

if (условие)

выражение1;

else

выражение2;

следующее выражение;

Если условие возвращает значение true, выполняется выражение1, в противном случае выполняется выражение2. После этого выполняется следующее выражение.

Пример:

if (SomeValue < 10);

cout << "SomeValue is less than 10";

else

cout << "SomeValue is not less than 10!";

cout << "Done." << endl;

Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Джесс Либерти читать все книги автора по порядку

Джесс Либерти - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Освой самостоятельно С++ за 21 день. отзывы


Отзывы читателей о книге Освой самостоятельно С++ за 21 день., автор: Джесс Либерти. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img