Menu
Coddy logo textTech

Resumen: Greeter

Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 43 de 61.

challenge icon

Desafío

Fácil

Vamos a construir un sistema Greeter que demuestre el polimorfismo a través de punteros a funciones: el mismo tipo de estructura produciendo diferentes salidas según qué función de saludo esté conectada.

Organizarás tu código en tres archivos:

  • greeter.h: Define aquí tu interfaz de saludador. Crea un tipo de puntero a función llamado GreetFunc que reciba un const char* (un nombre al que saludar) y no devuelva nada. Luego, define una estructura Greeter que contenga un language (un const char*) y un puntero a función greet de tipo GreetFunc.
  • greeter.c: Implementa las funciones de saludo que representan diferentes idiomas:
    • greet_english — imprime Hello, name!
    • greet_spanish — imprime Hola, name!
  • main.c: Reúne todo aquí. Crea dos instancias de Greeter — una para inglés y otra para español — cada una conectada a su respectiva función de saludo. Lee un nombre como entrada, luego llama a la función greet en ambos saludadores para demostrar el comportamiento polimórfico.

Tu programa recibirá una única entrada: un nombre al que saludar.

Crea un saludador en inglés con el idioma establecido en English y un saludador en español con el idioma establecido en Spanish. Para cada saludador, imprime su idioma seguido de dos puntos y un espacio, luego llama a su función greet con el nombre de entrada.

Ejemplo de salida cuando la entrada es Maria:

English: Hello, Maria!
Spanish: Hola, Maria!

Ejemplo de salida cuando la entrada es Carlos:

English: Hello, Carlos!
Spanish: Hola, Carlos!

Ambos saludadores son del mismo tipo Greeter, sin embargo, producen saludos diferentes porque cada uno tiene una función diferente asignada a su miembro greet. Recuerda usar guardas de inclusión en tu archivo de cabecera.

Pruébalo tú mismo

#include <stdio.h>
#include <string.h>
#include "greeter.h"

int main() {
    // Lee la entrada del nombre
    char name[100];
    scanf("%s", name);
    
    // TODO: Crear un greeter en inglés
    // - Establecer language a "English"
    // - Establecer greet a la función greet_english
    
    
    // TODO: Crear un greeter en español
    // - Establecer language a "Spanish"
    // - Establecer greet a la función greet_spanish
    
    
    // TODO: Para cada greeter:
    // 1. Imprimir el language seguido de ": "
    // 2. Llamar a la función greet con el name
    
    
    return 0;
}

Todas las lecciones de Object Oriented Programming