Clase 02: Asignacin, formato y funciones matemticas Operaciones de asignacin = Operaciones de acumulacin Formato de salida Funciones matemticas Operaciones de asignacin = Operaciones de acumulacin Conteo Ejemplo #include <iostream> using namespace std; int main() { int n=8,k; cout<<"El valor inicial de n es 8\n"; k=++n; cout<<"n= "<<n<<" k= "<<k<<endl; //Muestra 9 y 9 n=8; k=n++; cout<<"n= "<<n<<" k= "<<k<<endl; //Muestra 9 y 8 system("pause"); return 0; } Formato de salida de nmeros #include <iostream> #include <iomanip> using namespace std; int main() { //Muestra sin formato cout<<7<<endl; cout<<975<<endl; //Uso de setw. Establece un ancho de 8 cout<<setw(8)<<7<<endl; cout<<setw(8)<<975<<endl; cout<<setw(8)<<975.0/7<<endl; //Uso de fixed. Muestra seis decimales cout<<fixed<<975.0/7<< endl; system("pause"); return 0; } Manipulador Accin setw(n) Establece el ancho del campo en n. fixed Se muestra un punto decimal y usa seis dgitos por omisin despus del punto decimal. Rellena con ceros a la derecha si es necesario. El formato de nmeros desplegado por cout puede controlarse mediante manipuladores. Si el manipulador requiere un argumento debe incluirse la librera <iomanip>. Presentamos los manipuladores ms comunes: Formato de salida de nmeros #include <iostream> #include <iomanip> using namespace std; int main() { //setfill('carcter'), rellena con un caracter cout<<setw(8)<<setfill('*')<<12.3<<endl; //setprecision(n), muestra n cifras significativas cout<<1024.0/7<<endl; cout<<setprecision(10)<<1024.0/7<<endl; //despues de fixed muestra n cifras decimales cout<<fixed<<setprecision(10)<<1024.0/7<<endl; system("pause"); return 0; } Manipulador Accin setfill('carcter') Establece el carcter de relleno a la izquierda. Por defecto es un espacio. setprecision(n) Muestra n cifras significativas. Si se designa antes fixed, n ser el nmero de decimales. Formato de salida de nmeros #include <iostream> #include <iomanip> using namespace std; int main() { //Muestra en notacion cientifica cout<<scientific<<123.45<<endl; cout<<fixed<<setprecision(2)<<scientific<<123.45<< endl; //Convierte a la base indicada cout<<oct<<15<<endl; cout<<hex<<15<<endl; cout<<dec<<0xF<<endl; //Muestra la base cout<<showbase<<oct<<15<<endl; cout<<showbase<<hex<<15<<endl; cout<<showbase<<dec<<0xF<<endl; system("pause"); return 0; } Manipulador Accin scientific Muestra los nmeros en notacin cientfica. oct, hex, dec Muestra en la base indicada. showbase Muestra la base usada. 0 a la izquierda es para nmeros octales y 0x es para hexadecimales. Formato de salida de nmeros #include <iostream> using namespace std; int main() { //Muestra los valores true o falso //en lugar de 1 o 0 bool respuesta = true; cout << respuesta << endl; cout << boolalpha << respuesta << endl; //Muestra 6 digitos o rellena con ceros cout << 123.4 << endl; cout << showpoint << 123.4 << endl; //Muestra el signo + en todos los positivos cout << showpos << 123.4 << endl; system("pause"); return 0; } Manipulador Accin showpoint Siempre muestra seis dgitos en total y rellena con ceros a la derecha si es necesario. Para valores mayores se muestra en notacin cientfica. showpos Muestra el signo + en todos los nmeros positivos. boolalpha Muestra los valores lgicos como verdadero y falso, en lugar de 1 y 0. Formato de salida de nmeros Manipulador Accin left Justifica a la izquierda todos los nmeros. right Justifica a la derecha todos los nmeros. uppercase Muestra dgitos hexadecimales y el exponente en notacin cientfica en maysculas. noboolalpha Muestra los valores booleanos como 1 y 0, en lugar de verdadero y falso. noshowbase No muestra los nmeros octales con 0 a la izquierda ni los hexadecimales con 0x a la izquierda. noshowpoint No usa punto decimal para reales sin parte decimal, ni rellena con ceros a la derecha y muestra un mximo de seis dgitos decimales. noshowpos No muestra el signo + a la izquierda de un nmero positivo. nouppercase Muestra dgitos hexadecimales y el exponente en notacin cientfica en minsculas. Ejercicio 1 Ejercicio 2 Funciones matemticas Se debe incluir la librera <cmath>. A continuacin algunas funciones: Nota: La lista completa de funciones y constantes matemticas se encuentra el final de las diapositivas. Ejemplo #include <iostream> #include <cmath> using namespace std; int main() { int altura; double tiempo; altura = 800; tiempo = sqrt(2 * altura / 32.2); cout << "Tardar\xA0 " << tiempo << " segundos en caer "<< altura << " pies.\n"; system("pause"); return 0; } Ejercicio 3 Ejercicio 4 Ejercicio 5 Ejercicio 6 Funciones matemticas en C++ Nombre Descripcin Abs(Decimal) Devuelve el valor absoluto de un nmero Decimal. Abs(Double) Devuelve el valor absoluto de un nmero de punto flotante de precisin doble. Abs(Int16) Devuelve el valor absoluto de un entero de 16 bits con signo. Abs(Int32) Devuelve el valor absoluto de un entero de 32 bits con signo. Abs(Int64) Devuelve el valor absoluto de un entero de 64 bits con signo. Abs(SByte) Devuelve el valor absoluto de un entero de 8 bits con signo. Abs(Single) Devuelve el valor absoluto de un nmero de punto flotante de precisin sencilla. Acos Devuelve el ngulo cuyo coseno es el nmero especificado. Asin Devuelve el ngulo cuyo seno es el nmero especificado. Atan Devuelve el ngulo cuya tangente corresponde al nmero especificado. Atan2 Devuelve el ngulo cuya tangente es el cociente de dos nmeros especificados. BigMul Calcula el producto completo de dos nmeros de 32 bits. Ceiling(Decimal) Devuelve el valor integral ms pequeo que es mayor o igual que el nmero decimal especificado. Ceiling(Double) Devuelve el valor integral ms pequeo que es mayor o igual que el nmero de punto flotante de precisin doble especificado. Cos Devuelve el coseno del ngulo especificado. Cosh Devuelve el coseno hiperblico del ngulo especificado. DivRem(Int32, Int32, Int32%) Calcula el cociente de dos nmeros enteros de 32 bits con signo y devuelve tambin el resto de la divisin como parmetro de salida. DivRem(Int64, Int64, Int64%) Calcula el cociente de dos nmeros enteros de 64 bits con signo y devuelve tambin el resto de la divisin como parmetro de salida. Exp Devuelve e elevado a la potencia especificada. Floor(Decimal) Devuelve el nmero entero ms grande menor o igual que el nmero decimal especificado. Floor(Double) Devuelve el nmero entero ms grande menor o igual que el nmero de punto flotante de precisin doble especificado. IEEERemainder Devuelve el resto de la divisin de dos nmeros especificados. Log(Double) Devuelve el logaritmo natural (en base e) de un nmero especificado. Log(Double, Double) Devuelve el logaritmo de un nmero especificado en una base determinada. Log10 Devuelve el logaritmo en base 10 de un nmero especificado. Max(Byte, Byte) Devuelve el mayor de dos enteros de 8 bits sin signo. Max(Decimal, Decimal) Devuelve el mayor de dos nmeros decimales. Max(Double, Double) Devuelve el mayor de dos nmeros de punto flotante de precisin doble. Max(Int16, Int16) Devuelve el mayor de dos enteros de 16 bits con signo. Max(Int32, Int32) Devuelve el mayor de dos enteros de 32 bits con signo. Max(Int64, Int64) Devuelve el mayor de dos enteros de 64 bits con signo. Max(SByte, SByte) Devuelve el mayor de dos enteros de 8 bits con signo. Max(Single, Single) Devuelve el mayor de dos nmeros de punto flotante de precisin sencilla. Max(UInt16, UInt16) Devuelve el mayor de dos enteros de 16 bits sin signo. Max(UInt32, UInt32) Devuelve el mayor de dos enteros de 32 bits sin signo. Max(UInt64, UInt64) Devuelve el mayor de dos enteros de 64 bits sin signo. Min(Byte, Byte) Devuelve el menor de dos enteros de 8 bits sin signo. Min(Decimal, Decimal) Devuelve el menor de dos nmeros decimales. Min(Double, Double) Devuelve el menor de dos nmeros de punto flotante de precisin doble. Min(Int16, Int16) Devuelve el menor de dos enteros de 16 bits con signo. Min(Int32, Int32) Devuelve el menor de dos enteros de 32 bits con signo. Min(Int64, Int64) Devuelve el menor de dos enteros de 64 bits con signo. Min(SByte, SByte) Devuelve el menor de dos enteros de 8 bits con signo. Min(Single, Single) Devuelve el menor de dos nmeros de punto flotante de precisin sencilla. Min(UInt16, UInt16) Devuelve el menor de dos enteros de 16 bits sin signo. Min(UInt32, UInt32) Devuelve el menor de dos enteros de 32 bits sin signo. Min(UInt64, UInt64) Devuelve el menor de dos enteros de 64 bits sin signo. Pow Devuelve un nmero especificado elevado a la potencia especificada. Round(Decimal) Redondea un valor decimal al valor integral ms prximo. Round(Double) Redondea un valor de punto flotante de precisin doble al valor integral ms cercano. Round(Decimal, Int32) Redondea un valor decimal al nmero especificado de dgitos fraccionarios. Round(Decimal, MidpointRounding) Redondea un valor decimal al entero ms prximo. Un parmetro especifica el redondeo del valor si est a la mitad del intervalo entre dos nmeros. Round(Double, Int32) Redondea un valor de punto flotante de precisin doble al nmero especificado de dgitos fraccionarios. Round(Double, MidpointRounding) Redondea un valor de punto flotante de precisin doble al entero ms cercano. Un parmetro especifica el redondeo del valor si est a la mitad del intervalo entre dos nmeros. Round(Decimal, Int32, MidpointRounding) Redondea un valor decimal al nmero especificado de dgitos fraccionarios. Un parmetro especifica el redondeo del valor si est a la mitad del intervalo entre dos nmeros. Round(Double, Int32, MidpointRounding) Redondea un valor de punto flotante de precisin doble al nmero especificado de dgitos fraccionarios. Un parmetro especifica el redondeo del valor si est a la mitad del intervalo entre dos nmeros. Sign(Decimal) Devuelve un valor que indica el signo de un nmero decimal. Sign(Double) Devuelve un valor que indica el signo de un nmero de punto flotante de precisin doble. Sign(Int16) Devuelve un valor que indica el signo de un entero de 16 bits con signo. Sign(Int32) Devuelve un valor que indica el signo de un entero de 32 bits con signo. Sign(Int64) Devuelve un valor que indica el signo de un entero de 64 bits con signo. Sign(SByte) Devuelve un valor que indica el signo de un entero de 8 bits con signo. Sign(Single) Devuelve un valor que indica el signo de un nmero de punto flotante de precisin sencilla. Sin Devuelve el seno del ngulo especificado. Sinh Devuelve el seno hiperblico del ngulo especificado. Sqrt Devuelve la raz cuadrada de un nmero especificado. Tan Devuelve la tangente del ngulo especificado. Tanh Devuelve la tangente hiperblica del ngulo especificado. Truncate(Decimal) Calcula la parte entera de un nmero decimal especificado. Truncate(Double) Calcula la parte entera de un nmero de punto flotante de precisin doble especificado. Constantes matemticas en C++ Para incluir constantes matemticas en C++, debemos declarar al principio del programa #define _USE_MATH_DEFINES #define _USE_MATH_DEFINES #include <iostream> using namespace std; int main() { cout << "e = " <<M_E<<endl; cout << "pi = " << M_PI << endl; system("pause"); return 0; } Smbolo Expresin Valor M_E e 2.71828182845904523536 M_LOG2E log2(e) 1.44269504088896340736 M_LOG10E log10(e) 0.434294481903251827651 M_LN2 ln(2) 0.693147180559945309417 M_LN10 ln(10) 2.30258509299404568402 M_PI pi 3.14159265358979323846 M_PI_2 pi/2 1.57079632679489661923 M_PI_4 pi/4 0.785398163397448309616 M_1_PI 1/pi 0.318309886183790671538 M_2_PI 2/pi 0.636619772367581343076 M_2_SQRTPI 2/sqrt(pi) 1.12837916709551257390 M_SQRT2 sqrt(2) 1.41421356237309504880 M_SQRT1_2 1/sqrt(2) 0.707106781186547524401 Fin Clase 02 Profesor: Carlos Daz