1o. joguinho Labirinto (com graficos).c
Este é um mod do joguinho_labirinto feito pelo Tiago Negri, em modo texto. Agora eu o adaptei para usar com a API gráfica (SDL), faltando apenas alguns ajustes. Mas dá para tirar umas ideias dele. :) Para compilar: gcc -o labirinto joguinho_labirinto.c -lSDL t+!!!
Por: Samuel Leonardo
Função "Partição de Inteiros" Recursiva COM Tabela Estática em C
De quantos modos diferentes pode-se escrever 6 como soma de números maiores que zero? 6 = 5+1 = 4+2 = 3+3 = 4+1+1 = 3+2+1 = 2+2+2 = 3+1+1+1 = 2+2+1+1 = 2+1+1+1+1 = 1+1+1+1+1+1 11 modos diferentes. p(6) = 11. O cálculo do número de partições de um inteiro usa uma recursão bem mais demorada que a dos números de Fibonacci ou a fatorial. Este exemplo usa variáveis estáticas dentro da implementação da função. Quando um valor é calculado, ele simplesmente é armazenado para consulta futura, já que este cálculo recursivo solicita valores já calculados em sua recursão. Poderia ser citado por alguém o uso a função realloc(), mas preferi deste modo para observar o funcionamento do código. A tabela dos valores anotados é expandida quando há a necessidade de serem armazenados mais valores que a sua capacidade naquele instante da execução. O tempo de demora é absurdamente inferior ao que seria se não fosse usada essa tabela. Há uma condição na função que se verificada destrói a tabela, usada para desalocar o espaço ao fim da execução. Pode-se testar a destruição da tabela antes de uma chamada da função em main() para ser verificada a eficácia. Parte dos resultados pode ser conferida neste link: http://oeis.org/A000041
Por: Perfil removido
Função "Partição de Inteiros" Recursiva SEM Tabela Estática em C
De quantos modos diferentes pode-se escrever 6 como soma de números maiores que zero? 6 = 5+1 = 4+2 = 3+3 = 4+1+1 = 3+2+1 = 2+2+2 = 3+1+1+1 = 2+2+1+1 = 2+1+1+1+1 = 1+1+1+1+1+1 11 modos diferentes. p(6) = 11. O cálculo do número de partições de um inteiro usa uma recursão bem mais demorada que a dos números de Fibonacci ou a fatorial. Este exemplo usa a recursão pura e simples sem armazenar os valores já calculados, necessitando de um novo cálculo a cada chamada. Isto porque pelo método de recursão, ela pode ter a necessidade de calcular valores anteriormente calculados. Quanto maior o valor requerido, maior o tempo. Quem não tiver saco de esperar a eternidade de cálculo para os valores deste código, sugiro modificar para um tempo que não seja tão cansativa a demora. Parte dos resultados pode ser conferida neste link: http://oeis.org/A000041
Por: Perfil removido
Função "Temporizador" em C
Exemplo simples em compilação normal. A função lê um instante do sistema e divide o valor pelo número de ciclos de execução da máquina para calcular tempo. Depois faz isto por uma segunda vez dentro de um laço (loop). Quando a diferença entre a segunda e a primeira leitura for igual a um valor fornecido em segundos à função, o loop se encerra e a função termina. Deste modo, durante a execução da função passou-se este tempo em segundos. Igual à sleep em Bash.
Por: Perfil removido
Cálculo de logaritmo de um número por um terceiro método em C
Este é um terceiro método de cálculo de logaritmos e o curioso é que sempre são necessários os mesmos números de passos para o cálculo. Bem diferente do que cito como métodos "A" e "B". Não é nada inovador e é do tipo de coisa vista num curso escolar sobre a matéria. Detalhes no código. Não precisa de derivadas. Apenas saber raiz quadrada. O que significa que dá prá fazer com o auxílio de uma calculadora do tipo que não é científica e algumas anotações caso esta calculadora tenha restrição de memória. Portanto a precisão e o custo computacional estão ligados diretamente ao algoritmo de raiz quadrada usado. Ele usa o mesmo método quese usa para saber quantas casas decimais ou quantos bits tem um número. Ao se escrever um número de binário para decimal, são usadas somas de potências de 2 e *** qualquer número é uma soma de potências não-repetidas de 2. Como se faz mesmo? Divide-se por 2 repetidas vezes e anotam-se os restos, 0 e 1 alternados que serão os dígitos de escrita. Por exemplo: 32 = 2 elevado à 5. São feitas 5 divisões por 2. Por acaso esse 5 é o expoente e o logaritmo. Para 33 = 2 elevado à 5. mais 1. A diferença é que sobrou 1. Se a parte inteira desse logaritmo de 33 base 2 é 5 e pôde ser calculada, então não existiria algo a ser feito com esse 1 que sobrou prá saber qual é o logaritmo de 33 base 2 fracionado? A resposta é sim. Numa divisão, divisão mesmo, quando o resto é maior que o número prá se dividir, coloca-se a vírgula e vão sendo colocados zeros quando não se consegue dividir. Se o objetivo era o de descobrir quantos 2 existiam dentro de 33, agora esse objetivo deve ser mudado porque 2 já não é possível com o resto 1. Agora deve-se descobrir quantas "raiz quadradas de 2" existem neste resto. Dividir o resto por sqrt(2) quantas vezes for possível, contar quantas divisões foram feitas e colocar após a vírgula colocada após o cinco. E quando o resto for de novo menor que o teste, que é "raiz quadrada de 2", muda se de novo o teste. Muda-se para "raiz quadrada da raiz quadrada" de dois. Também chamada de a "raiz quarta". Faz-se a mesma coisa: contam-se o número de divisões e anota-se na casa decimal seguinte à da última contagem. O único problema é que este método depende do sistema de numeração adotado. Esse exemplo citado acima foi para base 2. Para fazer com base 10, precisa trabalhar com "raiz décima". E agora? Da mesma forma que inteiros são representados por somas de potências de dois, fracionários também podem ser representados. Representados por somas de potências de 0.5 (ou 1/2). Ficaria a sequência: 1/2, 1/4, 1/8, 1/16, 1/32... 1/2 = 0.1 binário 1/4 = 0.01 binário 1/8 = 0.001 binário 1/16 = 0.0001 binário 1/32 = 0.00001 binário Da mesma forma que existem decimais de casas infinitas, existiriam binários de casas infinitas. No caso do teste de divisão existiriam duas hipóteses: "dá prá dividir" o resultado da divisão é 1 "não dá prá dividir" o resultado da divisão é 0 Sempre havendo resto. Se fosse prá escrever em binário de baixo nível na memória, bastava deslocar uma casa tipo "x >> 1" em ponto flutuante e inverter o bit, mas parece que em C não há como e ainda não me inteirei do que poderia ser feito. Ainda. Então o jeito é somar potências de (1/2) decimais numa variável conforme o resultado da divisão seja 0 ou 1. O expoente da potência somada corresponde à casa fracionária binária. Fiquem à vontade para sugestões, dúvidas ou apontar erros e simplificações.
Por: Perfil removido
Cálculo de logaritmo de um número por Método de Newton-Raphson em C
A descrição vai ao código. Este método, também como o algoritmo "A", necessita da definição do que é uma derivada. Ele é bem mais simples de implementar que Séries de Taylor e possui um custo computacional bem menor também. O problema é a necessidade de um valor inicial, que é aproximado a cada iteração. Deste valor depende a veloidade de mais ou menos iterações. Grosseiramente o método funciona por uma fórmula F(x) onde se começa com o valor x0. Depois continua-se com x1=F(x0) e segue: x2=F(x1) x3=F(x2) x4=F(x3) ... Até o último valor x_ obtido ser muito igual com o último valor x_ que entrou. Para saber como é essa fórmula F(X) é que é necessário saber algo de derivadas. Qualquer erro encontrado ou dúvida, fiquem à vontade.
Por: Perfil removido
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Dificuldade em ler binário (12)
Em que pasta/arquivo ficam as configurações das janelas em derivados d... (2)
Não consigo atualizar minha GPU (1)