Untitled

 avatar
unknown
plain_text
a year ago
1.8 kB
2
Indexable
#include <stdio.h>
#include <locale.h>
#include <wchar.h>


int conta_nr_numeros (unsigned long long int numero){
    
    int i = 0;

    while (numero > 0){
        numero = numero / 64; // como este cálculo (e condição) é realizado também na função main, não há risco de armazenar caracteres em índices inexistentes
        i++;
    }

    return i;
}


int main(){

    setlocale(LC_CTYPE, "C.UTF-8");

    int j = 0; // indice do array

    unsigned long long int numero, aux, nr_numeros;

    wchar_t caracter = 0x4dc0; // o primeiro símbolo da tabela exibida no enunciado está associado ao código hexadecimal 0x4dc0

    printf("Introduza um numero: "); // pede ao utilizador um número

    wscanf(L"%llu", &numero); // lê esse número

    if (numero > 0){

        aux = numero; // para ajudar nos cálculos, utiliza-se uma variável auxiliar, que vai tomar o valor da variável 'numero'

        nr_numeros = conta_nr_numeros(numero); // para definir o tamanho do array que vai conter os números (correspondentes aos símbolos), invoca-se uma função para esse efeito

        wchar_t simbolos[nr_numeros]; // define-se um array com o tamanho definido acima

        while (numero > 0){
            aux = numero%64;
            numero = numero / 64;
            wchar_t c = aux + caracter;
            simbolos[j] = c; // o caracter vai ser armazenado no índice j (determinado pela iteração)
            j++; // é necessário incrementar o j para passar para o próximo índice do array
        }

        for(int i = nr_numeros; i > 0; i--){

            printf("%lc ", simbolos[i-1]); // i-1 porque, por exemplo, o terceiro número está no índice 2

        }

    }

    else{
        printf("%lc\n\n", caracter);
    }

    return 0;
}
Leave a Comment