Untitled
#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