Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Использование функций при программировании на C++
4.6 Перегрузка функций
Язык C++ позволяет связать с одним и тем же именем функции различные определения, то есть возможно существование нескольких функций с одинаковым именем. У этих функций может быть разное количество параметров или разные типы параметров. Создание двух или более функций с одним и тем же именем называется перегрузкой имени функции. Перегруженные функции создают, когда одно и то же действие следует выполнить над разными типами входных данных.
В приведённом далее тексте программы три функции с именем Pow. Первая выполняет операцию возведения вещественного числа в дробную степень , где и — целые числа. Вторая возводит вещественное число в целую степень , а третья — целое число в целую степень5Как известно, операция не определена при и , а так же при возведении отрицательного значения в дробную степень , где — чётное число (п. 2.7).Пусть наши функции в этих случаях возвращают 0. . Какую именно функцию вызвать компилятор определяет по типу фактических параметров. Так, если — вещественное число, а — целое, то оператор Pow(a,k) вызовет вторую функцию, так как она имеет заголовок float Pow(float a, int n). Команда Pow((int)a,k) приведёт к вызову третьей функции float Pow(int a, int n), так как вещественная переменная преобразована к целому типу. Первая функция float Pow(float a, int k, int m) имеет три параметра, значит, обращение к ней осуществляется командой Pow(a,k,m).
#include <iostream> using namespace std; #include <math.h> float Pow( float a, int k, int m) //Первая функция { cout<<"Функция 1 \t"; if ( a==0) return 0; else if ( k==0) return 1; else if ( a>0) return exp ( ( float ) k/m *log ( a ) ); else if (m%2!=0) return -(exp ( ( float ) k/m *log (-a ) ) ); } float Pow( float a, int n ) //Вторая функция { float p; int i; cout<<"Функция 2 \t"; if ( a==0) return 0; else if ( n==0) return 1; else if ( n<0) { n= -n; p=1; for ( i =1; i<=n; i ++) p*=a; return ( float ) 1/p; } else { p=1; for ( i =1; i<=n; i ++) p*=a; return p; } } float Pow( int a, int n ) //Третья функция { int i, p; cout<<"Функция 3 \t"; if ( a==0) return 0; else if ( n==0) return 1; else if ( n<0) { n= -n; p=1; for ( i =1; i<=n; i ++) p*=a; return ( float ) 1/p; } else { p=1; for ( i =1; i<=n; i ++) p*=a; return p; } } int main ( ) { float a; int k, n,m; cout<<"a="; cin >>a; cout<<"k="; cin >>k; cout<<"s="<<Pow( a, k )<<"\n"; //Вызов 2-й функции. cout<<"s="<<Pow ( ( int ) a, k )<<"\n"; //Вызов 3-й функции. cout<<"a="; cin >>a; cout<<"k="; cin >>k; cout<<"m="; cin >>m; cout<<"s="<<Pow( a, k,m)<<endl; //Вызов 1-й функции. return 0; }
Результаты работы программы:
a=5.2 k=3 Функция 2 s=140.608 Функция 3 s=125 a=-8 k=1 m=1 Функция 1 s=-8 a=5.2 k=-3 Функция 2 s=0.00711197 Функция 3 s=0.008 a=-8 k=1 m=3 Функция 1 s=-2