Ir para conteúdo
ph1

Dificuldade em exercício

Recommended Posts

Calcular e imprimir a média aritmética dos números inteiros positivos ímpares inferiores ou iguais a um número N lido inicialmente.

 

#include <cmath> // ou <math.h>
#include <iostream>
#include <cstdlib>
#include <locale.h>
#include <iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL, "Portuguese");
float m,acm;
int cont,n;
acm = 0;
cout << "Entre com um número qualquer.:\t";
cin >> n;
  for (cont = 0;cont <= n;n++)
    {
    if ((n % 2)==1)
      {
        acm = acm + 1;
        m = acm / n;
      }
    else if ((n % 2) == 0)
        {
         cout << "O número não é ímpar.";
        }
   }
cout << "A média dos" << n << " números ímpares é de:\t" << m;
}
        

Estou com com dificuldade nesse exercício. Porque está dando loop infinito? Não descubro o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola @ph1, seu loop n quebra por duas razoes:

1) Voce ta somando o N, logo cont NUNCA vai ser maior que N e seu N vai pro infinito, daew crasha hehe

2) A sua condição exige que CONT seja maior que N, porem você nunca altera o valor inicial de CONT

 

Mas o problema n ta so no loop, sua matematica tbm ta errada, na media aritmetica (q eu suponho ser a simples), você soma os valores e dividi pela quantia de valores que foram somados, você ta ta fazendo não só a divisão errada (você ta dividindo a quantia de numeros pelo seu limite da pesquisa, o que nao faz sentido), como tbm a quantia de vezes que você dividi, ja q você dividindo a cada loop... da uma olhada no codigo abaixo

 

Espero ter ajudado, qualquer coisa da um grito, abraços

 

EDIT:

Esqueci de dizer, procura ir chamando as bibliotecas só conforme você for usando, assim você evita de ter uma centena de bibliotecas e só usar uma, q é o seu caso

#include <iostream>

using namespace std;

int main()
{
	float soma = 0;
	int acm = 0;
	int i, n;

	cin >> n;
	
	for (i = 1;i <= n; i++)
    {
		if ((i % 2)==1)
		{
			soma += i;
			acm++;
		}
	}
	
	cout << "A media dos números ímpares é de: %f\t" << soma/acm;
	
	return (0);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito, entendi a lógica do programa. Tudo é feito encima de i e não de n, n é só para colocar um limite no número de iterações. 

Muito obrigado pela ajuda. Fiz um rascunho e um tipo de teste de mesa.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por quantic2016
      estou com esse script de scroll infinito, ele mostra para min os 10 primeiros artigos , ate aqui ok , porem como eu faço para ele mostrar mais 10 artigos depois dos 10 primeiros ???
      <?php include "conexao.php";?> <!DOCTYPE html> <html lang="pt-br"> <head> <title>Sistema de busca igual facebook</title> <meta charset="UTF-8" /> <link rel="stylesheet" type="text/css" href="css.css" /> <link rel="stylesheet" type="text/css" href="lib/css/default.css" /> <script src="lib/js/jquery.js" type="text/javascript"></script> <script src="js-all.js" type="text/javascript"></script> </head> <body> <h1>Infinite Scrolling, Demo 2</h1> <ul id="posts"> <li> <article> <header> <h1>This Is an Article</h1> </header> <?php include "load_first.php";?> </article> </li> </ul> <p id="loading"> <img src="images/loading.gif" alt="Loading…" /> </p> </body> </html> <script type = "text/javascript"> $(document).ready(function() { var win = $(window); // Each time the user scrolls win.scroll(function() { // End of the document reached? if ($(document).height() - win.height() == win.scrollTop()) { $('#loading').show(); $.ajax({ url: 'load_second.php?id=<?php echo $id; ?>', dataType: 'html', success: function(html) { $('#posts').append(html); $('#loading').hide(); } }); } }); }); </script> load_first.php
      <?php include "conexao.php"; $mostraDados = mysqli_query($conecta, "SELECT * FROM artigo ORDER BY data DESC LIMIT 10")or die (mysqli_error()); while($linha = mysqli_fetch_array($mostraDados)) { $id = $linha["id"]; $titulo = $linha["titulo"]; echo " <p class='tm' id=$id > $id $titulo </p>"; } ?> load_second.php
      <?php include "conexao.php"; $last_msg_id = $_GET ['id']; $mostraDados = mysqli_query($conecta, "SELECT * FROM artigo WHERE id < '$last_msg_id' ORDER BY id DESC LIMIT 5")or die (mysqli_error()); $last_msg_id = " "; while( $linha = mysqli_fetch_array($mostraDados)) { $id = $linha["id"]; $titulo = $linha["titulo"]; $endereco = $linha["endereco"]; $cep = $linha["cep"]; ?> <div id = "<?php echo $id; ?>" class = "message_box" > <?php echo $id; ?> <?php echo $titulo; ?> </div> <?php } ?>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.