Breno R2 Postado 6 de maio de 2010 Denunciar Compartilhar Postado 6 de maio de 2010 (editado) 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 7 de maio de 2010 por Breno R2 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Maddo Garan Postado 7 de maio de 2010 Denunciar Compartilhar Postado 7 de maio de 2010 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 <stdio.h> #include <stdlib.h> #include <math.h> main() { float A, B, C, resab, resbc, R, S; printf("Digite A: "); scanf("%f", &A); printf("Digite B: "); scanf("%f", &B); printf("Digite C: "); scanf("%f", &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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Gabriel M Couto Postado 7 de maio de 2010 Denunciar Compartilhar Postado 7 de maio de 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
franzSilva Postado 7 de maio de 2010 Denunciar Compartilhar Postado 7 de maio de 2010 Como há um return sem definição do tipo da função?! 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! #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", &a); printf("\nEntre com o valor de B: "); scanf("%d", &b); printf("\nEntre com o valor de C: "); scanf("%d", &c); r = pow(static_cast<float>(a + b), 2); // R=(A+B)elevado2 s = pow(static_cast<float>(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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe do debate
Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.