Você está aqui: Python ::: Desafios e Lista de Exercícios Resolvidos ::: Engenharia Civil - Cálculo Estrutural |
Como calcular as reações de apoio, momento de flexão máxima e forças cortantes em uma viga bi-apoiada com carga distribuída retangular usando Python - Desafio de Programação Resolvido em PythonQuantidade de visualizações: 397 vezes |
Pergunta/Tarefa: Veja a seguinte figura: Nesta imagem temos uma viga bi apoiada com uma carga q distribuída de forma retangular a uma distância l. Para fins didáticos, vamos considerar que a carga q será em kN/m e a distância l será em metros. O apoio A é de segundo gênero e o apoio B é de primeiro gênero. Escreva um programa Python que solicita ao usuário que informe o valor da carga q e a distância l entre os apoios A e B. Em seguida mostre os valores das reações nos apoios A e B, o momento de flexão máxima da viga e o momento de flexão para uma determinada distância (que o usuário informará) a partir do apoio A. Mostre também as forças cortantes nos apoios A e B. Lembre-se de que, para uma carga distribuída de forma retangular, o diagrama de momento fletor é uma parábola, enquanto o diagrama de cortante é uma reta (com o valor zero para a força cortante no meio da viga). Sua saída deve ser parecida com: Valor da carga em kN/m: 10 Distância em metros: 13 A reação no apoio A é: 65.000000 kN A reação no apoio B é: 65.000000 kN O momento fletor máximo é: 211.250000 kN Informe uma distância a partir do apoio A: 4 O momento fletor na distância informada é: 180.000000 kN A força cortante no apoio A é: 65.000000 kN A força cortante no apoio B é: -65.000000 kN Veja a resolução comentada deste exercício usando Python: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- # Algoritmo que calcula reação de apoio, momento fletor # e força cortante em uma viga bi-apoiada em Python # vamos importar o módulo Math import math # função principal do programa def main(): # vamos pedir para o usuário informar o valor da carga carga = float(input("Valor da carga em kN/m: ")) # vamos pedir para o usuário informar a distância entre os apoios distancia = float(input("Distancia em metros: ")) # vamos calcular a reação no apoio A reacao_a = (1.0 / 2.0) * carga * distancia # vamos calcular a reação no apoio B reacao_b = reacao_a # vamos calcular o momento fletor máximo flexao_maxima = (1.0 / 8.0) * carga * math.pow(distancia, 2.0) # e mostramos o resultado print("\nA reação no apoio A é: {0} kN".format(reacao_a)) print("A reação no apoio B é: {0} kN".format(reacao_b)) print("O momento fletor máximo é: {0} kN".format(flexao_maxima)) # vamos pedir para o usuário informar uma distância a # partir do apoio A distancia_temp = float(input("\nInforme uma distância a partir do apoio A: ")) # vamos mostrar o momento fletor na distância informada if distancia_temp > distancia: print("\nDistância inválida.") else: flexao_distancia = (1.0 / 2.0) * carga * distancia_temp * \ (distancia - distancia_temp) print("O momento fletor na distância informada é: {0} kN".format( flexao_distancia)) # vamos mostrar a força cortante no apoio A cortante_a = (1.0 / 2.0) * carga * distancia print("\nA força cortante no apoio A é: {0} kN".format(cortante_a)) # vamos mostrar a força cortante no apoio B cortante_b = cortante_a * -1 print("A força cortante no apoio B é: {0} kN".format(cortante_b)) if __name__== "__main__": main() |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
C para iniciantes - Como ordenar os elementos de um vetor de inteiros usando a ordenação da bolha (Bubble Sort) na linguagem CQuantidade de visualizações: 9325 vezes |
O método ou algorítmo de ordenação da bolha é uma das técnicas mais simples de ordenação. No entanto, este método não é eficiente, visto que o tempo despendido para sua execução é muito elevado se comparado à outros métodos existentes. Geralmente usamos este método quando queremos ordenar 50 elementos ou menos. O entendimento deste método é fácil. Se estivermos ordenandos os valores do menor para o maior, o método da bolha percorre os elementos do vetor (array), comparando e movendo o menor valor para a primeira posição do vetor, tal qual bolhas indo para a superfície. Veja um exemplo completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> void bubble_sort(int matriz[], int tam){ int temp, i, j; for(i = 0; i < tam; i++){ for(j = 0; j < tam; j++){ if(matriz[i] < matriz[j]){ temp = matriz[i]; matriz[i] = matriz[j]; matriz[j] = temp; } } } } int main(int argc, char *argv[]) { int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11}; int i, tamanho = 9; // imprime a matriz sem a ordenação for(i = 0; i < 9; i++){ printf("%d ", valores[i]); } // vamos ordenar a matriz bubble_sort(valores, tamanho); // imprime a matriz ordenada puts("\n"); for(i = 0; i < 9; i++){ printf("%d ", valores[i]); } puts("\n"); system("pause"); return 0; } Ao executar este código nós teremos o seguinte resultado: Sem ordenação: 4, 6, 2, 8, 1, 9, 3, 0, 11 Ordenados: 0, 1, 2, 3, 4, 6, 8, 9, 11 |
C ::: Dicas & Truques ::: Recursão (Recursividade) |
Como calcular o fatorial de um número em C usando recursividadeQuantidade de visualizações: 15539 vezes |
O fatorial de um determinado número, representado por n! equivale a multiplicar este número por seus antecessores. Assim, o fatorial de 4 (4!) pode ser calculado da seguinte forma:4 x 3 x 2 x 1 = 24 Sempre que falamos de recursão, o cálculo de fatorial nos auxilia na exemplificação por ser relativamente fácil de se entender todas as etapas do processo. O código abaixo mostra uma função recursiva em C que calcula o fatorial de qualquer número. Tenha cuidado. Calcular o fatorial de um número maior que 10 pode tornar sua máquina extremamente lenta, além de, muitas vezes, não retornar os resultados esperados. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> // cabeçalho da função fatorial recursiva int fatorial(int n); // função principal do programa int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // vamos calcular o fatorial de 5 int res = fatorial(5); // exibe o resultado printf("O fatorial de 5 é: %d", res); printf("\n\n"); system("PAUSE"); return 0; } // função recursiva para calcular o fatorial // de um determinado número int fatorial(int n){ if(n == 0){ return 1; } else{ return n * fatorial(n - 1); } } Ao executar este código C nós teremos o seguinte resultado: O fatorial de 5 é: 120 |
Dart ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Dart - Escreva um programa Dart para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no arrayQuantidade de visualizações: 463 vezes |
Pergunta/Tarefa: Dado o seguinte vetor de inteiros: // vamos declarar e construir um vetor (List) de 8 inteiros List<int> valores = [0, 3, 0, 5, 7, 4, 0, 9]; Sua saída deverá ser parecida com: Vetor na ordem original: 0 3 0 5 7 4 0 9 Vetor com os zeros deslocados para o final: 3 5 7 4 9 0 0 0 Veja a resolução comentada deste exercício usando Dart: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // Vamos importar a biblioteca dart:io import "dart:io"; void main(){ // vamos declarar e construir um vetor (List) de 8 inteiros List<int> valores = [0, 3, 0, 5, 7, 4, 0, 9]; // vamos mostrar o vetor na ordem original print("Vetor na ordem original:\n"); for(int i = 0; i < valores.length; i++){ stdout.write("${valores[i]} "); } // vamos inicializar j como 0 para que ele aponte para // o primeiro elemento do vetor int j = 0; // agora o laço for percorre todos os elementos do vetor, // incrementanto a variável i e deixando o j em 0 for(int i = 0; i < valores.length; i++){ // encontramos um valor que não é 0 if(valores[i] != 0){ // fazemos a troca entre os elementos nos índices // i e j int temp = valores[i]; valores[i] = valores[j]; valores[j] = temp; // e avançamos o j para o elemento seguinte j++; } } // agora mostramos o resultado print("\n\nVetor com os zeros deslocados para o final:\n"); for(int i = 0; i < valores.length; i++){ stdout.write("${valores[i]} "); } } Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes. |
Java ::: Tratamento de Erros ::: Erros de Tempo de Execução |
Tratamento de erros em Java - Como tratar o erro ArrayIndexOutOfBoundsException em JavaQuantidade de visualizações: 17621 vezes |
A exceção ArrayIndexOutOfBoundsException é uma exceção (erro) que acontece quando fornecemos um índice fora dos limites permitidos para o acesso de elementos em um vetor ou matriz (array). Lembre-se de que os índices em Java começam em 0 e vão até a quantidade de elementos menos 1. Antes de vermos os exemplos, observe a posição da classe pública ArrayIndexOutOfBoundsException na hierarquia de classes da plataforma Java: java.lang.Object java.lang.Throwable java.lang.Exception java.lang.RuntimeException java.lang.IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException Esta classe implementa a interface Serializable. Veja um exemplo no qual tentamos acessar um elemento de um vetor ou matriz usando um índice inválido: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public class Estudos{ public static void main(String args[]){ // um array de quatro elementos int[] valores = {5, 23, 76, 3}; // vamos fornecer um índice inválido System.out.println(valores[4]); System.exit(0); } } Este código compila normalmente. Porém, ao tentarmos executá-lo, temos a seguinte mensagem de erro: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Estudos.main(Estudos.java:7) A forma mais adequada de corrigir este erro é fornecendo um valor de índice que realmente esteja na faixa permitida. |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Apostila de C para iniciantes - Como usar a função fread() da linguagem C para ler todo o conteúdo de um arquivo de uma só vezQuantidade de visualizações: 22645 vezes |
A função fread() se torna muito útil quando precisamos ler grandes blocos ou até mesmo todo o conteúdo de um arquivo. Neste caso, o conteúdo lido é guardado em um buffer para uso posterior. Veja o protótipo desta função:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- size_t fread(void *ptr, size_t size, size_t count, FILE *stream); Aqui ptr é um ponteiro para o buffer que receberá o conteúdo sendo lido. A capacidade deste buffer deverá ser no mínimo o valor de size multiplicado por count. O parâmetro size é o tamanho em bytes de cada elemento sendo lido. count é o número de elementos a serem lidos e stream é um ponteiro para o arquivo cujo conteúdo será lido. Se a leitura do conteúdo for feita com sucesso, a função fread() retornará a quantidade de elementos lidos com sucesso. No exemplo abaixo estamos lendo caracteres de 1 byte cada. Analise o código cuidadosamente e verá como é fácil modificá-lo para, por exemplo, ler apenas a metade do arquivo de cada vez: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ // vamos abrir o arquivo para leitura no modo binário FILE *arquivo = fopen("dados.txt", "rb"); if(arquivo != NULL){ // vamos obter o tamanho do arquivo em bytes fseek(arquivo, 0, SEEK_END); long tam_arquivo = ftell(arquivo); rewind(arquivo); // vamos alocar memória para todo o conteúdo do arquivo char *buffer = (char*)malloc(sizeof(char) * tam_arquivo); // a memória foi alocada com sucesso? if(buffer != NULL){ // vamos copiar o conteúdo do arquivo para o buffer size_t resultado = fread(buffer, 1, tam_arquivo, arquivo); // vamos verificar se a operação foi feita com sucesso if(resultado == tam_arquivo){ puts("O conteudo do arquivo foi lido com sucesso\n\n"); // vamos exibí-lo na tela puts(buffer); } } fclose(arquivo); // fecha o arquivo free(buffer); // libera a memória do buffer } puts("\n\n"); system("PAUSE"); return 0; } |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Python - Como calcular o coeficiente angular de uma reta em Python dados dois pontos no plano cartesiano Java - Como comparar strings em Java usando os métodos compareTo() e compareToIgnoreCase() da classe String |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |