Untitled
unknown
plain_text
2 years ago
1.8 kB
7
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;
}Editor is loading...
Leave a Comment