×
Traktatov.net » Освой самостоятельно С++ за 21 день » Читать онлайн
Страница 437 из 448 Настройки

1: #include

2: int main()

3: {

4:    int x;

5:    cout << "Enter а nurober; ";

6:    cin >> x;

7:    cout << "You entered: " << x << endl;

8:    cerr << "Uh oh, this to cerr!" << endl;

9:    clog << "Ouh oh, this to clog!" << endl;

10:   return 0;

11: }

2. Напишите программу, предлагающую пользователю ввести свое полное имя с последующим выводом этого имени на экран.

1: #include

2: int main()

3: {

4:    char name[80];

5:    cout << "Enter your full name: ";

6:    cin.getline(name,80);

7:    cout << "\nYou entered: " << name << endl;

8:    return 0;

9: }

3. Перепишите листинг 16.9, отказавшись от использования методов putback() и ignore().

1: // Листинг 16.9. Измененный

2: #include

3:

4: int main()

5: {

6:    char ch;

7:    cout << "enter а phrase: ";

8:    while ( cin.get(ch) );

9:    {

10:      switch (ch)

11:      {

12:         case '!':

13:            cout << '$';

14:            break:

15:         case '#':

16:            break;

17:         default:

18:            cout << ch;

19:            break;

20:      }

21:   }

22:   return 0;

23: }

4. Напишите программу, считывающую имя файла в качестве аргумента командной строки и открывающую файл для чтения. Разработайте алгоритм анализа всех символов, хранящихся в файле, и выведите на экран только текстовые символы и знаки препинания (пропускайте все непечатаемые символы). Закройте файл перед завершением работы программы.

1: #include

2: enum BOOL { FALSE, TRUE };

3:

4: int main(int argc, char**argv) // возвращает 1 в случае ошибки

5: {

6:

7:    if (argc != 2)

8:    {

9:       cout << "Usage: argv[0] \n";

10:      return(1);

11:   }

12:

13:   // открываем поток ввода

14:   ifstream fin (argv[1],ios::binary);

15:   if (!fin)

16:   {

17:      cout << "Unable to open " << argv[1] << " for reading.\n";

18:      return(1);

19:   }

20:

21:   char ch;

22:   while ( fin.get(ch))

23:      if ((ch > 32 && ch < 127) || ch == '\n' || ch = '\t')

24:         cout << ch;

25:   fin.close();

26: }

Напишите профамму, которая выведет заданные аргументы командной строки обратном порядке, отбросив имя программы.

1: #include

2:

3: int main(int argc, char**argv) // возвращает 1 в случае ошибки

4: {

5:    for (int ctr = argc-1; ctr ; ctr--)

6:       cout << argv[ctr] << " ";

7:    return 0;

8: }

День 17

Контрольные вопросы 

 1. Можно ли использовать идентификаторы, объявленные в пространстве имен, без применения ключевого слова using?

Да, имена, определенные в пространстве имен, можно свободно использовать в программе, если указывать перед ними идентификатор пространства имен.

2. Назовите основные отличия между именованными и неименованными пространствами имен.

Неименованные пространства имен компилятор рассматривает так, как если бы к ним по умолчанию был применен оператор using. Следовательно, имена в них можно использовать без идентификатора пространства имен. Чтобы сделать доступными имена обычных пространств имен, необходимо либо обращаться к ним с помощью идентификатора пространства имен, либо использовать оператор using или ключевое слово using в объявлении пространства имен.