Jump to content

Tiago Neves

Membros
  • Contagem de Conteúdo

    32
  • Ingressou

  • Última visita

  • Dias Ganhos

    2

Tudo que foi postado por Tiago Neves

  1. Fala, @Apollo17273738 (13)! import math def distancia(p1, p2): return math.sqrt((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2) def aceleracaoResultante(Astros, posicao_nave): G = 6.67430e-11 # Constante gravitacional em m^3 kg^-1 s^-2 a_resultante = [0, 0] for astro in Astros: posicao_astro, massa_astro, _ = astro distancia_astro = distancia(posicao_nave, posicao_astro) if distancia_astro == 0: continue for i in range(2): a_resultante[i] += (G * massa_astro / distancia_astro**3) * (posicao_astro[i] - posicao_nave[i]) return a_resultante def atualizaNave(Nave, Astros, delta_t): [posicao_nave, velocidade_nave, raio_nave] = Nave a_resultante = aceleracaoResultante(Astros, posicao_nave) velocidade_nave[0] += a_resultante[0] * delta_t velocidade_nave[1] += a_resultante[1] * delta_t posicao_nave[0] += velocidade_nave[0] * delta_t posicao_nave[1] += velocidade_nave[1] * delta_t return [posicao_nave, velocidade_nave, raio_nave], Astros, delta_t # Teste print(atualizaNave([[300000, 300000], [8, 5], 10], [[[0, 0], 5.97e+24, 5]], 0.5)) veja se isso resolve o problema.
  2. Fala, @Malfurion Tempesfuria! Cara, acho que essa área de programação não está sendo muito sua praia, né? Parece que você ainda não teve tempo de procurar ou se dedicar para aprender.
  3. Fala, @FIRE RICARDO BATISTA! Dar uma olhadinha nesse tutorial Node.js + MySQL, mas o código ficaria assim: // Importando o módulo mysql const mysql = require('mysql'); // Configurando a conexão com o banco de dados const connection = mysql.createConnection({ host: 'localhost', // Host do banco de dados user: 'seu_usuario', // Nome de usuário do banco de dados password: 'sua_senha', // Senha do banco de dados database: 'nome_do_banco_de_dados' // Nome do banco de dados }); // Conectar ao banco de dados connection.connect((err) => { if (err) { console.error('Erro ao conectar: ' + err.stack); return; } console.log('Conectado como id ' + connection.threadId); }); // Função para cadastrar um novo usuário function cadastrarUsuario(id, nome, sobrenome, email, imagem) { const query = 'INSERT INTO usuarios (id, nome, sobrenome, email, imagem) VALUES (?, ?, ?, ?, ?)'; const values = [id, nome, sobrenome, email, imagem]; connection.query(query, values, (error, results, fields) => { if (error) throw error; console.log('Usuário cadastrado com sucesso!'); }); } // Exemplo de uso da função para cadastrar um usuário cadastrarUsuario(1, 'John', 'Doe', 'john@example.com', 'perfil.jpg'); // Fechar a conexão com o banco de dados quando terminar connection.end();
  4. procedure AdicionarRegistro(origem, destino: TClientDataSet; valor: Currency); begin cdsReceberOrigem.Append; cdsReceberOrigemFILIAL.AsInteger := origem.FieldByName('FILIAL').AsInteger; cdsReceberOrigemCODIGO.AsInteger := origem.FieldByName('CODIGO').AsInteger; cdsReceberOrigemFILIALDEST.AsInteger := destino.FieldByName('FILIAL').AsInteger; cdsReceberOrigemCODIGODEST.AsInteger := destino.FieldByName('CODIGO').AsInteger; cdsReceberOrigemVALORTOTAL.AsCurrency := valor; cdsReceberOrigem.Post; end; procedure ProcessRecordsLoop(cdsOrigem, cdsDestino: TClientDataSet); var saldoOrigem, saldoDestino: Currency; begin cdsOrigem.First; cdsDestino.First; while not cdsOrigem.Eof do begin saldoOrigem := cdsOrigem.FieldByName('VALORTOTAL').AsCurrency; saldoDestino := cdsDestino.FieldByName('VALORTOTAL').AsCurrency; if saldoOrigem >= saldoDestino then begin AdicionarRegistro(cdsOrigem, cdsDestino, saldoDestino); cdsOrigem.Edit; cdsOrigem.FieldByName('VALORTOTAL').AsCurrency := saldoOrigem - saldoDestino; cdsOrigem.Post; cdsDestino.Next; end else begin AdicionarRegistro(cdsOrigem, cdsDestino, saldoOrigem); cdsDestino.Edit; cdsDestino.FieldByName('VALORTOTAL').AsCurrency := saldoDestino - saldoOrigem; cdsDestino.Post; cdsOrigem.Next; end; end; end; Fala, @rodrigopaiva! Achei vários códigos no github com algumas implementações: GITHUB. Veja se esse código funciona. Abraço!
  5. Segue o link para consulta: How to separate circles and lines in a binary image?
  6. Fala, @andre.rsys! A DevExpress oferece documentação extensa e detalhada sobre seus produtos, incluindo a geração de arquivos .repx. Acesse o site da DevExpress (https://www.devexpress.com/) e procure por tutoriais e guias específicos para sua versão do software e tipo de relatório. E outra coisa a DevExpress possui uma comunidade online ativa onde você pode fazer perguntas e obter ajuda de outros usuários. Acesse o fórum da DevExpress (https://supportcenter.devexpress.com/ticket/details/t1050560/general-support-forum) e publique sua dúvida, incluindo as imagens das telas de desenvolvimento e as informações adicionais que mencionei acima. Faz essa pesquisa no Youtube: https://www.youtube.com/results?search_query="DevExpress"%2C+"Visual+Studio"%2C+"C%23"%2C+"relatórios"+e+".repx"+
  7. @Pedro Augusto, tenta esse aqui: var rangeEditada = null; var valoresOriginais = null; function onOpen() { adicionarTriggerVerificacaoSenha(); } function adicionarTriggerVerificacaoSenha() { var planilha = SpreadsheetApp.getActiveSpreadsheet(); ScriptApp.newTrigger("verificarSenha") .forSpreadsheet(planilha) .onEdit() .create(); } function verificarSenha(e) { var senhaCorreta = "123"; var usuario = Session.getActiveUser(); var sheet = e.range.getSheet(); if (!sheet.getName().match(/^\d{2}$/)) return; // Sai se a guia não estiver no formato "XX" var senhaDigitada; var tentativas = 0; while (true) { senhaDigitada = Browser.inputBox('INFORME A SENHA', 'Senha:', Browser.Buttons.OK_CANCEL); if (senhaDigitada === senhaCorreta) { break; // Sai do loop se a senha estiver correta } else if (senhaDigitada === null) { // Usuário clicou em "Cancelar" if (rangeEditada && valoresOriginais) { rangeEditada.setValues(valoresOriginais); rangeEditada = null; // Resetar a variável rangeEditada valoresOriginais = null; // Resetar a variável valoresOriginais } return; // Sai da função sem exibir o Browser.msgBox novamente } tentativas++; if (tentativas > 0) { Browser.msgBox("Senha incorreta!"); } } // Remove o trigger após a primeira execução ScriptApp.getProjectTriggers().forEach(function(trigger) { ScriptApp.deleteTrigger(trigger); }); // Salva a célula editada e seus valores originais rangeEditada = e.range; valoresOriginais = e.range.getValues(); }
  8. Que bom que funcionou 😃 Então, para exibir todas as categorias, incluindo aquelas que não têm produtos cadastrados, você pode usar uma junção externa (outer join) entre as tabelas CATEGORIA e PRODUTO. Além disso, para ordenar do maior para o menor, você pode usar a cláusula ORDER BY com a função COUNT(*) e a palavra-chave DESC. Aqui está a consulta SQL modificada para atender a esses requisitos: SELECT c.NOME_CATEGORIA, COUNT(p.ID_PRODUTO) AS NUMERO_DE_PRODUTOS FROM CATEGORIA c LEFT JOIN PRODUTO p ON c.ID_CATEGORIA = p.ID_CATEGORIA_PRODUTO GROUP BY c.NOME_CATEGORIA ORDER BY COUNT(p.ID_PRODUTO) DESC; Usar o LEFT JOIN para garantir que todas as linhas da tabela CATEGORIA sejam incluídas, mesmo que não haja correspondência na tabela PRODUTO. Com isso, o COUNT(p.ID_PRODUTO) para contar o número de produtos em cada categoria, incluindo 0 para as categorias que não têm produtos. Utilizamos a cláusula GROUP BY para agrupar os resultados pelo nome da categoria. E por fim, usamos ORDER BY COUNT(p.ID_PRODUTO) DESC para ordenar os resultados do maior para o menor com base no número de produtos.
  9. Fala, @silvaunix! Operador de seta (->) em C é usado para acessar membros de uma estrutura (struct) através de um ponteiro para essa estrutura. Isso é útil quando você tem um ponteiro para uma estrutura e deseja acessar seus membros sem ter que usar o operador de desreferência (*) para obter o valor do ponteiro e, em seguida, acessar o membro da estrutura. No seu código, há alguns problemas: Você está tentando atribuir um ponteiro para uma estrutura (&dd) a um ponteiro para inteiro (int *ptr). Isso não é correto, pois os tipos são incompatíveis. Ao usar malloc, você está alocando espaço para um ponteiro para inteiro, e não para a estrutura dados. Na leitura da idade, você está passando o endereço de idade para scanf, mas deveria passar o endereço de ptr->idade. #include <stdlib.h> #include <stdio.h> #include <string.h> struct dados{ char nome[50]; int idade; }; int main(void){ struct dados *ptr = (struct dados *) malloc(sizeof(struct dados)); if (ptr == NULL) { printf("Erro ao alocar memória\n"); return 1; } printf("Nome: "); fgets(ptr->nome, 50, stdin); // Remova o caractere de nova linha do nome ptr->nome[strcspn(ptr->nome, "\n")] = '\0'; printf("Idade: "); scanf("%d", &(ptr->idade)); printf("Seu nome é %s, e você tem %d anos!\n", ptr->nome, ptr->idade); free(ptr); // Não se esqueça de liberar a memória alocada return 0; }
  10. Fala, @Luciano Guedes de Oliveira! O problema que você está enfrentando está relacionado ao uso do localStorage no React. Parece que há um pequeno erro de digitação no nome do item que você está salvando e recuperando do localStorage. No useEffect onde você salva os dados, você está usando @tarefa como chave para o item no localStorage, enquanto no useEffect onde você os recupera, você está usando @tarefas. Esses nomes de chave devem ser os mesmos para garantir que você esteja salvando e recuperando os dados corretamente. import { useState, useEffect } from "react"; function App() { const [input, setInput] = useState(""); const [tarefas, setTarefas] = useState([]); useEffect(() => { const tarefaStorage = localStorage.getItem('@tarefas'); if (tarefaStorage) { setTarefas(JSON.parse(tarefaStorage)); } }, []); useEffect(() => { localStorage.setItem('@tarefas', JSON.stringify(tarefas)); // Corrigido para '@tarefas' }, [tarefas]); function handleTask(e) { e.preventDefault(); setTarefas([...tarefas, input]); setInput(""); } return ( <div> <form onSubmit={handleTask}> <h1>Listar tarefas</h1> <label>Tarefa:</label> <br /> <input placeholder="insira o nome da task" value={input} onChange={(e) => setInput(e.target.value)} /> <br /> <button type="submit">ADD</button> </form> <div> <ul> {tarefas.map((tarefa, index) => ( // Adicionado index como key <li key={index}>{tarefa}</li> // Usando index como key ))} </ul> </div> </div> ); } export default App;
  11. Olá, @elcandonga! Para obter o resultado desejado, você precisa usar uma junção entre as tabelas CATEGORIA e PRODUTO e então agrupar os resultados pela coluna NOME_CATEGORIA e contar o número de produtos em cada categoria. Aqui está a instrução SQL para isso: SELECT c.NOME_CATEGORIA, COUNT(p.ID_PRODUTO) AS NUMERO_DE_PRODUTOS FROM CATEGORIA c JOIN PRODUTO p ON c.ID_CATEGORIA = p.ID_CATEGORIA_PRODUTO GROUP BY c.NOME_CATEGORIA; Essa consulta vai retornar o nome de cada categoria juntamente com a contagem de produtos em cada uma delas. Certifique-se de substituir ID_CATEGORIA e ID_CATEGORIA_PRODUTO pelos nomes reais das colunas em suas tabelas, caso eles sejam diferentes.
  12. Fala, @Fernando Saraiva. O erro que você está vendo indica que o ambiente Python ou a instalação em que o interpretador está localizado (neste caso, C:\Users\CYGX\AppData\Local\Programs\Spyder\Python\Python312\python.exe) não tem o módulo spyder-kernels instalado ou a versão correta está instalada (deve ser >= 2.4.0 e < 2.5.0). Sem esse módulo, o Spyder não pode criar um console para você. Você precisa instalar o módulo spyder-kernels na versão correta. Você pode fazer isso ativando o ambiente primeiro (se necessário) e executando o seguinte comando em um terminal do sistema: > conda install spyder-kernels=2.4 Jupyter kernels for the Spyder console
  13. O problema é que a atribuição do preço mais barato preco_mais_barato = preco é feita fora do bloco do loop que verifica se o preço atual é menor do que o preço mais barato já registrado. Isso faz com que preco_mais_barato sempre seja igual ao preço do último produto inserido. Para corrigir isso, você precisa mover a atribuição do preço mais barato para dentro do bloco de condição que verifica se o preço atual é menor do que o preço mais barato já registrado. Aqui está como você pode fazer isso: mais_de_1000 = 0 total_pagar = 0 produto_mais_barato = '' preco_mais_barato = 0 while True: print('---FORD ATACADISTA---') produto = str(input('Produto: ')) preco = int(input('Preço: ')) total_pagar += preco # Total a pagar # Quantos custam mais de R$1.000 if preco > 1000: mais_de_1000 += 1 # Qual o mais barato e qual o seu preço if preco_mais_barato == 0 or preco < preco_mais_barato: preco_mais_barato = preco produto_mais_barato = produto # Quer continuar? continuar = ' ' while continuar not in 'SN': continuar = str(input('Quer continuar? [S/N]')).upper()[0] if continuar != 'S' and 'N': print('Erro. Tente novamente') continue if continuar == 'S': continue else: break # Prints if preco_mais_barato != 0: print(f'Total a pagar: R${total_pagar}') if mais_de_1000 > 1: print(f'{mais_de_1000} produtos custam mais de R$1.000') elif mais_de_1000 == 0: print('Nenhum produto custa mais de R$1.000') else: print(f'{mais_de_1000} produto custa mais de R$1.000') print(f'O produto mais barato foi {produto_mais_barato} custando R${preco_mais_barato}') else: print('Nenhum produto foi inserido.') A atribuição do preço mais barato e do produto mais barato é feita dentro do bloco de condição if preco_mais_barato == 0 or preco < preco_mais_barato:, garantindo que só será atribuído um novo preço mais barato se ele for menor que o preço já registrado como o mais barato. Isso deve resolver o problema que você estava enfrentando.
  14. Olá, @josedcastro! A IDE já tá lhe avisando o erro, deve ser os (;) "dois-pontos" no final do include.
  15. Olá, @jerrivaldo. Segue o código. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <button onclick="getIP();">Endereço IP</button> <pre id="resposta"></pre> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script> async function getIP() { let apiKey = "d9e53816d07345139c58d0ea733e3870"; try { const response = await fetch("https://api.bigdatacloud.net/data/ip-geolocation?key=" + apiKey); const data = await response.json(); const enderecoIP = data.ip; document.getElementById("resposta").innerText = JSON.stringify(data, null, 2); } catch (error) { console.error("Ocorreu um erro ao obter o endereço IP:", error); } } </script> </body> </html> Neste código, adicionei uma tag <pre> com o id "resposta" logo após o botão. Dentro da função getIP, após obter os dados da API, estou configurando o conteúdo dessa tag com o JSON formatado usando JSON.stringify. Dessa forma, a resposta da API será exibida na página HTML.
  16. Fala, @edenilson carmo. Infelizmente, essa funcionalidade foi descontinuada em 2021. Mas não se preocupe! Existem alternativas eficazes para você continuar aprendendo e praticando o DOM: Extensões para Depuração: Live Server: Uma das extensões mais populares para o Visual Studio Code, o Live Server permite iniciar um servidor HTTP local com apenas um clique. Isso facilita a visualização das alterações do DOM em um navegador real. Browser Preview: Outra ótima opção, a extensão Browser Preview oferece uma pré-visualização integrada do navegador dentro do próprio Visual Studio Code. Ideal para testes rápidos e ajustes no código. Ferramentas de Desenvolvedor do Navegador: Inspeção do Elemento: Utilize as ferramentas de desenvolvedor do seu navegador (F12 no Chrome, Firefox e Edge) para inspecionar o DOM e testar seus scripts. Essa ferramenta oferece informações detalhadas sobre os elementos da página e permite modificar o código HTML e CSS diretamente no navegador. Console do Navegador: O console do navegador (acessível pela guia "Console" nas ferramentas de desenvolvedor) é essencial para registrar mensagens de log, testar funções JavaScript e interagir com o DOM.
  17. O problema no seu código reside na maneira como você está posicionando o div2 dentro do div1. A propriedade left: 25%; right: 25%; está posicionando o div2 em relação ao tamanho total do viewport, e não do div1. Para solucionar isso, você precisa utilizar o posicionamento relativo (position: relative) no div1 e o posicionamento absoluto (position: absolute) no div2, mas com referência ao div1. .div1 { position: relative; /* Posicionamento relativo para o div1 */ width: 550px; height: 150px; border: solid 1px; border-radius: 20px; margin-top: 15px; } .div2 { position: absolute; /* Posicionamento absoluto */ top: 50%; /* Centraliza verticalmente */ transform: translateY(-50%); /* Compensa o deslocamento do top: 50% */ left: 25%; /* 25% da largura do div1 */ right: 25%; /* 25% da largura do div1 */ border: solid 0px; border-radius: 0px 0px 20px 20px; text-align: center; color: white; font-family: Gill Sans Extrabold, sans-serif; } /* Apenas para melhorar a visualização do exemplo */ .div1 { background: white; } .div2 { background: #2ecc71; height: 20%; }
  18. Como criar seu “próprio” ChatGPT; veja passo a passo E, boa sorte!
  19. Olá, @novodev! O problema no seu código JavaScript está na comparação feita dentro do if. O erro ocorre porque você está comparando o objeto txtn com a string "Brasil" usando o operador de igualdade (==). O objeto txtn representa o elemento de entrada com o ID txtpais. Quando você compara um objeto com uma string usando o operador ==, o JavaScript verifica apenas se as referências dos objetos são iguais. No seu caso, as referências nunca serão iguais, pois txtn sempre será uma nova referência para o elemento de entrada, enquanto "Brasil" é uma referência constante para a string. Para comparar o valor textual digitado no campo de entrada com "Brasil", você precisa usar o método trim() para remover espaços em branco e o método toLowerCase() para converter o texto para minúsculas antes da comparação. Além disso, é recomendável usar o operador de comparação estrita (===) para garantir que os tipos de dados também sejam iguais. Possível solução: <body> <h1>Teste de Nacionalidade</h1> Digite país de origem: <input type="text" name="txtpais" id="txtpais"> <input type="button" value="Verificar" onclick="Nacionalidade()"> <script> function Nacionalidade(){ var txtn = window.document.getElementById('txtpais').value.trim().toLowerCase(); if(txtn === 'brasil'){ txtn.innerHTML = 'Você é brasileiro'; } } </script> </body> </html>
×
×
  • Create New...