Los tipos de números integrados de C++ se pueden dividir en enteros y números de punto flotante.
Los enteros son números sin parte decimal como 0, 691 o -2.
Los números de punto flotante son números con punto decimal como 6.02214076, 0.1 o -1.616.
El siguiente ejemplo muestra la declaración y la inicialización de cuatro variables distintas
int m_morales{9241}; // base 10: 0-9
int a_apaec{0x24CD}; // base 16: 0-9 and A-F
int m_gargan{0b10010000011001}; // base 2: 0-1
int b_reilly{022031}; // base 8: 0-7
// Leading with a 0 not the letter o.
Cuando asignas un valor a una variable int, puedes hacerlo directamente con un literal.
Un literal es un número escrito directamente en el código, como 9241.
Hay distintos literales enteros para varias bases de representación.
Los literales enteros decimales son los más comunes y usan los dígitos 0 a 9.
Al añadir un prefijo especial, como 0x, es posible usar otras bases.
El ejemplo anterior muestra el número 9241 en sus cuatro representaciones y prefijos.
Todas las variables se inicializan al mismo valor.
Para más detalles sobre los distintos sistemas de representación, echa un vistazo a un pequeño tutorial.
Puedes usar un apóstrofo para separar los dígitos y que sea más fácil de leer.
9'241 es lo mismo que 0b0100'100'0001'1001 o 92'4'1.
Los literales de punto flotante vienen en dos formas.
Además del intuitivo 0.0024, es posible usar su notación científica 2.4e-3.
El tipo de punto flotante más común es double.
C++ admite +, -, *, /, ( y ) y % para formar expresiones.
El resultado de la operación entre dos enteros también es un entero.
5 / 2 devolverá 2.
Cuando uno de los tipos involucrados es de punto flotante, el resultado también será de punto flotante.
5.0 / 2 y 5 / 2.0 devolverán 2.5.
% es el operador de residuo y devolverá el residuo de una división entera: 5%3 es 2.
El operador de asignación asigna un literal a una variable. Siempre se realiza de derecha a izquierda, y nunca al revés.
int length = 5;
int width = 2;
length = width;
Aquí, el valor entero 5 se asigna a la variable length.
Luego, el valor entero 2 se asigna a la variable width.
Por último, el valor de width se copia a la variable length y el valor anterior, 5, se pierde.
Ten en cuenta también que solo asignamos el valor de width a length en el momento de la operación de asignación.
Por lo tanto, si el valor de width cambia más adelante, no afectará el valor que toma length.
El operador de asignación se puede combinar con los demás operadores (aritméticos y a nivel de bits), conocidos como operadores de compound assignment: +=, -=, *=, /=, %=.
Estos operadores modifican el valor actual de una variable realizando una operación sobre él.
// we start with 0 people
int people{};
// we need 0 eggs
int eggs{};
// two people joined:
people += 2;
// people is now 2
// let's add 3 eggs per person
eggs += 3 * people;
// eggs is now 6
Las variables people y eggs se inicializan a 0.
Luego, sumamos el valor entero 2 al valor existente 0 de la variable people y lo asignamos de vuelta a people.
Ahora people es 2.
Después, sumamos 3 huevos por cada persona, lo que da 6 huevos en total.
Ahora sumamos este 6 al valor existente 0 de la variable eggs y lo asignamos de vuelta a eggs.
Ahora eggs será 6.
La expresión equivalente sería people = people + 2 y eggs = eggs + (3 * people).
En este ejercicio, vas a escribir código para ayudar a un freelancer a comunicarse con un gerente de proyecto. Tu tarea es crear algunas utilidades para calcular rápidamente tarifas diarias y mensuales, opcionalmente con un descuento dado.
Primero establecemos algunas reglas entre el freelancer y el gerente del proyecto:
A veces, el freelancer ofrece aplicar un descuento sobre su tarifa diaria (por ejemplo, para sus clientes más leales o para clientes sin fines de lucro).
Los descuentos se modelan como números fraccionarios que representan porcentajes, por ejemplo, 25.0 (25 %).
Implementa una función llamada daily_rate que calcule la tarifa diaria a partir de una tarifa por hora como parámetro.
El contrato define que un día tiene 8 horas facturables.
daily_rate(60)
// => 480.0
La tarifa diaria devuelta debe ser de tipo double.
Implementa una función apply_discount que calcule el precio después de un descuento.
Debe aceptar dos parámetros: el precio original y la tasa de descuento en porcentaje.
apply_discount(150, 10)
// => 135.0
El valor devuelto siempre debe ser de tipo double, sin redondear de ninguna forma.
Implementa una función monthly_rate que calcule la tarifa mensual con descuento.
Debe tener dos parámetros: una tarifa por hora y el descuento en porcentaje.
monthly_rate(77, 10.5)
// => 12130
La tarifa mensual devuelta debe redondearse hacia arriba (tomar el techo) al entero más cercano.
Implementa una función days_in_budget que reciba un presupuesto, una tarifa por hora y un descuento, y calcule cuántos días completos de trabajo cubre.
days_in_budget(20'000, 80, 11.0)
// => 35
El número de días devuelto debe redondearse hacia abajo (tomar el piso) al entero inferior.
Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.