Programas en C++ y C: áreas, MCD, triángulos, Fibonacci, dígitos y dados

Informática y Telecomunicaciones8,48 KB

Ejercicios de programación en C++ y C

A continuación se presentan varios programas didácticos que ilustran el uso de funciones, estructuras de control, bucles y constantes en los lenguajes C++ y C.

1. Cálculo de áreas geométricas

El siguiente programa permite al usuario seleccionar una figura y calcular su área mediante funciones independientes.

  • Círculo: área = radio² × π
  • Cuadrado: área = lado²
  • Rectángulo: área = base × altura
  • Triángulo: área = (base × altura) / 2
#include <iostream>
#include <cmath>
using namespace std;

void areaDelCirculo(void);
void areaDelCuadrado(void);
void areaDelRectangulo(void);
void areaDelTriangulo(void);
void mostrarArea(float area);

const float Pi = 3.14159;

int main(){
    char opcion;
    cout << "Selecciona el área que deseas calcular" << endl;
    cout << " a) Círculo\n b) Cuadrado\n c) Rectángulo\n d) Triángulo\n";
    cin >> opcion;
    switch(opcion){
        case 'a': areaDelCirculo(); break;
        case 'b': areaDelCuadrado(); break;
        case 'c': areaDelRectangulo(); break;
        case 'd': areaDelTriangulo(); break;
    }
    return 0;
}

void mostrarArea(float area){
    cout << "El área es: " << area << endl;
    return;
}

void areaDelCirculo(void){
    float radio, area = 0;
    cout << "Ingresa el radio: ";
    cin >> radio;
    area = pow(radio, 2) * Pi;
    mostrarArea(area);
    return;
}

void areaDelCuadrado(void){
    float lado, area = 0;
    cout << "Ingresa un lado: ";
    cin >> lado;
    area = pow(lado, 2);
    mostrarArea(area);
    return;
}

void areaDelRectangulo(void){
    float base, altura, area = 0;
    cout << "Ingresa la base: ";
    cin >> base;
    cout << "Ingresa la altura: ";
    cin >> altura;
    area = base * altura;
    mostrarArea(area);
    return;
}

void areaDelTriangulo(void){
    float base, altura, area = 0;
    cout << "Ingresa la base: ";
    cin >> base;
    cout << "Ingresa la altura: ";
    cin >> altura;
    area = (base * altura) / 2;
    mostrarArea(area);
    return;
}

Nota: el valor de π corregido es 3.14159.

2. Máximo común divisor con el algoritmo de Euclides

El algoritmo de Euclides calcula el MCD de dos números mediante restas sucesivas.

#include <iostream>
using namespace std;

int algoritmoDeEuclides(int numero1, int numero2);

int main(){
    int num1, num2;
    cout << "Ingresa dos números" << endl;
    cin >> num1 >> num2;
    cout << "El MCD de " << num1 << " y " << num2 << " es: " << algoritmoDeEuclides(num1, num2) << endl;
    return 0;
}

int algoritmoDeEuclides(int numero1, int numero2){
    while(numero1 != numero2){
        if(numero1 > numero2){ numero1 -= numero2; }
        else { numero2 -= numero1; }
    }
    return numero1;
}

3. Triángulo de números

Este programa imprime un triángulo de dígitos formado por ascenso y descenso módulo 10.

#include <iostream>
using namespace std;

const int MAXIMO_DE_FILAS = 10;

void escribirCaracter(int n, char simbolo);
void escribirCaracterAscendente(int fila, int n);
void escribirCaracterDescendente(int n, int fila);
void escribirFila(int fila, int numeroDeFila);
void escribirTriangulo(int numeroDeFila);

int main(){
    cout << "Introduzca el número de filas: ";
    int numeroDeFilas;
    cin >> numeroDeFilas;
    escribirTriangulo(numeroDeFilas);
    return 0;
}

void escribirCaracter(int n, char simbolo){
    for(int i = 0; i < n; i++){ cout << simbolo; }
    return;
}

void escribirCaracterAscendente(int fila, int n){
    for(int i = fila; i <= n; i++){ cout << i % 10; }
    return;
}

void escribirCaracterDescendente(int n, int fila){
    for(int i = n; i >= fila; i--){ cout << i % 10; }
    return;
}

void escribirFila(int fila, int numeroDeFila){
    escribirCaracter((numeroDeFila - fila), ' ');
    escribirCaracterAscendente(fila, ((2 * fila) - 1));
    escribirCaracterDescendente(((2 * fila) - 2), fila);
    cout << endl;
    return;
}

void escribirTriangulo(int numeroDeFila){
    for(int fila = 1; fila <= numeroDeFila; fila++){ escribirFila(fila, numeroDeFila); }
    return;
}

4. Serie de Fibonacci

La sucesión de Fibonacci inicia con 0 y 1, y cada término siguiente es la suma de los dos anteriores.

#include <iostream>
using namespace std;

const int PRIMER_NUMERO_FIBONACCI = 0;
const int SEGUNDO_NUMERO_FIBONACCI = 1;

void imprimirFibonacci(int numero);

int main(){
    int numero;
    cout << "Introduzca N: ";
    cin >> numero;
    imprimirFibonacci(numero);
    return 0;
}

void imprimirFibonacci(int numero){
    if(numero > 0){ cout << PRIMER_NUMERO_FIBONACCI << ", "; }
    if(numero > 1){ cout << SEGUNDO_NUMERO_FIBONACCI << ", "; }
    int fibonacciPrimero = PRIMER_NUMERO_FIBONACCI;
    int fibonacciActual = SEGUNDO_NUMERO_FIBONACCI;
    for(int i = 2; i < numero; i++){
        int fibonacciSegundo = fibonacciPrimero;
        fibonacciPrimero = fibonacciActual;
        fibonacciActual = fibonacciPrimero + fibonacciSegundo;
        cout << fibonacciActual << ", ";
    }
    cout << endl;
    return;
}

5. Suma de dígitos extremos

Este programa suma los dígitos de los extremos de un número, avanzando hacia el centro.

#include <iostream>
using namespace std;

void escribirSumaDeDigitos(int numero);
int buscarDigito(int numero, int digito);
int verificarCantidadDeDigitos(int numero);

int main(){
    int numero;
    cout << "Ingrese un número: ";
    cin >> numero;
    escribirSumaDeDigitos(numero);
    return 0;
}

void escribirSumaDeDigitos(int numero){
    int numeroDeDigitos = verificarCantidadDeDigitos(numero);
    for(int i = 0; i < numeroDeDigitos / 2; i++){
        int digitoInicial = buscarDigito(numero, i);
        int digitoFinal = buscarDigito(numero, (numeroDeDigitos - i - 1));
        cout << digitoInicial << " + " << digitoFinal << " = " << (digitoInicial + digitoFinal) << endl;
    }
    if(numeroDeDigitos % 2 != 0){ cout << buscarDigito(numero, (numeroDeDigitos / 2)); }
    return;
}

int buscarDigito(int numero, int digito){
    int resto = numero;
    for(int i = 0; (resto > 0) && (i < digito); i++){ resto /= 10; }
    return resto % 10;
}

int verificarCantidadDeDigitos(int numero){
    int resto = numero;
    int i = 1;
    while(resto > 9){ resto /= 10; ++i; }
    return i;
}

6. Juego de dados (craps) en C

Este programa simula el juego de craps utilizando una enumeración para representar el estatus del juego y la función rand() para generar tiradas aleatorias.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

enum Estatus { CONTINUA, GANA, PIERDE };

int tiraDados(void);

int main(){
    int suma;
    int miPunto;
    enum Estatus estatusJuego;
    srand(time(NULL));
    suma = tiraDados();
    switch(suma){
        case 7:
        case 11:
            estatusJuego = GANA;
            break;
        case 2:
        case 3:
        case 12:
            estatusJuego = PIERDE;
            break;
        default:
            estatusJuego = CONTINUA;
            miPunto = suma;
            printf("Su punto es %d\n", miPunto);
            break;
    }
    while(estatusJuego == CONTINUA){
        suma = tiraDados();
        if(suma == miPunto){
            estatusJuego = GANA;
        } else {
            if(suma == 7){ estatusJuego = PIERDE; }
        }
    }
    if(estatusJuego == GANA){
        printf("Gana el jugador");
    } else {
        printf("Pierde el jugador");
    }
    return 0;
}

int tiraDados(void){
    int dado1;
    int dado2;
    int sumaTemp;
    dado1 = 1 + (rand() % 6);
    dado2 = 1 + (rand() % 6);
    sumaTemp = dado1 + dado2;
    printf("El jugador tiró %d + %d = %d\n", dado1, dado2, sumaTemp);
    return sumaTemp;
}

Descargar

PDF Word HTML