Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C++ ::: 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 C++ - Desafio de Programação Resolvido em C++

Quantidade de visualizações: 595 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 C++ 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
Resposta/Solução:

Veja a resolução comentada deste exercício usando C++:

----------------------------------------------------------------------
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 C++
#include <iostream>
#include <math.h>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  double carga, distancia, reacao_a, reacao_b;
  double flexao_maxima, distancia_temp, flexao_distancia;
  double cortante_a, cortante_b;
  
  // vamos pedir para o usuário informar o valor da carga
  cout << "Valor da carga em kN/m: ";
  cin >> carga;
  
  // vamos pedir para o usuário informar a distância entre os apoios
  cout << "Distancia em metros: ";
  cin >> distancia;
  
  // 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 * pow(distancia, 2.0);
  
  // e mostramos o resultado
  cout << "\nA reacao no apoio A e: " << reacao_a << " kN" << endl;
  cout << "A reacao no apoio B e: " << reacao_b << " kN" << endl;
  cout << "O momento fletor maximo e: " << flexao_maxima << " kN" << endl;
  
  // vamos pedir para o usuário informar uma distância a
  // partir do apoio A
  cout << "\nInforme uma distancia a partir do apoio A: ";
  cin >> distancia_temp;
  // vamos mostrar o momento fletor na distância informada
  if (distancia_temp > distancia) {
    cout << "\nDistancia invalida.";
  }
  else {
    flexao_distancia = (1.0 / 2.0) * carga * distancia_temp * 
      (distancia - distancia_temp);
    cout << "O momento fletor na distancia informada e: " <<  
      flexao_distancia << " kN";  
  }
  
  // vamos mostrar a força cortante no apoio A
  cortante_a = (1.0 / 2.0) * carga * distancia;
  cout << "\n\nA forca cortante no apoio A e: " << cortante_a << " kN";
  
  // vamos mostrar a força cortante no apoio B
  cortante_b = cortante_a * -1;
  cout << "\nA forca cortante no apoio B e: " << cortante_b << " kN";
  
  cout << "\n\n";
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}


Link para compartilhar na Internet ou com seus amigos:

C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de C++ - Escreva um programa C++ que mostra como somar os elementos da diagonal secundária de uma matriz

Quantidade de visualizações: 14800 vezes
Exercícios Resolvidos de C++ - Escreva um programa C++ que mostra como somar os elementos da diagonal secundária de uma matriz

Pergunta/Tarefa:

Em álgebra linear, a diagonal secundária de uma matriz A é a coleção das entradas Aij em que [i]i[/i] + [i]j[/i] é igual a n + 1 (onde n é a ordem da matriz). A diagonal secundária de uma matriz quadrada une o seu canto inferior esquerdo ao canto superior direito (conforme mostrado na saída do problema proposto abaixo).

Escreva um programa C++ que declara uma matriz 3x3 e pede ao usuário para informar seus valores. Em seguida mostre todos os valores da matriz e a soma dos elementos da diagonal secundária. Sua saída deverá ser parecida com a imagem abaixo:



Resposta/Solução:

Veja a resolução comentada deste exercício:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;

int main(int argc, char *argv[])
{
  int matriz[3][3]; // uma matriz de três linhas e três colunas
  int soma_diagonal = 0; // guarda a soma dos elementos na diagonal secundária

  // vamos ler os valores para os elementos da matriz
  for(int i = 0; i < 3; i++){ // linhas
    for(int j = 0; j < 3; j++){ // colunas
      cout << "Valor para a linha " << i << " e coluna " << j << ": ";
      cin >> matriz[i][j];       
    }       
  }
  
  // vamos mostrar a matriz da forma que ela foi informada
  cout << "\n\nValores na matriz\n" << endl;
  for(int i = 0; i < 3; i++){
    for(int j = 0; j < 3; j++){
      cout << setw(5) << matriz[i][j];   
    }
    
    cout << "\n" << endl;       
  }
  
  // vamos calcular a soma dos elementos da diagonal secundária
  int ordem = 3; // ordem da matriz
  for(int i = 1; i <= 3; i++){
    for(int j = 1; j <= 3; j++){
      if((i + j) == (ordem + 1)){
        soma_diagonal = soma_diagonal + matriz[i - 1][j - 1];
      }
    }
  }
  
  cout << "A soma dos elementos da diagonal secundaria e: " << 
    soma_diagonal << endl;
  cout << "\n" << endl;
  
  system("PAUSE");
  return EXIT_SUCCESS;
}



C++ ::: Dicas & Truques ::: Matemática e Estatística

Como calcular desvio padrão em C++ - C++ para Matemática e Estatística

Quantidade de visualizações: 609 vezes
Em Matemática e Estatística, o Desvio padrão (em inglês: Standard Deviation) é uma medida de dispersão, ou seja, é uma medida que indica o quanto um conjunto de dados é uniforme. Quando o desvio padrão é baixo, isso quer dizer que os dados do conjunto estão mais próximos da média.

Como calcular o desvio padrão de um conjunto de dados? Vamos começar analisando a fórmula mais difundida na matemática e na estatística:

\[\sigma = \sqrt{ \frac{\sum_{i=1}^N (x_i -\mu)^2}{N}}\]

Onde:

a) __$\sigma__$ é o desvio;
b) __$x_i__$ é um valor qualquer no conjunto de dados na posição i;
c) __$\mu__$ é a média aritmética dos valores do conjunto de dados;
d) N é a quantidade de valores no conjunto.

O somatório dentro da raiz quadrada nos diz que devemos somar todos os elementos do conjunto, desde a posição 1 até a posição n, subtrair cada valor pela média do conjunto e elevar ao quadrado. Obtida a soma, nós a dividimos pelo tamanho do conjunto.

Veja o código C++ completo que obtém o desvio padrão a partir de um conjunto de dados contendo quatro valores:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>
#include <math.h>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // conjunto dos dados
  double conjunto[] = {10, 30, 90, 30};
  double soma = 0.0; // soma dos elementos
  double desvio_padrao = 0.0; // desvio padrão
  int tam = 4; // tamanho dos dados
  double media;

  // vamos somar todos os elementos
  for(int i = 0; i < tam; i++){
    soma = soma + conjunto[i];
  }

  // agora obtemos a média do conjunto de dados    
  media = soma / tam;

  // e finalmente obtemos o desvio padrão
  for(int i = 0; i < tam; i++){
    desvio_padrao = desvio_padrao + pow(conjunto[i] - media, 2);
  }
    
  // mostramos o resultado
  cout << "Desvio Padrão Populacional: " << sqrt(desvio_padrao / tam);
  cout << "\nDesvio Padrão Amostral: " << sqrt(desvio_padrao / (tam - 1));
  		
  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Desvio Padrão Populacional: 30.0
Desvio Padrão Amostral: 34.64101615137755

Veja que, para calcular o Desvio Padrão Populacional, nós dividimos o somatório pela quantidade de elementos no conjunto, enquanto, para calcular o Desvio Padrão Amostral, nós dividimos o somatório pela quantidade de elementos - 1 (cuidado com a divisão por zero no caso de um conjunto com apenas um elemento).


C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios

Como obter o diretório atual usando a função GetCurrentDirectory() da API do Windows - C++ e WinAPI

Quantidade de visualizações: 9426 vezes
Nesta dica mostrarei como chamar, a partir de um programa C++, a função GetCurrentDirectory() da API do Windows com o propósito de obter o diretório atual, ou seja, o diretório de trabalho da nossa aplicação. Esta função é declarada no header winbase.h (que vem junto quando fazemos include do header windows.h).

Veja o exemplo completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  // buffer que receberá o nome do diretório
  TCHAR szDirAtual[MAX_PATH];
 
  // chama a função GetCurrentDirectory
  GetCurrentDirectory(MAX_PATH, szDirAtual);
 
  // Exibe o resultado
  cout << "O diretório atual é " << szDirAtual << "\n\n";
 
  system("PAUSE");
  return EXIT_SUCCESS;
}

Ao executar este código nós teremos o seguinte resultado:

O diretório atual é C:\estudos_c++


Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Equação de Manning

A equação de Manning é uma expressão empírica que se aplica ao fluxo uniforme em canais abertos, relacionando a velocidade do fluido, a área da seção e a inclinação do canal.

Sobre a fórmula de Manning, selecione a alternativa correta.

A) O valor do coeficiente de rugosidade n representa a perda de carga localizada, uma vez que se refere à interferência do atrito nas paredes das tubulações e canais de condução de fluidos.

B) A fórmula de Manning só apresenta resultados precisos para canais naturais, sendo os artificiais complexos, pois o coeficiente de rugosidade n varia na produção do material.

C) O valor do coeficiente de rugosidade n representa a perda de carga distribuída atribuída ao atrito e é sempre calculado em campo para que erros associados a ele sejam minimizados.

D) Em canais artificiais, o valor do coeficiente de Manning n representa a perda de carga causada apenas pelas paredes, se fazendo necessário aplicar uma correção para o fundo do canal.

E) A fórmula de Manning fornece resultados confiáveis para os canais naturais ou artificiais e o coeficiente de rugosidade n representa a perda de carga distribuída relacionada ao atrito.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Sistema domiciliar de abastecimento de água

Há diversas opções de materiais empregados nas instalações de água fria. Cada tipo de material se enquadra às condições em que será utilizado. Nas instalações residenciais do Brasil, o material mais empregado é o PVC, por apresentar diversas vantagens.

Quais das opções a seguir apresentam as principais características desse tipo de material?

I. Leve (1,4g/cm3), o que facilita seu manuseio e aplicação.

II. Por ser tóxico, apresenta risco à saúde humana.

III. Sólido e resistente a choques.

IV. Durável: sua vida útil em construções é superior a 50 anos.

As afirmações corretas são:

A) I e II, apenas.

B) I, III e IV, apenas.

C) I, II e III, apenas.

D) II e III, apenas.

E) I, II, III e IV.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Número de Reynolds

O número de Reynolds (abreviado como Re) é utilizado para o cálculo do regime de escoamento de um fluido no interior de um tubo ou de um duto. Considere que um sistema hidráulico opera com óleo SAE 10W, de densidade igual a 920kg/m3 e viscosidade dinâmica de 0,018kg/(m.s), à temperatura de 55°C. Sabendo que o fluido escoa a uma velocidade média de 0,147m/s, e que o tubo tem 1m de diâmetro, qual é o número de Reynolds para o escoamento?

A) 7.513,33.

B) 2.300.

C) 112,65.

D) 715,33.

E) 1.126,50.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Escoamento laminar

Em escoamento laminar, a região de entrada do fluido é definida por um comprimento de entrada. Esse comprimento é compreendido entre quais distâncias?

A) Entre a região de entrada e a região de comportamento completamente desenvolvido.

B) Entre a região de entrada e a região de comportamento parcialmente desenvolvido.

C) Entre a região de entrada e a região de saída do escoamento.

D) Entre a região de comportamento completamente desenvolvido e a região de saída do escoamento.

E) Entre a região de entrada e a região com defeito de velocidade.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Instalações prediais de combate a incêndio

A norma NBR 13714 estabelece os critérios mínimos exigíveis para sistemas de hidrantes e de mangotinhos, para uso exclusivo no combate a incêndio. Com base nesses critérios, assinale a alternativa correta:

A) Uma edificação com área de 850m2 não necessita de um sistema de mangotinhos ou de hidrantes para proteção contra incêndio.

B) O ponto de tomada de água para hidrantes e mangotinhos pode ser instalado a até 10m de distância das portas externas e escadas.

C) Os hidrantes devem ser distribuídos de tal forma que qualquer ponto da área a ser protegida seja alcançado por no mínimo dois esguichos.

D) Uma edificação com parede externa de 12m de altura necessita que o hidrante externo seja instalado afastado no máximo 18m da edificação.

E) Uma edificação com parede externa de 12m de altura necessita que o ponto de tomada de água seja instalado a no máximo 2m em relação ao piso.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 47 usuários muito felizes estudando em nosso site.