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

void limparTela() {
    // Para Linux e Windows
    // Limpa a tela do terminal
    #ifdef _WIN32
        system("cls"); // Comando para limpar no Windows
    #else
        system("clear"); // Comando para limpar no Linux
    #endif
}

void centralizarTexto(const char *texto, int largura) {
    int espacos = (largura - strlen(texto)) / 2;
    for (int i = 0; i < espacos; i++) printf(" ");
    printf("%s\n", texto);
}

const char* nomeDiaSemana(int wday) {
    const char *dias[] = {"Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira",
                          "Quinta-feira", "Sexta-feira", "Sábado"};
    return dias[wday];
}

void exibirRelogio() {
    time_t agora;
    struct tm *infoTempo;
    char hora[10];
    char data[20];
    char textoSemana[30];

    agora = time(NULL);
    infoTempo = localtime(&agora);

    strftime(hora, sizeof(hora), "%H:%M:%S", infoTempo); // Formato da hora
    strftime(data, sizeof(data), "%d/%m/%Y", infoTempo); // Formato da data
    sprintf(textoSemana, "%s", nomeDiaSemana(infoTempo->tm_wday)); // Nome do dia da semana

    // Centralizando e exibindo os textos
    centralizarTexto("╔════════════════════════════════════════╗", 50);
    centralizarTexto(hora, 50);
    centralizarTexto(data, 50);
    centralizarTexto(textoSemana, 50);
    centralizarTexto("╚════════════════════════════════════════╝", 50);
}

int main() {
    while (1) {
        limparTela(); // Limpa a tela
        exibirRelogio(); // Exibe o relógio
        sleep(1); // Atualiza a cada 1 segundo (no Linux usa 'sleep(1)', no Windows 'Sleep(1000)')
    }

    return 0;
}