Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Moco

Preciso de em C, Struct.

Recommended Posts

Comecei a ver struct ontem e estou meio perdido. Tenho o exercício abaixo pra fazer, consigo criar a struct ler elas, só que não sei como calculo a distancia entre os pontos.

Alguem ae sabe?

Valeu

 

Segue o problema:

 

Escreva um programa fazendo o uso de struct's. Você deverá criar uma

struct chamada Ponto, contendo apenas a posição x e y (inteiros) do ponto. Declare 2 pontos,

leia a posição (coordenadas x e y) de cada um e calcule a distância entre eles. Apresente no

final a distância entre os dois pontos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Struct é usado para definir um novo tipo de dado.

Voce estará definindo um dado chamado ponto que conterá duas variáveis inteiras x e y.

 

typedef struct{
   int x;
   int y;
}ponto;

Pronto já está definida.

 

Agora vamos declarar uma variável do tipo ponto.

 

ponto A;

A é do tipo ponto. Como faço para ler algum valor e armazenar em A x?

Normalmente como um inteiro. Veja:

 

scanf("%d",&A.x);

Para calcular a distancia entre dois pontos no plano voce pode usar essa formula:

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código dela fórmula mostrada por kandrade es muito simple

 

 

double distancia = sqrt((pontoA.x-pontoB.x)^2 + (pontoA.y-pontoB.y)^2));

 

Saudações

Sergio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Kandrade e sgssergio.

 

Sú uma coisa eu estava fazendo mais ou menos certo, só fiz uma coisa de diferente.

nessa parte:

typedef struct{
   int x;
   int y;
}ponto;

Eu fiz assim:

struct ponto
  {
   int x;
   int y;
};

assim ta errado?

 

PS: Kandrade Grande tattoo também tenho vontade de fazer esse desenho, Amo Pearl Jam e acho o desenho bem legal.

PS2: Tem como eu diminuir essa code box?pelo menos na visualização ta grande demais, se ficar menor desconsiderem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu vejo aqui no forum cada um usando um tipo diferente de struct, acho que nao tem muito bem uma conveção mas as duas funcionam, eu aprendi a primeira.

 

E cada tipo de struc tem um jeito diferente de ser incializado , eu ja struct que incializa normamlmente assim --> ponto A; e que se inicializa assim struc ponto A;

 

agora nao sei o pq dessas paradas eu acho que eh a mesma coisa no papel , alguem pode explicar se existe alguma diferença??

 

e poderia exemplificar os tipos de struc diferentes?sao so essas duas(com typedef e sem typedef??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade não existe tipos diferentes de structs, a definição é assim que se faz:

 

struct ponto{
   int x;
   int y;
};

Só que o incoveniente é quando declarar uma variável do tipo struct ponto, veja com fica:

 

struct ponto A;

 

O typedef é usado para definir um novo nome para sua estrutura. Em vez de chamar struct ponto chamar apenas de ponto por exemplo.

 

 

ara eu vejo aqui no forum cada um usando um tipo diferente de struct, acho que nao tem muito bem uma conveção mas as duas funcionam, eu aprendi a primeira.

 

E cada tipo de struc tem um jeito diferente de ser incializado , eu ja struct que incializa normamlmente assim --> ponto A; e que se inicializa assim struc ponto A;

 

agora nao sei o pq dessas paradas eu acho que eh a mesma coisa no papel , alguem pode explicar se existe alguma diferença??

 

e poderia exemplificar os tipos de struc diferentes?sao so essas duas(com typedef e sem typedef??

Que legal, fiz essa tatoo um pouco antes do show do PJ em São Paulo.

Meu primo tem uma banda cover do PJ em Santo André. Gosto dessa banda desde muleque.

rs

 

PS: Kandrade Grande tattoo também tenho vontade de fazer esse desenho, Amo Pearl Jam e acho o desenho bem legal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria isso?

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

typedef struct
{
	int x;
	int y;
}Ponto;

void main(void)
{
	double distancia = 0;
	Ponto A,B;

	printf("Digite as coordenadas do pontoA: ");
	scanf("%d,%d",&A.x,&A.y);
	printf("Digite as coordenadas do pontoB: ");
	scanf("%d,%d",&B.x,&B.y);

	distancia = sqrt(pow((B.x - A.x),(B.x - A.x)) + pow((B.y - A.y),(B.y - A.y)));
	printf("\nDistancia entre os dois pontos: %f",distancia);
}

Uma dúvida, caso use o typedef como foi feito, não posso inicializar uma variável do tipo struct dentro da declaração da struct? Porque se for apenas a declaração da struct, roda certinho se declarar as variáveis ali...

typedef struct
{
	int x;
	int y;
}Ponto A,B;

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha vamos lah:

primeiro lembre-se o main(); tem q ser int

segundo qnd inicializar double inicialize com 0.0

terceiro seus scanfs estão errados ao invez disso:

scanf("%d,%d",&A.x,&A.y);
mude para:

scanf("%d %d",&A.x,&A.y);
e quarto q eu saiba naum pode declarar a struct como você mostrou no segundo

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq main deve retornar int? meu compilador nao fala nada de retornar void...

oq implica em inicializar double com 0 apenas?

nao esta errado o scanf nao, soh coloquei as virgulas para separar...o usuário tera que digitar as virgulas tb...

Compartilhar este post


Link para o post
Compartilhar em outros sites
pq main deve retornar int? meu compilador nao fala nada de retornar void...

 

Isso já foi discutido no fórum até as pessoas entortarem.

http://forum.imasters.com.br/index.php...ema+operacional

 

#include <stdio.h>
void main(void) {
 puts("123");
}

 

isis@linux-0khy:~/src> gcc-4.3 voidmain.c -Wall

voidmain.c:2: warning: return type of ‘main’ is not ‘int’

 

Se não fala é porque ou não segue o padrão de reclamações ou você não está compilando com os warnings habilitados p/ tudo.

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.