Wednesday, February 1, 2023

Ejercicios Resueltos de c++ para Principiantes

introdución programación c++

Todos siempre se preguntan: ¿Cuál lenguaje de programación se debe estudiar primero, C o C++? Y desde mi experiencia, todos los autores coinciden en que C++ es mejor, ya que adquieres los conocimientos de C automáticamente. Ahora bien, lo difícil no está en aplicar un código; sino hacer que dicho código cumpla con las exigencias y expectativas de un posible usuario.

 

Las matemáticas, la contabilidad, estructuras discretas y otras materias, se hacen destacar acá puesto que aprender un código, ya está en muchos libros, pero el razonamiento que te lleva a asumir una perspectiva y a formarte una idea sobre los pasos que debes realizar para obtener un programa es lo que necesitamos y no está explícito en las explicaciones de programación.
Empezaremos con unos ejercicios elementales, con el objetivo de ver cómo debemos razonar antes de resolver un ejercicio de programación en c++? ¿cuáles son los errores más comunes en c++? ¿qué necesitamos aprender de otras materias para poder programar?. Tomaré los ejercicios de la Universidad Centroccidental Lisandro Alvarado, de la ing. Informática:

ejercicios de programación en c++

El primer paso en cualquier ejercicio que se nos presente de programación será reconocer los términos o palabras que sugieren lo que debemos hacer, incluso las palabras que nos dicen quién debe hacerlas. Esto lo menciono, puesto que en el tema: programación orientada a objetos, debemos identificar las clases, y este es el método para saberlas con rápidez. Ubicamos palabras claves.

En el ejercicio nro 1. Las claves están en: costo, inicial, cuotas, 2 años. Sin duda alguna, necesitamos conocimientos básicos de contabilidad: cómo se calcula un porcentaje? a qué se refieren por cuotas mensuales?.

Cómo saber el porcentaje dado un monto? utilizaremos la llamada regla de 3, sí el monto equivale al 100%, entonces el 20% equivale a? y así se obtiene el 20% de un monto. Por otra parte, en 2 años ¿cuántas cuotas mensuales existen? pues la cantidad de meses que hay en dos años, que son 24 meses, 24 cuotas mensuales. Ya solo para terminar el ejercicio, debemos al monto restarle el porcentaje, y ese resultado dividirlo entre 24. El código en c++ queda así:

#include <iostream>
using namespace std;
int main() {
int cuota,inicial,costo;
cout << "Inserte el Costo del Curso en Bsf Aqui ";
cin >> costo;
inicial=costo*20/100;
cuota=(costo-inicial)/24;
cout << "La inicial a pagar es de Bsf " << inicial << endl;
cout << "El monto de las cuotas es de Bsf " << cuota << endl;
return 0;
}
view raw curso.c++ hosted with ❤ by GitHub


Este código se realizó de forma similar al "Hello World" que viene por defecto en Eclipse, la única complejidad fue agregarle las fórmulas.

Ahora, el segundo ejercicio se trata de determinar si un número dado es par o impar! La mayoría asocia que un número es par porque al dividirlo entre 2 el resultado es exacto, es decir: 50/2=25 ¿cómo lo explico en términos de c++? Pues sencillo, debemos razonar en términos del residuo de la división, ya que si es cero el residuo de la operación, el número es par y de lo contrario, no lo será. Veamos el código:

#include <iostream>
using namespace std;
int main() {
int numero,resto;
cout << "Ingrese el numero: ";
cin >> numero;
resto=numero%2;
if (resto==0) cout << "el numero es par";
else cout << "el numero es impar";
return 0;
}
view raw impar.c++ hosted with ❤ by GitHub


El ejercicio nro 4, si me dió mucho que pensar! Puesto que cométi el error de pensar que los números enteros solo abarcaban del cero al nueve y miren como hice el ejercicio la primera vez:

#include <iostream>
using namespace std;
int main() {
char dia;
cout << "Introduzca un Numero del 0 al 9: ";
cin >> dia;
switch(dia)
{
case '0': cout << "Domingo";
break;
case '1': cout << "Lunes";
break;
case '2': cout << "martes";
break;
case '3': cout << "miercoles";
break;
case '4': cout << "jueves";
break;
case '5': cout << "viernes";
break;
case '6': cout << "sabado";
break;
case '7': cout << "domingo";
break;
case '8': cout << "Lunes";
break;
case '9': cout << "Martes";
break;
default: cout << "ingrese un numero del 0 al 9";
break;
}
return 0;
}
view raw ejercicio4.cpp hosted with ❤ by GitHub


Me gustó porque ensayé lo que es el uso del case en c++, sin embargo, los números enteros son todos los números positivos y negativos! Por lo que, mi ejercicio está mal, porque estoy omitiendo una infinita cantidad de números. Ahora, cómo dividir los números para cada día? hay muchas opciones, como por ejemplo asignar cada cierta cantidad de números a cada día: del 0 al 20 es lunes y así; ó verlo de la manera en que lo hice: los números positivos y pares menores que cien, los números positivos e impares mayores que cien, los números negativos y menores que -mil y así sucesivamente a cada día dicha asignación, observemos en cuestión de código:

#include <iostream>
using namespace std;
int main() {
int n;
cout << "Introduzca un Numero Entero: ";
cin >> n;
if (n==1) cout << "Lunes";
else
if (n%2==0 and n<100 and n>0) cout << "Martes";
else
if (n%2==1 and n<100 and n>0) cout << "Miercoles";
else
if (n==-1*-n and n<-1000) cout << "Jueves";
else
if (n>100 and n%2==1) cout << "Viernes";
else
if (n>100 and n%2==0) cout << "Sabado";
else
if (n==-1*-n and n>-1000) cout << "Domingo";
return 0;
}
view raw ifelse.cpp hosted with ❤ by GitHub


Evidentemente, cada quién escoge la manera mas fácil de realizar la asignación, la manera en que entiende la visión de los números enteros. Sin duda, hablar del residuo de una división y hacer comparaciones mayor y menor qué no es la mas sencilla de ver, pero es una que no falla.



El quinto ejercicio fue otro, que tuve que analizar muchas veces; dado que no es explícito. Los primeros n números? quién escoge cuantos n números estamos calculando? ¿qué dato es de mayor importancia a pedirle a un usuario para que el programa sea realmente útil? En vista, que la redacción no me da respuesta, me puse algo creativa y decidí ciertos objetivos:

  • 40 es el 8vo múltiplo de 5.
  • 25 es el 5to múltiplo de 5.


Por ende, el usuario debe insertar cuál múltiplo desea calcular. Objetivo 1. Cuántos múltiplos de 5 desea calcular? Objetivo 2. El código ha quedado de la siguiente manera:

#include <iostream>
using namespace std;
int main() {
int z,n,m,a,p;
int x;
a=0;
z=0;
x=1;
while (x==1)
{
cout << "Cual Multiplo de 5 desea generar: ";
cin >> n;
m=5*n;
a=a+m;
z++;
p=a/z;
cout << "Desea Otro Múltiplo de 5? 1=si 2=no";
cin >> x;
}
cout << "Los N múltiplos de 5 " << endl;
cout << "La sumatoria de los Múltiplos de 5 es: " << a << endl;
cout << "El promedio de los Múltiplos de 5 es: " << p << endl;
return 0;
}
view raw multiplos.cpp hosted with ❤ by GitHub


Como ven, deje que el usuario decidiera cuál múltiplo de 5 deseaba calcular; otra opción sería que el usuario dijera cuántos múltiplos desea calcular ó cuántos son los primeros múltiplos de 5 el que desea calcular. Claramente dependerá de nosotros. El promedio depende de la cantidad de números insertados, que de ser diferente la pregunta al usuario, este dato sería un dato fijo. Y estamos usando la sentencia while, tal como se nos exige.

Debo resaltar, el número que le estoy pidiendo al usuario es 1er múltiplo, 6to múltiplo, 10mo múltiplo; por ello de manera interna calcula a m, que hace el papel del múltiplo generado. Acá el objetivo no es identificar cuál múltiplo de 5 es el número ingresado.




Por otro lado, resolveremos un ejercicio en lenguaje c, utilizando la regla de 3. Al mismo ejercicio, le haré dos modificaciones, para irle aumentado su dificultad. 1: Una persona recibe un préstamo de Bs. 10000 de un banco y desea saber cuánto pagará de interés, si el banco le cobra una tasa del 27% anual.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
float calculo = 0;
calculo = (0,27 * 10000)/100;
printf("\nla tasa a cancelar es de Bs. %.2f\n",calculo);
system("PAUSE");
return (EXIT_SUCCESS);
}
view raw regladetres.c hosted with ❤ by GitHub


Ejercicio 2: Una persona recibe un préstamo de Bs. ? de un banco y desea saber cuánto pagará de interés, si el banco le cobra una tasa del 27% anual.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
float calculo = 0;
float prestamo = 0;
printf("Ingrese el monto del prestamo: ");
scanf("%f",&prestamo);
calculo = (0,27 * prestamo)/100;
printf("\nla tasa a cancelar es de Bs. %.2f\n",calculo);
system("PAUSE");
return (EXIT_SUCCESS);
}
view raw reglade32.c hosted with ❤ by GitHub


Ejercicio 3: Una persona recibe un préstamo de Bs. ? de un banco y desea saber cuánto pagará de interés, si el banco le cobra una tasa del 27% anual. ¿Cuánto serían las cuotas mensuales en bs?.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
float calculo = 0;
float prestamo = 0;
float cuotas = 0;
printf("Ingrese el monto del prestamo: ");
scanf("%f",&prestamo);
calculo = (0,27 * prestamo)/100;
cuotas = calculo/12;
printf("\nla tasa a cancelar es de Bs. %.2f\n",calculo);
printf("Las cuotas mensuales a cancelar son de %.2f \n",cuotas);
system("PAUSE");
return (EXIT_SUCCESS);
}
view raw reglade33.c hosted with ❤ by GitHub


programación en c boleto de viaje



Ejercicio 1. Calcula el precio de un boleto de viaje, tomando en cuenta el número de kilómetros que se van a recorrer, siendo el precio Bs/.10,50 por Km.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
float kilometros = 0;
float precio = 0;
float bs = 10.50; printf("\nIngrese el numero de kilometros: ");
scanf("%f",&kilometros); precio = kilometros * bs;
printf("\n El precio del boleto es de Bs. %.2f\n",precio);
system("PAUSE");
return (EXIT_SUCCESS);}
view raw boleto1.c hosted with ❤ by GitHub


Ejercicio 2. Calcula el precio de un boleto de viaje, tomando en cuenta el número de kilómetros que se van a recorrer, siendo el precio Bs/. ? por Km.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
float kilometros = 0;
float precio = 0;
float bs = 0;
printf("\nIngrese el numero de kilometros: ");
scanf("%f",&kilometros);
printf("\nIngrese el precio por kilometro: ");
scanf("%f",&bs);
precio = kilometros * bs;
printf("\n El precio del boleto es de Bs. %.2f\n",precio);
system("PAUSE");
return (EXIT_SUCCESS);}
view raw boleto2.c hosted with ❤ by GitHub


Es importante resaltar, que al inicio tuve un gran problema: el eclipse me daba por error el cout y el cin puesto que no me reconocía el iostream. Primero, me percaté de que en mi computador no existían las siguientes .dll: libgcc_s_dw21.dll y libstdc++-6.dll las cuales las encontré en http://es.dll-files.com/ las descargue y pegue en windows/system 32. Sin embargo, esto no solucionó dicho error. Acudí al fabuloso grupo de programadoresde google, quienes con tanto interés y pasión me ayudaron con sus opiniones para poder solucionar el error con eclipse. Y saben cuál fue la solución? crear todos mis proyectos en la base del hello world! De esta manera si me reconoce el iostream; de no haber sido por la ayuda de mis amigos programadores, estos ejercicios no hubiesen sido realizados. Así que de todo corazón, cuando tenemos una duda, un problema, busquemos respuestas, integrémonos como equipo y busquemos una solución; no dejemos que la angustia, la ansiedad, el orgullo o el ego nos aleje de crear maravillas. La programación es un mundo fascinante, porque integra todas las ciencias en un solo lugar. Aprovechemos cada materia porque son piezas que le dan vida a nuestro código.

Ejercicios de Iniciación a la programación en lenguaje C. Academia Cartagena99.

He tomado esta guía para practicar con los ejercicios que no están resueltos. Les recomiendo descargar la guía porque tiene un excelente material educativo que sin duda los ayudará a profundizar en el aprendizaje sobre el lenguaje C. Sin embargo, he decidido agregar las respuestas haciendo uso del lenguaje c++. De este modo, estarán los ejercicios en ambos lenguajes y así se puede tener una mayor comprensión de las diferencias entre el lenguaje C y c++, así como sus similitudes.

Ejercicio Nro 1: leyendo números enteros.

En el primer ejercicio se nos pide escribir un programa donde el usuario ingrese un número entero y la respuesta del programa sea "Has introducido el número X, gracias". Desde el punto de vista del lenguaje C, lo primero que debemos hacer es declarar la variable donde se guardará la respuesta del usuario. Luego se imprime el mensaje para realizar la solicitud al usuario y se procede a escanear la respuesta. Para imprimir el número entero dentro de una oración se coloca el tipo de variable primero y al finalizar la respuesta, se coloca el nombre de la variable. Debemos recordar siempre:
  • Declarar las variables a utilizar
  • Solicitar al usuario el dato que necesitamos.
  • Escanear el dato solicitado, haciendo uso de la variable previamente declarada
  • Imprimir el resultado

El ejercicio en lenguaje C se vería así:

#include <stdio.h>
int main (){
int n;
printf("inserte un número: ");
scanf("%d", &n);
printf("Has introducido el número %d", n);
return 0;
}


El código en lenguaje cpp queda así:

#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
n = 0;
cout << "Escribe un numero" << endl;
cin >> n;
cout << "Has introducido el numero: " << n << endl;
return 0;
}

El próximo ejercicio se resuelve tomando en cuenta los pasos del anterior. Son idénticos los pasos pero varía el mensaje a imprimir. Consiste en escribir un programa que pregunte al usuario cuántos años tiene y conteste "ahora sé que tienes x años, gracias". El código en lenguaje C queda así:

#include <stdio.h>
int main (){
int n;
printf("¿cuántos años tienes?: ");
scanf("%d", &n);
printf("Ahora sé que tienes %d años, gracias", n);
return 0;
}
view raw Ejerciciodos.c hosted with ❤ by GitHub


El código en lenguaje cpp queda así:

#include <iostream>
using namespace std;
int main()
{
int n;
cout << "¿cuántos años tienes?: " << endl;
cin >> n;
cout << "Ahora sé que tienes " << n << " años, gracias" << endl;
return 0;
}
view raw edad.cpp hosted with ❤ by GitHub


Ejercicio Nro 2: leyendo letras.

Escribe un programa que pregunte al usuario sus iniciales y conteste diciendo "sus iniciales son xxx". En este ejercicio se declaró la variable de tipo char con 10 espacios para almacenar las iniciales. En realidad deberían ser 3 espacios porque en líneas generales, todos tenemos 4 iniciales. Es sólo para abarcar casos especiales. El ejercicio en lenguaje C quedaría de la siguiente manera:

#include <stdio.h>
int main()
{
char in[10];
printf("Cuáles son tus iniciales?: ");
scanf("%s", &in);
printf("Tus iniciales son: %s \n", in);
return 0;
}
view raw iniciales.c hosted with ❤ by GitHub


En lenguaje c++, el código es el siguiente:

#include <iostream>
#include <string>
using namespace std;
int main()
{
char nombre[10];
cout << "Escribe tus iniciales " << endl;
cin >> nombre;
cout << "Has introducido las siguientes iniciales " << nombre << endl;
return 0;
}
view raw iniciales.cpp hosted with ❤ by GitHub



Ejercicio Nro 3: leyendo números con decimales

Escribe un programa que pregunte al usuario sus iniciales y su altura. Además, conteste diciendo "sus iniciales son xxx y su altura es: xxxx". Para la altura se utiliza una variable de tipo float porque la altura es un número con decimales. La altura no puede ser un número entero porque redondea el cálculo a 1 o 2 metros y no permite ser exactos. El código en lenguaje C quedaría asi:

#include <stdio.h>
int main()
{
char in[10];
float alt;
alt = 0;
printf("Cuáles son tus iniciales?: ");
scanf("%s", &in);
printf("Cuál es su altura?: ");
scanf("%f", &alt);
printf("Tus iniciales son: %s y su altura es %f \n", in, alt);
return 0;
}


El ejercicio en lenguaje c++ es el siguiente:

#include <iostream>
using namespace std;
int main()
{
char in[10];
float alt;
alt = 0;
cout << "Cuáles son tus iniciales?: " << endl;
cin >> in;
cout << "Cuál es su altura?: " << endl;
cin >> alt;
cout << "Tus iniciales son: " << in << "y su altura es: " << alt << endl;
return 0;
}


Ejercicio Nro 4: cálculo de precios con descuento

El ejercicio consiste en escribir un programa que dado el precio pueda calcular el descuento y le de al usuario el precio total con descuento incluído.

Este ejercicio se resuelve calculando el porcentaje del precio porque dicho porcentaje se refiere al descuento. Y como es el precio total, se debe restar el descuento al precio. Si pidieran el descuento se debería imprimir la variable luego del cálculo, pero como no es el caso, simplemente se mostrará el precio a pagar.

#include <stdio.h>
int main(){
int precio;
int descuento;
int pfinal;
precio = 0;
descuento = 0;
pfinal = 0;
printf("Ingrese el precio: ");
scanf("%d", &precio);
printf("Ingrese el descuento: ");
scanf("%d", &descuento);
pfinal = precio - ((descuento * precio) / 100);
printf("El precio final con descuento es: %d", pfinal);
return 0;
}
view raw descuento.c hosted with ❤ by GitHub


Ambos datos se han solicitado al usuario, pero puede existir que de antemano te den el descuento, en ese caso, se inicializa la variable con su respectivo valor. Y para ejercicios más avanzados, dan diferentes tipos de descuento, para ello, se utiliza el condicional if.

En lenguaje c++ es el siguiente:

#include <iostream>
#include <string>
using namespace std;
int main()
{
int precio;
int descuento;
int pfinal;
precio = 0;
descuento = 0;
pfinal = 0;
cout << "Ingrese el precio: " << endl;
cin >> precio;
cout << "Ingrese el descuento: " << endl;
cin >> descuento;
pfinal = precio - ((descuento * precio) / 100);
cout << "El precio final con descuento es: " << pfinal << endl;
return 0;
}
view raw descuento.cpp hosted with ❤ by GitHub


Ejercicio Nro 5: cálculo de área y perímetro de un rectángulo

En este ejercicio se deben pedir al usuario los tamaños de los dos lados del rectángulo para calcular tanto el perímetro como el área. Cabe destacar que se puede inicializar cada variable al momento de declararlas, pero tan sólo para seguir un paso a paso, no lo hemos realizado. El ejercicio en lenguaje c, es el siguiente:

#include <stdio.h>
int main()
{
int base;
int altura;
int area;
int perimetro;
base = 0;
altura = 0;
area = 0;
perimetro = 0;
printf("Ingrese la base del rectángulo: ");
scanf("%d", &base);
printf("Ingrese la altura del rectángulo: ");
scanf("%d", &altura);
area = base * altura;
perimetro = base + altura + base + altura;
printf("El área del rectángulo es %d, y el perímetro es %d. ", area, perimetro);
return 0;
}


El ejercicio en c++ sería el siguiente:

#include <iostream>
using namespace std;
int main()
{
int base;
int altura;
int area;
int perimetro;
base = 0;
altura = 0;
area = 0;
perimetro = 0;
cout << "Ingrese la base del rectángulo: " << endl;
cin >> base;
cout << "Ingrese la altura del rectángulo: " << endl;
cin >> altura;
area = base * altura;
perimetro = base + altura + base + altura;
cout << "El área del rectángulo es " << area << " y el perímetro es " << perimetro << endl;
return 0;
}


Ejercicio Nro 6: cambio de dólares a euros

Para resolver el ejercicio deben realizar una regla de 3, pero, el valor del dólar debe estar pre-establecido al momento de inicializar la variable. En este caso, el valor del euro son 1.22350 dólares. El ejercicio en lenguaje c, estaría programado así:

#include <stdio.h>
int main(){
float dolar;
float euro;
float cantidad;
dolar = 1.33450;
euro = 0;
cantidad = 0;
printf("Ingrese la cantidad de dólares: ");
scanf("%f", &cantidad);
euro = cantidad / dolar;
printf("El cambio en euros es: %f", euro);
return 0;
}
view raw ejercicioseis.c hosted with ❤ by GitHub


El ejercicio en lenguaje c++ estaría programado así:

#include <iostream>
using namespace std;
int main()
{
float dolar;
float euro;
float cantidad;
dolar = 1.33450;
euro = 0;
cantidad = 0;
cout << "Ingrese la cantidad de dólares: " << endl;
cin >> cantidad;
euro = cantidad / dolar;
cout << "El cambio en euros es: " << euro << endl;
return 0;
}
view raw euroadolar.cpp hosted with ❤ by GitHub


Ejercicio Nro 7: cálculo de perímetro de circunferencia, área del Circulo y volumen de la esfera

Para realizar este ejercicio deben tomar en cuenta que se puede hacer utilizando la librería math, pero puede ser que su profesor aún no la utilice. En ese caso, he dejado entre comentarios, la forma de realizarlo sin la librería math. Siempre la mejor opción es utilizar la librería math. El código en lenguaje c, es el siguiente:

#include <stdio.h>
#include <math.h>
int main(){
float pi = 3.1416;
float radio = 0;
float perimetro = 0;
float area = 0;
float volumen = 0;
printf("Ingrese el radio: ");
scanf("%f", &radio);
perimetro = 2 * pi * radio;
//area = pi * (radio * radio); en caso de que el Prof no use la librería math
area = pi * (pow(radio, 2));
//volumen = (4 * pi * (radio * radio * radio)) / 3; en caso de que el Prof no use la librería math
volumen = (4 * pi * (pow(radio, 3))) / 3;
printf("El perímetro de la circunferencia es %f \n", perimetro);
printf("El área del circulo es %f \n", area);
printf("El volumen de la esfera es %f", volumen);
return 0;
}


La librería de matemática que se utiliza en c++ se llama cmath. En lenguaje c++ el código es el siguiente:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float pi = 3.1416;
float radio = 0;
float perimetro = 0;
float area = 0;
float volumen = 0;
cout << "Ingrese el radio: " << endl;
cin >> radio;
perimetro = 2 * pi * radio;
//area = pi * (radio * radio); en caso de que el Prof no use la librería math
area = pi * (pow(radio, 2));
//volumen = (4 * pi * (radio * radio * radio)) / 3; en caso de que el Prof no use la librería math
volumen = (4 * pi * (pow(radio, 3))) / 3;
cout << "El perímetro de la circunferencia es " << perimetro << endl;
cout << "El área del circulo es " << area << endl;
cout << "El volumen de la esfera es " << volumen << endl;
return 0;
}
view raw ejercicio7.cpp hosted with ❤ by GitHub


Ejercicio Nro 8: pasar de días, horas y minutos a segundos.

Para la ejecución de este ejercicio, es importante inicializar todas las variables en cero y llevar un orden del cálculo que se está realizando. En primer lugar se convierte de días a segundos, luego de horas a segundos y por último de minutos a segundos. Para terminar, se realiza la suma para dar el total de los segundos. El ejercicio en lenguaje c es este:

#include <stdio.h>
int main(){
int dia = 0;
int hora = 0;
int minuto = 0;
int td = 0;
int th = 0;
int tm = 0;
int suma = 0;
printf("Ingrese los dias: ");
scanf("%d", &dia);
printf("Ingrese las horas: ");
scanf("%d", &hora);
printf("Ingrese los minutos: ");
scanf("%d", &minuto);
td = dia * 24 * 60 * 60;
th = hora * 60 * 60;
tm = minuto * 60;
suma = td + th + tm;
printf("La cantidad de segundos totales es: %d", suma);
return 0;
}
view raw ejercicioocho.c hosted with ❤ by GitHub


El código en lenguaje c++ es este:

#include <iostream>
using namespace std;
int main()
{
int dia = 0;
int hora = 0;
int minuto = 0;
int td = 0;
int th = 0;
int tm = 0;
int suma = 0;
cout << "Ingrese los dias: " << endl;
cin >> dia;
cout << "Ingrese las horas: " << endl;
cin >> hora;
cout << "Ingrese los minutos: " << endl;
cin >> minuto;
td = dia * 24 * 60 * 60;
th = hora * 60 * 60;
tm = minuto * 60;
suma = td + th + tm;
cout << "La cantidad de segundos totales es: " << suma << endl;
return 0;
}
view raw ejercicio8.cpp hosted with ❤ by GitHub


Aciertos y calificaciones



Elabora un programa que calcule la regla de 3 de un valor de 25 aciertos que tenga como equivalencia 100% de calificación. Es importante, crear un ciclo do while para que se ejecute el cálculo únicamente 25 veces. De este modo, hay forma de limitar el funcionamiento del programa. Todas las acciones que estén dentro del ciclo se ejecutarán cuántas veces el ciclo esté activo. El código en lenguaje c++ se vería así:

#include <iostream>
using namespace std;
int main(){
int ciclo;
int calificacion;
int acierto;
ciclo = 26;
calificacion = 0;
acierto = 26;
cout << "Aciertos Calificacion" << endl;
do {
ciclo--;
acierto--;
calificacion = (acierto * 100) / 25;
cout << " " << acierto << " " << calificacion << endl;
} while (ciclo > 0);
return 0;
}
view raw aciertos.cpp hosted with ❤ by GitHub


vectores, listas o arrays

Los Vectores son listas que almacenan datos, o información sobre una clase en particular. Si tenemos un enunciado, podemos identificarlos de acuerdo al uso de los datos que nos dicen dentro del mismo; ejemplo: se necesita una lista de alumnos, clientes, pacientes; una lista con los números de cédula o pasaporte de los clientes de una aerolínea, quienes cancelaron mas del monto promedio, cuáles alumnos quedaron aplazados en una sección. En fin, tienen muchos usos y utilidad los vectores como parte de C++.

A continuación veremos unos métodos dado un ejercicio los cuáles nos guiarán sobre el uso de los vectores.



Cabe destacar, que la metodología que utilizaremos es la programación orientada a objetos. Hemos programado la clase MPaciente, MClinica, VClinica, Controlador y Principal. En la clase MPaciente, hemos programado los datos del paciente: motivo de la visita, turno, y monto cancelado; de la manera usual, para crear una clase, con los respectivos sets y gets. No hay cálculos en esta clase.

/*
* MPaciente.cpp
*
* Created on: 28/01/2014
* Author: Violeta
*/
#include "MPaciente.h"
MPaciente::MPaciente() {
}
float MPaciente::GetMonto()
{
return monto;
}
int MPaciente::GetMotivo()
{
return motivo;
}
int MPaciente::GetTurno()
{
return turno;
}
void MPaciente::SetMonto(float mto)
{
monto = mto;
}
void MPaciente::SetMotivo(int mvo)
{
motivo = mvo;
}
void MPaciente::SetTurno(int t)
{
turno = t;
}
view raw paciente.cpp hosted with ❤ by GitHub


Debemos recordar, que los datos nombre y cédula se heredan de la clase MPersona.

Ahora en MClinica incluimos a la clase paciente como un vector, pues en las salidas nos piden un listado de paciente por consulta, dónde utilizaremos los métodos de incluir, buscar y size: acá veamos cómo queda:

/*
* MClinica.cpp
*
* Created on: 28/01/2014
* Author: Violeta
*/
#include "MClinica.h"
MClinica::MClinica() {
// TODO Auto-generated constructor stub
}
void MClinica::IncluirPaciente(MPaciente mpc)
{
vectpac.push_back(mpc);
}
int MClinica::CantidadPaciente()
{
return vectpac.size();
}
int MClinica::BuscarPaciente(string ced)
{
for (int i=0; i<CantidadPaciente(); ++i)
if (ced== vectpac[i].GetCedula())
return i;
return -1;
}
void MClinica::SetPaciente(MPaciente mpc, int posicion)
{
vectpac[posicion] = mpc;
}
MPaciente MClinica::GetPaciente(int posicion)
{
return vectpac[posicion];
}
view raw clinica.cpp hosted with ❤ by GitHub


Ahora para dar respuesta a la cantidad de pacientes atendidos por turnos, haremos los siguientes métodos:

int MClinica::ContPcTurno(int turn) //este método calcula la cantidad de pacientes atendidos de acuerdo al //turno que le estemos pidiendo al programa.
{
int cont=0; //inicializamos el contador en cero
for (int i=0; i < CantidadPaciente();++i) //para todos los pacientes atendidos
if (vectpac[i].GetTurno()==turn) //si el turno es igual al ingresado
++cont; //cuenta el paciente
return cont;
}


Para saber cuál fue el monto recolectado por consulta o por hospitalización sólo debemos acumular el monto sólo si el motivo fue consulta o hospitalización respectivamente:

float MClinica::CalcMTConsulta()
{
float acc=0; //inicializamos el acumulador en cero
for (int i=0; i<CantidadPaciente();++i) //para todos los pacientes atendidos
if (vectpac[i].GetMotivo()==1) //si el motivo fue consulta
acc+=vectpac[i].GetMonto(); //acumula el monto cobrado
return acc;
}


Como necesitamos saber cuál fue el mayor monto cobrado en las consultas y que nos muestre un listado de las cédulas que pagaron dicho monto, haremos dos métodos: el primero que calcule el mayor monto cobrado y el segundo que haga una comparación y guarde las cédulas que cancelaron dicho monto.

float MClinica::CalcMayor()
{
float mayor=0;
for (int i=0; i<CantidadPaciente();++i)
if (vectpac[i].GetMotivo()==1 and vectpac[i].GetMonto()> mayor)
mayor=vectpac[i].GetMonto();
return mayor;
}
vector<string> MClinica::vectmayor()
{
float m= CalcMayor();
vector<string> vectmayor;
for (int i=0; i<CantidadPaciente();++i)
if (vectpac[i].GetMotivo()==1 and vectpac[i].GetMonto()== m)
vectmayor.push_back(vectpac[i].GetCedula());
return vectmayor;
}
view raw mayormonto.cpp hosted with ❤ by GitHub


Ahora bien, hasta este momento estamos listos con respecto a los requerimientos de la práctica, pero ¿cómo haríamos si nos piden el monto promedio cobrado en relación a todos los pacientes atendidos? Debemos crear un acumulador que guarde todos los montos cobrados y los divida entre el size del vector de los pacientes, ya que el size nos da la cantidad de pacientes atendidos en total. Recordar que se debe validar que no exista la división entre cero puesto que nos daría un error.

float MClinica::CalcPromedio()
{
float acumtotal=0; //inicializamos el acumulador en cero
for (int i=0; i < CantidadPaciente(); i++) //para todos los pacientes
acumtotal += vectpac[i].GetMonto(); //acumula el monto cobrado
if (CantidadPaciente()!=0) //si existen pacientes
return acumtotal/CantidadPaciente(); //divide el monto acumulado entre pacientes atendidos
else return 0;
}


Y si nos pidieran: ¿cual es el porcentaje de pacientes que cancelaron un monto mayor al promedio? Puesto que estamos trabajando en base a porcentaje, utilizaremos el método anterior para apoyarnos en la resolución de éste. Siempre verificando que la división no sea entre cero. Utilizaremos un contador de pacientes que cancelaron mas del monto promedio y lo multiplicamos por cien dado que es un porcentaje, para luego dividirlo entre la cantidad de pacientes atendidos, por medio del uso del size.

float MClinica::CalcPorcentaje()
{
int cont = 0; //inicializamos el contador en cero
float prom = CalcPromedio(); //creamos una variable que contenga el monto promedio
for (int i=0; i < CantidadPaciente(); i++) //para todos los pacientes atendidos
if (vectpac[i].GetMonto() > prom) //si el monto es mayor al promedio
cont++; //cuentalo
if (CantidadPaciente()!=0) //si la cantidad de pacientes es distinta de cero
return cont * 100/CantidadPaciente(); //calcula el promedio
else return 0;
}


Si quisiéramos comparar cuál fue el motivo (consulta o hospitalización) con mayor monto recaudado, debemos crear un método que guarde los montos de hospitalización (puesto que ya está hecho el método de consulta) y luego otro método que compare ambos montos y retorne un string con la respuesta; tomando en cuenta que puede ser iguales los montos obtenidos.

float MClinica::CalcMayorHospitalizacion()
{
float mayorhosp=0;
for (int i=0; i<CantidadPaciente();++i)
if (vectpac[i].GetMotivo()==2 and vectpac[i].GetMonto()> mayorhosp)
mayorhosp=vectpac[i].GetMonto();
return mayorhosp;
}
string MClinica::CalcMayorTurno()
{
if (CalcMayor() < CalcMayorHospitalizacion())
return "Hospitalizacion";
if (CalcMayor() > CalcMayorHospitalizacion())
return "Consulta";
else return "Consulta y Hospitalizacion";
}
view raw mayorhosp.cpp hosted with ❤ by GitHub


Si quieren ver cómo funcionan todos los métodos ensamblados aquí les dejo:

El programa con los requerimientos netos de la práctica: Clinica
El programa con las sugerencias adicionales: Clinica con Requerimientos

Libros Recomendados:

1 comment:

Rosmaris Rondón said...

Hola, podrían ayudarme con este programa
A Pedro Luis le encanta ir a jugar Bingo, al Bingo Charaima, al cual va todos los viernes a
jugar un rato, Pedro, utiliza únicamente un solo cartón para jugar. Por lo tanto, se sabe que un
bingo tiene 75 números, partiendo del 01 al 75, los cuales van saliendo de manera aleatoria cada
turno y el cartón que juega Pedro tiene una capacidad de 25 números repartidos en 5 filas con 5
columnas, entonces, con los datos anteriormente estipulados realice un programa que se ejecute y
compile en C donde se requiere:
1. Realizar un recorrido, el cual verifique que los números que van saliendo por turno, se
encuentran en la fila y columna del cartón de Pedro, si, el número que sale coincide
con uno del cartón, se necesita mostrar en pantalla y tacharlo.
2. Realizar las comprobaciones para que los números que salgan cada turno, no se repitan,
y estos sigan saliendo hasta que el jugador haya completado el cartón o la misma esfera
se quede sin números que mostrar.
3. Se requiere verificar cuando el jugador complete una sola columna para que cante y
muestre en pantalla que el jugador completo la línea.
4. Finalmente, se requiere verificar cuando el jugador haya completado el cartón de bingo
en su totalidad, para que cante bingo y se muestre en pantalla que ha ganado.

Note: I earn a commission on qualifying purchases as an Amazon Associate, at no additional cost to you.

Disclaimer: The coloring pages available on this blog are created as fan art and are intended for personal and non-commercial use only. The characters and images depicted in these coloring pages are the property of their respective copyright holders. We do not claim ownership of the characters or images used in these coloring pages. The availability of these coloring pages on this blog is not intended to infringe upon any copyright laws. If you are the rightful owner of any content used and wish for it to be removed, please contact us directly, and we will promptly address your concerns. Thank you for understanding.