Ir ao conteúdo
  • Cadastre-se

C Linguagem C programação Faculdade


batgirl123

Posts recomendados

Faça um programa que permite ao usuário fornecer quatro números inteiros representando as coordenadas cartesianas (x,y) de dois pontos (A e B), ou seja, A = (x1, y1) e B = (x2, y2). O programa principal (main) também deverá permitir que o usuário escolha qual das seguintes funções será executada:

1) dados dois pontos, calcular e exibir a distância euclidiana entre eles, 2) dados dois pontos calcular e exibir o produto escalar entre eles (considere que as coordenadas do vetor A são (x1,y1) e do vetor B são (x2,y2)), 3) dados dois pontos calcular e exibir o vetor AB 4) dados dois pontos encontrar o coeficiente angular (m) da reta que passa por esses pontos.

Ou seja, se o usuário digitar "1", o programa irá calcular e exibir a distância euclidiana entre os pontos A e B. Portanto, ao todo, teremos cinco entradas.

IMPORTANTE 1: para cada um dos itens anteriores deverá ser construída uma função. IMPORTANTE 2: todas as suas funções devem estar dentro do arquivo main.c. IMPORTANTE 3: sempre use duas casas decimais nas aproximações.

 

OBS: NÃO CONSIGO ENCONTRAR O ERRO E NÃO SEI COMO FAÇO PARA CALCULAR A OPÇÃO 3 E A OPÇÃO 4, segue código feito até o momento

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

 

void menu (){

//printf("- Calcular e exibir a distancia euclidiana (1) \n");

//printf("- Calcular e exibir o produto escalar (2) \n");

//printf("- Calcular e exibir o vetor AB (3) \n");

//printf("-Calcular e exibir o coeficiente angular(4) \n");

//printf("- Sair (s) \n");

//printf("Escolha a opcao desejada \n");

}

 

float calculaDistancia(int x1, int y1, int x2, int y2){

return sqrt( pow(x2-x1,2)+ pow(y2-y1,2));

}

 

float calculaProdutoEs(int Vx1, int Vy1, int Vx2, int Vy2){

return (Vx1 * Vx2) + (Vy1 * Vy2);

}

 

float calculaCoeficienteAng(int Px1, int Py1, int Px2, int Py2){

return (Py2 - Py1) / (Px2 - Px1);

}

 

int main() {

char op;

menu ();

scanf("%c", &op);

switch(op) {

case'1':

//printf("Calcular distancia euclidiana \n");

scanf("%c", &op);

int x1, y1, x2, y2;

float distanciaEuclidiana;

//printf("Informe as coordenadas cartesianas X e Y para o primeiro ponto \n");

scanf("%d %d", &x1,&y1);

//printf("Informe as coordenadas cartesianas X e Y para o segundo ponto \n");

scanf("%d %d", &x2,&y2);

scanf("%c", &op);

//printf("Calcule a distancia entre os pontos \n");

distanciaEuclidiana = calculaDistancia(x1,y1,x2,y2);

printf("%f",distanciaEuclidiana);

break;

 

case'2':

//printf("Calcular produto escalar \n");

scanf("%c", &op);

int Vx1, Vy1, Vx2, Vy2;

float produtoescalar;

//printf("Informe as coordenadas cartesianas X e Y para o primeiro vetor \n");

scanf("%d %d", &Vx1,&Vy1);

//printf("Informe as coordenadas cartesianas X e Y para o segundo vetor \n");

scanf("%d %d", &Vx2,&Vy2);

//printf("Calcule o produto escalar \n");

produtoescalar = calculaProdutoEs(Vx1, Vy1, Vx2, Vy2);

printf("%2.f",produtoescalar);

break;

 

case '3':

printf("Calcular o vetor AB \n");

 

case'4':

printf("Calcular o coeficiente angular \n");

int Px1, Py1, Px2, Py2;

float coeficienteangular;

printf("Informe as coordenadas cartesianas X e Y para o primeiro vetor \n");

scanf("%d %d", &Px1,&Py1);

printf("Informe as coordenadas cartesianas X e Y para o segundo vetor \n");

scanf("%d %d", &Px2,&Py2);

printf("Calcule o coeficiente angular \n");

coeficienteangular = calculaCoeficienteAng(Px1, Py1, Px2, Py2);

printf("%2.f",coeficienteangular);

break;

 

case 's':

printf("Encerrar programa \n");

break;

}

return 0;

}

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@batgirl123     QuaL erro está tendo , testei aqui no visual studio e está funcionando bem  , essa opção três é exibir o vetor , e seu código poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <iomanip>
#include <vector>
void menu();
float calculaDistancia(int x1, int y1, int x2, int y2);
float calcula_vetor(int x1, int y1, int x2, int y2, int *vetor);
float calculaProdutoEs(int Vx1, int Vy1, int Vx2, int Vy2);
float calculaCoeficienteAng(int Px1, int Py1, int Px2, int Py2);

int main()
{
	char op,a;
	int ret,vet[2];
	do
	{
		menu();
		scanf("%c", &op);
		while (a = fgetc(stdin) != '\n'); // Limpando o BuFFer do TecLado no comando scanf
		switch (op)
		{
		case'1':
			//printf("Calcular distancia euclidiana \n"); 
			scanf("%c", &op);
			int x1, y1, x2, y2;
			float distanciaEuclidiana;
			printf("Informe as coordenadas cartesianas X e Y para o primeiro ponto \n");
			scanf("%d %d", &x1, &y1);
			printf("Informe as coordenadas cartesianas X e Y para o segundo ponto \n");
			scanf("%d %d", &x2, &y2);
			scanf("%c", &op);
			//printf("Calcule a distancia entre os pontos \n"); 
			distanciaEuclidiana = calculaDistancia(x1, y1, x2, y2);
			printf("%f", distanciaEuclidiana);
			break;
		case'2':
			//printf("Calcular produto escalar \n"); 
			scanf("%c", &op);
			int Vx1, Vy1, Vx2, Vy2;
			float produtoescalar;
			//printf("Informe as coordenadas cartesianas X e Y para o primeiro vetor \n"); 
			scanf("%d %d", &Vx1, &Vy1);
			//printf("Informe as coordenadas cartesianas X e Y para o segundo vetor \n"); 
			scanf("%d %d", &Vx2, &Vy2);
			//printf("Calcule o produto escalar \n"); 
			produtoescalar = calculaProdutoEs(Vx1, Vy1, Vx2, Vy2);
			printf("%2.f", produtoescalar);
			break;
		case '3':
			vet[0] = 9;
			printf("Calcular o vetor AB \n");
			//printf("informe  x1 y1 x2 y2 ");
			//scanf("%d%d%d%d", &x1, &y1, &x2, &y2   );       // para testar , depois remover os //
			x1 = 1; y1 = 2; x2 = 7; y2 = 12;                  // para testar depis remover
			/*printf("%d %d %d %d\n", x1, y1, x2, y2);*/
			ret = calcula_vetor(x1, y1, x2, y2, vet);         // envia o endereço do vetor 
			printf("Vetor = ( %d, %d ) .\n", vet[0],vet[1]);  // exibe o vetor
			break;
		case'4':
			printf("Calcular o coeficiente angular \n");
			int Px1, Py1, Px2, Py2;
			float coeficienteangular;
			printf("Informe as coordenadas cartesianas X e Y para o primeiro vetor \n");
			scanf("%d %d", &Px1, &Py1);
			printf("Informe as coordenadas cartesianas X e Y para o segundo vetor \n");
			scanf("%d %d", &Px2, &Py2);
			printf("Calcule o coeficiente angular \n");
			coeficienteangular = calculaCoeficienteAng(Px1, Py1, Px2, Py2);
			printf("%2.f", coeficienteangular);
			break;
		case '5':
			printf("\n\nEncerrar programa\n\n\n");
			break;
		default:
			printf("Opcao InvaLida !\n");
		}
	} while (op != '5');
	return 0;
}
void menu()
{
	printf("\n              Menu\n");
	printf("===============================================\n");
	printf(" 1 - Calcular e exibir a distancia euclidiana\n"); 
	printf(" 2 - Calcular e exibir o produto escalar\n"); 
	printf(" 3 - Calcular e exibir o vetor AB\n"); 
	printf(" 4 - Calcular e exibir o coeficiente angular\n"); 
	printf(" 5 - Sair do programa\n"); 
	printf("     Escolha a opcao desejada => "); 
}

float calculaDistancia(int x1, int y1, int x2, int y2)
{
	return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
}
float calcula_vetor(int x1, int y1, int x2, int y2, int *vetor)//recebe o endereço desse vetor na memória 
{
	int xx = abs(x2 - x1); // ignorando o sinaL
	int yy = abs(y2 - y1); // ignorando o sinaL
	vetor[0] = xx;         // retorna o valores pelo enfereço da variáveL
	vetor[1] = yy;         // retorna o valores pelo engereço da variáveL
	return 128;
}

float calculaProdutoEs(int Vx1, int Vy1, int Vx2, int Vy2)
{
	return (Vx1 * Vx2) + (Vy1 * Vy2);
}

float calculaCoeficienteAng(int Px1, int Py1, int Px2, int Py2)
{
	return (Py2 - Py1) / (Px2 - Px1);
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!