Типовые задания самостоятельной работы

Использование функций возвращающих и не возвращающих значение (void)
  • I. Функции возвращающие значение
  • 1. Составить программу в которой используется функция нахождения максимального из двух чисел.
  • #include <iostream>
    using namespace std;
    
    int maxAorB(int, int);
    
    int main() {
        int a, b;
        cout << "a = "; cin >> a;
        cout << "b = "; cin >> b;
        cout << "Максимальное из двух чисел "
             << maxAorB(a, b)
             << endl;
    
        return 0;
    }
    int maxAorB(int x, int y) {
        return (x > y) ? x : y;
    }
    
    
  • 2. Составить программу в которой бы использовалась логическая функции, определяющая четное ли введенное число k.
  • #include <iostream>
    using namespace std;
    
    bool even(int);
    
    int main() {
        int k;
        cout << "k = "; cin >> k;
        cout << k << (even(k) ? " чётное" : " нечётное");
    
        //if (even(k))
        //    cout << k << " чётное" << endl;
        //else
        //    cout << k << " нечётное" << endl;
    
        return 0;
    }
    bool even(int x) {
        return !(x % 2) ? true : false;
    }
    

    Примечание. В комментариях – вариант с условной инструкцией if.

  • 3. Составить программу нахождения наибольшего общего делителя (НОД) двух чисел, используя алгоритм Евклида (НОД(a - b, a) = НОД(a, b)), с помощью функции.
  • #include <iostream>
    using namespace std;
    
    int nod(int, int);
    
    int main() {
        int a, b;
        cout << "a = "; cin >> a;
        cout << "b = "; cin >> b;
        cout << "НОД (" << a << ", " << b << ") = " << nod(a, b) << endl;
    
        return 0;
    }
    int nod(int x, int y) {
        while(x != y) {
            if (x > y)
                x = x - y;
            else
                y = y - x;
        }
        return x;
    }
    

    Вариант функции с использованием операции % – взятия остатка от деления:

    int nod(int x, int y) {
        while(x && y) {
            if (x >= y)
                x %= y;
            else
                y %= x;
        }
        return x | y; // побитовое or
    }
    
  • 5. Составить программу в которой используется функция для вычисления F(x):
  • funct1

    #include <iostream>
    using namespace std;
    
    float f(float);
    
    int main() {
    	float x;
    	cout << "x = "; cin >> x;
    	cout << "f(x) = " << f(x) << endl;
    	return 0;
    }
    
    float(float g) {
    	if (g <= 3)
    		return x * x - 3 * x + 9;
    	else
    		return 1 / (x * x * x + 6);
    }
    
  • II. Функции не возвращающие значение
  • 6. Составить программу, использующую функцию вывода треугольника, состоящего из символа “*” вида:
  • 
    *******
     *****
      ***
       *
    
    
    #include <iostream>
    using namespace std;
    
    void star(int);
    
    int main() {
    	int n;
    	cout << "n = "; cin >> n;
    	cout << endl;
    	star(n); // n - нечетное
    
    	return 0;
    }
    void star(int x) {
    	for (int i = 1; i <= x; i++) {
    		for (int j = 1; j <= x; j++)
    			if (j >= i && j <= x - i +1)
    				cout << '*';
    			else
    				cout << ' ';
    	cout << '\n';
    	}
    }
    
  • 7. Составить программу в которой используется функция разложения числа на простые множители.
  • #include <iostream>
    using namespace std;
    
    void mult(int);
    
    int main() {
    	int n;
    	cout << "n = "; cin >> n;
    	mult(n);
    	return 0;
    }
    
    void mult(int k) {
    	int i = 2;
    	while (i <= k)
    		if (!(k % i)) {
    			k /= i;
    			cout << i << " ";
    		}
    		else
    			i++;
    }
    

Print Friendly, PDF & Email

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