Ir para conteúdo
  • Cadastre-se

Problema com algoritmo!


Posts Recomendados

Olá. Estava tentando fazer esse exercício em C++ ------>2. Escreva um algoritmo que leia três números inteiros e positivos (A, B, C) e calcule a seguinte expressão: D=(R+S)/2

, onde R=(A+B)elevado2 e S=(B+C)elevado2. Fiz tudo direitinho e copilou sem nenhum erro só que o resultado sempre dava 0 independente dos números que eu colocasse.

Segue o código e imagem da execução do programa:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

main()

{

float A, B, C, resab=A+B, resbc=B+C, R=pow(resab,2), S=pow(resbc,2);

printf("Digite A: ");

scanf("%f", &A);

printf("Digite B: ");

scanf("%f", &;);

printf("Digite C: ");

scanf("%f", &C);

printf("A variável D é: %.1f",(R+S)/2);

return 0;

}

pergunta_macmagazoine.tiff

Editado por Breno R2
Link para o comentário
Compartilhar em outros sites

  • Respostas 3
  • Criado
  • Última resposta

Top Postadores Neste Tópico

Dias Populares

Top Postadores Neste Tópico

Primeiro, essa sintaxe é de C, e não C++. O problema está nas variáveis resab, resbc, R e S. Na declaração, não podes dizer que uma variável é igual a outra variável. Declare essas variáveis que citei como float, e só depois de entrar os valores de A, B e C é que tu faz a aritmética delas. Teste assim:

 #include &lt;stdio.h&gt;
 #include &lt;stdlib.h&gt;
 #include &lt;math.h&gt;

 main()
 {

 float A, B, C, resab, resbc, R, S;

 printf("Digite A: ");
 scanf("%f", &amp;A);
 printf("Digite B: ");
 scanf("%f", &amp;B);
 printf("Digite C: ");
 scanf("%f", &amp;C);

 resab=A+B;
 resbc=B+C;
 R=pow(resab,2);
 S=pow(resbc,2);

 printf("A variável D é: %.1f",(R+S)/2);

 return 0;

 }

Link para o comentário
Compartilhar em outros sites

Quanto tempo eu não via scanf e printf....

----

Acho que falta apenas uns detalhes básicos....

Apenas para ler e pensar:

A = 1;

B = 3;

C = A + B;

A = 2;

B = C - A;

O computador executa mais ou menos assim:

pega o valor 1

salva em A

pega o valor 3

salva em B

pega o (valor em A) => 1

soma com o (valor em B ) => 3

salva em C

pega o valor 2

salva em A

pega o (valor em C) => 4

subtrai com o (valor em A) => 2

salva em B

("=>" no caso, indica que teve um valor encontrado, ao acessar a área da memória correspondente a variável)

Resultando:

A==2

B==2

C==4

Podemos dizer que para executar as operações, seu processador tem que resolver as pendências. Ou seja, ele tem que definir valores para cada coisa do lado direito da operação = toda vez que executa ela, para depois atribuir o resultado a variável que está do lado esquerdo.

Cada operação é independente entre si(por isso os valores sempre serão estáticos para cada operação executada), porém elas podem depender de um valor que está na memória(variável), e esse valor poderá ser alterado ao longo do programa(por isso se chama variável). Por isso a ordem como é escrita suas operações definirá a saída do seu programa.

Enfim, uma das coisas mais importantes a lembrar ao programar é... coloque as coisas no lugar certo, na ordem certa :D

Link para o comentário
Compartilhar em outros sites

Como há um return sem definição do tipo da função?! :D

Que compilador fora de padrão vc está utilizando?

Mesmo que o compilador considere algo como "int" é boa prática definir.

Pq vc usou float? Afinal são "três números inteiros e positivos" ?!

Vamos como o Jack o estripador - por partes! :P

#include "stdio.h"
#include "stdlib.h"
#include "math.h"

int main(void)
{
	unsigned int a, b, c; // três números inteiros e positivos
	float r, s, d;

	printf("Entre com o valor de A: ");
	scanf("%d", &amp;a);
	printf("\nEntre com o valor de B: ");
	scanf("%d", &amp;b);
	printf("\nEntre com o valor de C: ");
	scanf("%d", &amp;c);

	r = pow(static_cast&lt;float&gt;(a + b), 2); // R=(A+B)elevado2
	s = pow(static_cast&lt;float&gt;(b + c), 2); // S=(B+C)elevado2

	d = (r + s) / 2; // D=(R+S)/2

	printf("\nO valor de da expressão (D) é: %.1f: ", d);


	return 0;
}

Bons estudos!

Link para o comentário
Compartilhar em outros sites

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.



  • Estatísticas do Fórum

    • Total de Tópicos
      56k
    • Total de Posts
      465.7k
×
×
  • Criar Novo...