> year; switch (year)      { case -500:         case -400: cout"> Запись оператора присваивания внутри условия
Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Запись оператора присваивания внутри условия




int x = 5, y = 2;

 

if (x == y) {

cout << "yes\n"; //сравнение
 }

     else {

     cout << "no\n";  //выведет "no"

}

if (x = y) {

cout << "yes \n "; //присваивание
}

       else {

cout << "no \n ";        //выведет "yes"

}

 

Последнее выражение равносильно следующей последовательности операторов:

x = y;

if (x) {

cout << "yes \n ";

}

else {

cout << "no \n ";

}

 

-----------------------------------------------------------------------------------------

//пример 48.

Оптимизация записи условий

Запись

bool r = false;

if (a < b) {

r = true;

}

равносильна записи bool r = a < b;

-----------------------------------------------------------------------------------------

 

//пример 49.

int main()           // «прокрутить» операторы вручную и проверить результаты

{

int x, y = 1, z;

 

if (y!= 0) {

x = 5;

}

printf(" %d\n", x);               // 5

     

if (y == 0) {

x = 3;

}

 else {

x = 5;

}

printf(" %d\n", x);               // 5                  

 

x = 1;

if (y < 0) {

if (y > 0) {

x = 3;

             }

            else {

x = 5;

            }

}

printf(" %d\n", x);                                   // x=1

 

if (z = y < 0) {

x = 3;

}

else {

if (y == 0) {

x = 5;

      }

else {

x = 7;

       }

}  

printf(" %d %d\n", x, z);                                // x=7 z=0
                                                      

if (z = (y == 0)) {

x = 5;

}

x = 3;

printf(" %d %d\n", x, z);                                // x=3 z=0

 

if (x = z = y);

x = 3;

printf(" %d %d\n", x, z);                           // x=3 z=1

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

Примеры использования оператора switch

//пример 50.

Печать событий в зависимости от года

#include <locale.h>

int main()

 {

setlocale (LC_ALL, ".1251");       

       int year;

        

 cin >> year;

switch (year)

     { case -500: 

       case -400: cout << "древнегреческий абак";break;

       case 480: 

       case 490:

       case 500: cout << "первые записи в 10c/c"; break;

       case 1642: cout << "машина Б.Паскаля"; break;

       default: cout << "все остальное";

}

cout << endl;

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

 

//пример 51.

Распознавание вводимых символов

int main()

{

Char symbol;

 

cin >> symbol;

switch (symbol)

{

case '0':       

  case '1':        

  case '2':

  case '3': cout << "cifra";break;

  case 'a':  

   case 'b':

  case 'c':  cout << "bukva"; break;

  case 'A':

  case 'B':

  case 'C': cout << "BUKVA";break;

default: cout << "?????";

}

cout << endl;   

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

 

//пример 52.

Вывод сообщений о работе программы

int main()

{

Char err;

     

cin >> err;

switch (err)

    { case '0': cout << "normal";break;

      case '2':

      case '4':

      case '6': cout << "file";break;

      case '7':

      case '9': cout << "cod " << err; break;

      default: cout << "error =" << err;

  }

cout << endl;   

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

 

//пример 53.

Селектор перечислимого типа

Обратите внимание на организацию вывода значения переменной перечисляемого типа:

int main()

{

  enum Season {Winter, Spring, Summer, Autumn};

Season p1;

Int i;

cin >> i;

Switch (i)

          { case 0: p1 = Winter; break;

           case 1: p1 = Spring; break;

           case 2: p1 = Summer; break;

           case 3: p1 = Autumn; break;

  }

  //хотя гораздо проще записать вместо оператора switch (i){} оператор
  // p1 = Season(i);

 

  switch (p1)

         {case Winter: cout << "Winter"; break;

          case Spring: cout << "Spring"; break;

          case Summer: cout << "Summer"; break;

          case Autumn: cout << "Autumn"; break;

}

cout << endl;   

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

 

//пример 54.

Селектор логического типа

// поиск max (x+y+z, xyz)
int main()

{

double X,Y, Z, Max, a, b;

 

cout << "Input X, Y, Z:";

cin >> X >> Y >> Z;

a = X + Y + Z;

b = X * Y * Z;

switch (int(a > b))

{ case 1: Max = a; break;

  case 0: Max = b; break;

 }

cout << "Max=" << Max <<endl;

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

 

//пример 55.

определение нажатия управляющей клавиши-стрелки:

В IBM-совместимых компьютерах  каждой клавише присваивается скан-код, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата. При нажатии некоторых клавиш (в том числе, и стрелок) генерируется «расширенный» скан-код, состоящий из двух байтов – «префикса» (обычно это E0) и собственно кода клавиши. В рассматриваемой ниже программе первый вызов функции _ getch () как раз и считывает первый байт расширенного кода («префикс»). Второй вызов функции _ getch () считывает собственно код клавиши, который затем и анализируется.

 

int main()

Int key;

 

printf("\n najmite ctrelku::\n ");

key = _getch();

key = _getch();

switch (key)

{ case 77: printf("strelka vpravo \n "); break;

    case 75: printf("strelka vlevo \n "); break;

    case 72: printf("strelka vverx \n "); break;

    case 80: printf("strelka vniz \n "); break;

    default: printf("ne strelka \n "); break;

}

 

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 203 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

4330 - | 4097 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.