Решение задач по теме «Логический тип данных. Инструкция if. Тернарная операция. Вложенные инструкции if. Инструкция switch»

    1. Логические операции

  • Составить программу, печатающую значение true, если указанное высказывание является истинным, и false в противном случае: число N является четным двузначным числом
  • #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	int N;
    	bool b;
    	cout << "N = "; cin >> N;
    	b = N / 100 == 0 && N / 10 != 0 && N % 2 == 0;
    	// b = !(N / 100) && N / 10 && !(N % 2);
    	cout << boolalpha << b << endl;
    	return 0;
    }

    В комментарии — компактная запись, с опущенными операторами сравнения, но с применением инверсии. Манипулятор boolalpha — вывод логических величин в текстовом виде (например, false вместо 0).

    2. Неполное ветвление

  • Взять число n по модулю, если это число отрицательное
  • #include <iostream>
    using namespace std;
    
    int main() {
    	int n;
    	cout << "n = "; cin >> n;
    	if (n < 0) 
    		n = n * (-1);
    	cout << "|n| = " << n << endl;	
    	return 0;
    }

    3. Полное ветвление

  • Даны вещественные числа a и b, не равные друг другу. Меньшее заменить их средним геометрическим (средним пропорциональным), а большее — их средним арифметическим.
  • #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main() {
    	float a, b;
    	cout << "a = "; cin >> a;
    	cout << "b = "; cin >> b;
    
    	if (a > b) {
    		a = (a + b) / 2;
    		b = sqrtf(a * b);
    	} else {
    		a = sqrtf(a * b);
    		b = (a + b) / 2;
    	}
    
    	cout << "a = " << a << endl
    		 << "b = " << b << endl;
    	return 0;
    }
    

    4. Каскадные ветвления (ветвления, следующие друг за другом, обычно — неполные)

  • Даны три целых числа. Найти количество положительных чисел в исходном наборе.
  • #include <iostream>
    using namespace std;
    
    int main() {
    	int a, b, c, i = 0;
    	cout << "a = "; cin >> a;
    	cout << "b = "; cin >> b;
    	cout << "c = "; cin >> c;
    
    	if (a > 0) ++i;
    	if (b > 0) ++i;
    	if (c > 0) ++i;
    	
    	cout << "Количество положительных чисел равно " << i << endl;
    	return 0;
    }
    

    5. Вложенные ветвления

  • Даны три числа. Найти сумму двух наибольших из них.
  • #include <iostream>
    using namespace std;
    
    int main() {
    	int a, b, c;
    
    	cout << "a = "; cin >> a;
    	cout << "b = "; cin >> b;
    	cout << "c = "; cin >> c;
    
    	if (a > b)
    		if (b > c)
    			cout << a + b << endl;
    		else
    			cout << a + c << endl;
    	else
    		if (a > c)
    			cout << a + b << endl;
    		else
    			cout << b + c << endl;
    	return 0;
    }
    

    6. Тернарная операция

  • Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число.
  • #include <iostream>
    using namespace std;
    
    int main() {
    	int a;
    	cout << "a = "; cin >> a;
    	cout << "a = " << (a > 0 ? ++a : a - 2) << endl;
    	return 0;
    }
    

Добавить комментарий