Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

spinhei

[Resolvido] Algoritmos Linguagem C

Recommended Posts

tentei fazer um exercicio compilei e nao deu erro mas o programa nao funciona conforme deveria

O exercicio é:

Construa um algoritmo que, tendo como dados de entrada dois pontos no plano, P(x1,y1) e P(x2,y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é:V(x2-x1)²+(y2-y1)² obs V=raiz quadrada

 

meu programa ficou

 assim:
#include <stdio.h>
#include <math.h>

int main( )
{
float x1, x2,y1, y2;
float distancia; /* Declaração de Variaveis */

printf("Digite o valor de x1\n");
scanf("%f", &x1);
printf("Digite o valor de x2\n");
scanf("%f", &x2);
printf("Digite o valor de y1\n");
scanf("%f", &y1);
printf("Digite o valor de y2\n");
scanf("%f", &y2); /* Entrada de dados */


sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); /* Distancia entre dois pontos do plano cartesiano */
printf("A distancia entre os pontos e %f\n", distancia);

return (0);
}

 

Quando compilo, ele roda, mais daí eu digito o x1, o x2, o y1 e o y2 e a p/ quaisquer valores sempre da 1.#QNANO ¬¬

Oque é isso ? porque nao dá certo?? me ajudeem !!! Estou usando code bloks e é linguagem c

obs: ja tentei de tudo principalmente procar os floats por int mais ai o resultado sai nada a ver, eu acho que não é a expressão, mais se não for o que será??

 

Preciso da ajuda de alguém ;~/obrigada =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, vi seu tópico e resolvi me cadastrar para lhe ajudar.

Olhando o seu código, reparei que a variável "distancia" não é utilizada, e que apesar da conta ser efetuada, ela não é guardada em variável alguma.

Testando o seu código, o único resultado que obtive foi zero.

Jogando o resultado da conta para a variável "distancia", o erro foi solucionado, veja aqui:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main( )
{
float x1, x2,y1, y2;
float distancia; /* Declaração de Variaveis */

printf("Digite o valor de x1\n");
scanf("%f", &x1);
printf("Digite o valor de x2\n");
scanf("%f", &x2);
printf("Digite o valor de y1\n");
scanf("%f", &y1);
printf("Digite o valor de y2\n");
scanf("%f", &y2); /* Entrada de dados */


distancia=sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); /* Distancia entre dois pontos do plano cartesiano */
printf("A distancia entre os pontos e %f\n", distancia);
system("pause");

return (0);
}

 

Somente como adendo, após o seu printf adicione um 'system("pause")' para que o usuário possa visualizar o resultado, como fiz acima.

OBS.: Para utilizar a função system, é necessário incluir a biblioteca stdlib.h, como fiz acima.

 

Porém, particularmente falando, recomendaria que ao invés de repetir os termos (x2-x1)*(x2-x1), utilize a função "pow", que serve justamente para potências.

Desta forma, seu código ficaria assim:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main( )
{
float xa, xb,ya, yb;
float distancia; /* Declaração de Variaveis */

printf("Digite o valor de xa\n");
scanf("%f", &xa);
printf("Digite o valor de xb\n");
scanf("%f", &xb);
printf("Digite o valor de ya\n");
scanf("%f", &ya);
printf("Digite o valor de yb\n");
scanf("%f", &yb); /* Entrada de dados */


distancia=sqrt(pow((xb-xa),2)+pow((yb-ya),2)); /* Distancia entre dois pontos do plano cartesiano */
printf("A distancia entre os pontos e %f\n", distancia);
system("pause");

}

 

Espero ter ajudado.

Abraços ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa fiquei até 1:30 da manha tentando descobri e nao sabia pq era --'

ajudou sim obrigada! ;D

 

eeei só uma coisa... tem como excluir esse topico? passei muito tempo tentendo para chegar um gaiato e só copiar! se for por parte do moderador pode excluir !

mesmo assim vou editar o texto retirando a pergunta!

 

nao tem como editar depois de respondido que droga! se der para exccluir excluam por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Spinhei, os tópicos não são excluídos por solicitação de membros a não ser que violem alguma regra do fórum.

O objetivo de um fórum é ajudar os usuários e visitantes a sanarem as dúvidas. Por isso o tópico será mantido.

Existe a possibilidade de alguém copiar o código, assim como existe a possibilidade de alguém produzir um código parecido/idêntico com o seu por coincidência. Mas como o problema da determinação da distância entre dois pontos não exige uma solução elaborada, o professor não pode te acusar de plágio sem provas ou sem processo administrativo (teoricamente, este tópico ficaria a seu favor. Ainda mais por você ter apenas esquecido de armazenar o resultado numa variável)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, mais que é chato é...eu que passei um tempao tentando fazer e vem um gaiato e copia...

mais tudo bem eu entendo obrigada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

rlx ninguem vai copiar não...

no SPOJ tem algo parecido o problema PARPROX..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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