Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Тернарная условная операция




//пример 38.

Что напечатает программа:

#define PRINT(int) printf("int = %d\n", int)

int x = 1, y = 1, z = 1;

x += y += z; y=y+z= 2; x =x+y=3
PRINT(x  <  y?  y  : x); 3 < 2 à ложь à x=3
PRINT(x < y? x++: y++); 3 < 2 à ложь à 2,  а потом y=3
PRINT(x); 3
PRINT(y); 3
PRINT(z  +=  x  <  y? x++: y++); (z+=(3<3à ложь à3) à 1+3=4, y=4
PRINT(y); 4
PRINT(z); 4

 

x = 3; y  =  z  = 4;

PRINT(z  >=  y  >=  x)? 1:  0); ((4>=4) >=3) à (1>=3)à ложь à0
PRINT((z  >=  y) && (y  >=  x)); ((4>=4) && (4>=3)) àистина(1)

 

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

 

//пример 39.

Проанализируйте использование тернарной операции в условии:

 

#include <iostream>

#include <conio.h>

 

using namespace std;

 

int main()

{

Bool b;

int i = 3;

int a [5] = {0, 1, 2, 3, 4}; //массив из 5 элементов типа int
                            //индекс элемента в массиве изменяется от 0 до 4

if (i >= 0 && i < 5 && a[i] == 3){

             cout << 1 << endl;

}

else {

   cout << 2 << endl;

}

 

if (!(i >= 0 && i < 5)? false: (a[i] == 3)) {

             cout << 1 << endl;

 }

else {

   cout << 2 << endl;

 }

 

if ((i >= 0 && i < 5)? (a[i] == 3): false) {

                cout << 1 << endl;

 }

else {

   cout << 2 << endl;

 }

_getch();     

return 0;

}

 

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

//пример 40.

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

 

#include <stdio.h>    

#include <conio.h>

 

int main()

Int x, y, z;

 

x = y = z = 1;

x += y += z;                      //y=2; x=3;

printf("%d\n", x < y? y: x);     //x=3

 

printf("%d\n", x < y? x++: y++); // y=2

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

printf("%d\n", y);                // y=3

 

z += x < y? x++: y++;

printf("%d\n", z);                // z=4;

printf("%d\n", y);                // y=4

 

x = 3; y = z = 4;

printf("%d\n", (z >= y >= x)? 1: 0);    //0 ложь

printf("%d\n", (z >= y)&& (y >= x)? 1: 0); //1 истина

printf(" \n ");                

 

_getch();     

return 0;

}

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

Запись алгебраических выражений

//пример 41.

// вычисление модуля

 

#define _USE_MATH_DEFINES

#include <cmath>                     

#include <iostream>

#include <conio.h>

 

using namespace std;

 

int main()

{

Int i;

long l;

double x;

cout << "Input i, l, x \n";                // -5, -555, -5.89

cin >> i >> l >> x;

    

cout << ' | ' << i << ' | ' << abs(i) << endl;  //-5 5

cout << ' | ' << l << ' | ' << abs(l) << endl;  //-555 555

cout << ' | ' << x << ' | ' << abs(x) << endl;  //-5.89 5.89

 

_getch();     

return 0;

}

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

//пример 42.

//тригонометрические функции

 

#define _USE_MATH_DEFINES

#include <cmath>

#include <stdio.h>    

#include <conio.h>

#ifndef M_PI

#define M_PI 3.14159265358979323846

#define M_PI_4 0.785398163397448309616

#endif             

int main()

{

double x = M_PI/2,

       y = cos(x);

 

printf("cos (%lf) = %lf\n",x, y);

printf("tan PI/4 =%lf\n", tan (M_PI_4));        
                      // другие функции – аналогично

printf("enter a real number between -1 and 1\n");

scanf_s("%lf",&x);

y = asin (x); 

printf("asin (%lf) = %lf \n ", x, y);

    

   _getch();

return 0;

 }

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

//пример 43.

//функция modf выделения целой и дробной частей числа:

 

#define _USE_MATH_DEFINES

#include <math.h>  

#include <stdio.h>    

#include <conio.h>

                  

int main()

{

double value = 1.2345,

  int_part,

  fraction_part;

fraction_part = modf (value, &int_part);

     

printf(" value:%lf int_part:%lf fraction_part:%lf \n ",
                value, int_part, fraction_part);

_getch();

return 0;

}

 

результат:
value:1.234500   int_part:1.000000  fraction:0.234500

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

//пример 44.

//функция fmod нахождения остатка числа:

 

#define _USE_MATH_DEFINES

#include <math.h>  

#include <stdio.h>    

#include <conio.h>

                  

int main()

{

double ab = 12.34, a;

    

a = fmod (ab, 10);      //остаток от деления числа ab на 10

printf("ab: %lf   a: %lf \n ", ab, a);

   

_getch();

return 0;

}

результат:
ab: 12.340000 a: 2.340000 

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

//пример 45.

// округление вещественного значения до ближайшего целого

#define _USE_MATH_DEFINES

#include <math.h>

#include <iostream>

#include <conio.h>

 

using namespace std;

                   

int main()

{

double x = 3.75,

      y = -3.14;

  cout << floor(x) << endl;    // 3 округление с недостатком

  cout << ceil(x) << endl; // 4 округление с избытком

  cout << floor(y) << endl;     // -4

  cout << ceil(y) << endl; // -3                      

 

 _getch();     

return 0;

}

 

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

Примеры записи  условных  операторов

 

//пример 46.

Варианты записи условия:

int a = 5;

if (a!= 0) {         /* вариант 1*/

cout << "a!=0\n";

}  

else {

cout << "a == 0\n";

      }

 

if (a == 0) {         /* вариант 2*/ 

cout << "a == 0\n";

}   
else {

cout << "a!= 0\n";

     }

 

if (a) {                           / * вариант 3, эквивалентен варианту 1, */
              cout << "a!= 0\n"; /* но требует понимания семантики оператора if */

}

else {

cout << "a == 0\n";

    }               

 

if (! a) {                                  /* вариант 4, эквивалентен варианту 2, */

         cout << "a == 0 \ n ";  /* но требует понимания семантики оператора if*/
    }

else {

cout << "a!= 0 \ n ";           
}

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

 

//пример 47.





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


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


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

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

Либо вы управляете вашим днем, либо день управляет вами. © Джим Рон
==> читать все изречения...

2318 - | 2042 -


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

Ген: 0.008 с.