Ir ao conteúdo
  • Cadastre-se
JFiorini

Ajuda com Exercicio do demo

Recommended Posts

Bom rapaziada ....

Meu problema é o seguinte ....

Eu tenho que fazer um trab. de faculdade e to me batendo..

To tentando entender lendo livros mais ta bem difícil...

Quero uma ajuda , um caminho ai de quem puder me ajudar....

O problema:

1- Tenho que captura um valor fornecido pelo usuario que dira quantos retangulos terao e capturar as coordenadas de cada retangulo....

2- Tenho que somar a area de todos os retangulos fornecidos....

3- porém tenho que desconsiderar as areas de sobreposiçao para nao calcular 2 vezes a mesma area....

EXEMPLO:

USUARIO FORNECE NUMERO 3

E da as coordenadas

(3,8), (12,6)

(2,7),(17,3)

(4,15),(20,6)

Nesse exemplo o 3,8 Sao coordenadas da extremidade superiorda esquerda

E o 12 ,6 sao da extremidade inferio direita.... X1 Y1 X2 Y2 respectivamente

Eu nao sei se ta bem claro ...

Mas qualquer coisa posso esclarecer duvidas....

Espero que me ajudem

Atenciosamente No Aguardo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu to me virando como posso enquanto espero alguem que intenda...

Sei que ta bem podrao .....

Mas ta difícil entender isso...

Alguem sabe uma maneira de simplificar isso ....

Fazendo usando algo mais eficiente...

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(){

int nfotos, i, x1, x2, y1, y2, area1,areatot,areafor1,areafor2,areafor3,areafor4;

int x3,x4,y3,y4,area2;

int x5,x6,y5,y6,area3,area4,area5,area6,area7;

printf("Digite o conjunto de fotos da area desejada :");

scanf("%d",&nfotos);

if(nfotos==3){

x1=2;

x2=7;

y1=6;

y2=2;

area1=(x2-x1)*(y1-y2);

x3=4;

x4=13;

y3=15;

y4=9;

area2=(x4-x3)*(y3-y4);

x5=8;

x6=17;

y5=11;

y6=6;

area3=(x6-x5)*(y5-y6);

areafor1=(x4-x5)*(y5-y4);

areatot=(area1+area2+area3-areafor1);

printf("\n %d %d %d %d \n %d %d %d %d \n %d %d %d %d \n",x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6);

printf("\n");

}

if(nfotos==6){

x1=4;

x2=11;

y1=12;

y2=4;

area1=(x2-x1)*(y1-y2);

x3=8;

x4=22;

y3=7;

y4=2;

area2=(x4-x3)*(y3-y4);

x5=19;

x6=26;

y5=13;

y6=5;

area3=(x6-x5)*(y5-y6);

int x7 = 9;

int y7 = 15;

int x8 = 22;

int y8 = 10;

area4=(x8-x7)*(y7-y8);

int x9 = 12;

int y9 = 9;

int x10 = 18;

int y10 = 8;

area5=(x10-x9)*(y9-y10);

int x11 = 11;

int y11 = 19;

int x12 = 19;

int y12 = 15;

area6=(x12-x11)*(y11-y12);

areafor1=(x11-x3)*(y3-y2);

areafor2=(x2-x7)*(y1-y8);

areafor3=(x8-x5)*(y5-y8);

areafor4=(x8-x12)*(y3-y6);

areatot=(area1+area2+area3+area4+area5+area6-areafor1-areafor2-areafor3-areafor4);

printf("\n %d %d %d %d \n %d %d %d %d \n %d %d %d %d \n %d %d %d %d \n %d %d %d %d \n %d %d %d %d \n",x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8,x9,y9,x10,y10,x11,y11,x12,y12);

printf("\n");

}

printf("A area e de: %d", areatot);

printf("\n\n");

system("PAUSE");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saca só um exercicio que fiz a mais tempo e que é parecido com esse seu ai:

//4. Considere uma estrutura (struct) para representar um ponto no

//espaço 2D e implemente uma função que indique se um dado ponto p está

//localizado dentro ou fora de um retângulo. O retângulo é definido por

//seus vértices inferior esquerdo v1 e superior direito v2. A função

//deve retornar 1 caso o ponto esteja localizado dentro do retângulo, e

//0 caso contrário.

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <time.h>

#include <math.h>

typedef struct ponto

{

float cord_x;

float cord_y;

}ponto;

typedef struct retangulo

{

struct ponto v1;

struct ponto v2;

}retangulo;

void X_maior(retangulo *A,float *x_maior,float *x_menor);

void Y_maior(retangulo *A,float *y_maior,float *y_menor);

int confere(float x_maior,float x_menor,float x,float y,float y_maior,float y_menor);

int main (int args, char* arg[])

{

retangulo A;

ponto v3;

ponto v4;

ponto p;

float x_maior,x_menor,

y_maior,y_menor;

printf("Digite a coordenada X do vertice 1\n");

scanf("%f",&A.v1.cord_x);

printf("\nDigite a coordenada Y do vertice 1\n");

scanf("%f",&A.v1.cord_y);

printf("Digite a coordenada X do vertice 2\n");

scanf("%f",&A.v2.cord_x);

printf("Digite a coordenada Y do vertice 2\n");

scanf("%f",&A.v2.cord_y);

v3.cord_x=A.v2.cord_x; //Definiçao para lados paralos com mesma dimensao

v3.cord_y=A.v1.cord_y; //Definiçao para lados paralos com mesma dimensao

v4.cord_x=A.v1.cord_x; //Definiçao para lados paralos com mesma dimensao

v4.cord_y=A.v2.cord_y; //Definiçao para lados paralos com mesma dimensao

printf("Retangulo definido por 4 coordenadas\n");

printf("v1;(%f , %f)\t v2;(%f , %f)\t\nv3;(%f , %f)\t v4;(%f , %f)",A.v1.cord_x,A.v1.cord_y,A.v2.cord_x,A.v2.cord_y,v3.cord_x,v3.cord_y,v4.cord_x,v4.cord_y);

printf("\nDigite as coordenadas do ponto o qual deseja verificar\n");

printf("Coordenada X:\n");

scanf("%f",&p.cord_x);

printf("Coordenada Y:\n");

scanf("%f",&p.cord_y);

printf("Ponto P:(%f , %f)\n",p.cord_x,p.cord_y);

X_maior(&A,&x_maior,&x_menor);

Y_maior(&A,&y_maior,&y_menor);

printf("\nMaior X: %f",x_maior);

printf("\nMaior Y: %f\n",y_maior);

if(confere(x_maior,x_menor,p.cord_x,p.cord_y,y_maior,y_menor)==0)

{

printf("\nPonto exterior ao retangulo");

}else

{printf("\nPonto interior ao retangulo");

}

getche();

}

void X_maior(retangulo *A,float *x_maior,float *x_menor)

{

if ((*A).v1.cord_x<(*A).v2.cord_x)

{

*x_maior=(*A).v2.cord_x;

*x_menor=(*A).v1.cord_x;

}else

{

*x_maior=(*A).v1.cord_x;

*x_menor=(*A).v2.cord_x;

}

}

void Y_maior(retangulo *A,float *y_maior,float *y_menor)

{

if ((*A).v1.cord_y<(*A).v2.cord_y)

{

*y_maior=(*A).v2.cord_y;

*y_menor=(*A).v1.cord_y;

}else

{

*y_maior=(*A).v1.cord_y;

*y_menor=(*A).v2.cord_y;

}

}

int confere(float x_maior,float x_menor,float x,float y,float y_maior,float y_menor)

{

if(x>x_menor & x<x_maior & y>y_menor & y<y_maior)

{

return 1;

}else

{

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×