Guião laboratorial n.º 2 – exercício 1

1. Considere que necessita de armazenar informação sobre figuras geométricas num espaço com duas dimensões.
a) Crie tipos estruturados que lhe permitam representar um ponto e um retângulo.
b) Desenvolva uma função que inicialize uma estrutura do tipo retângulo. Toda a informação necessária deve ser fornecida pelo utilizador. A função devolve a estrutura inicializada.
c) Desenvolva uma função que devolva a área de uma estrutura do tipo retângulo passada como  argumento;
d) Desenvolva uma função que verifique se uma estrutura do tipo retângulo passada como
argumento é um quadrado. Se for, a função deve devolver 1. Caso contrário, devolve 0.
e) Desenvolva uma função que receba, como argumentos, uma estrutura do tipo retângulo e um ponto e devolva 1 se o ponto estiver dentro do retângulo.
f) Desenvolva uma função que desloque um retângulo no plano. A função recebe três argumentos: um ponteiro para o retângulo o deslocar, o deslocamento ao longo do eixo xx e o deslocamento ao longo do eixo yy.
g) Declare uma tabela que permita armazenar 4 retângulos. A tabela deve ser uma variável local da função main(). Utilize a função desenvolvida na alínea b) para preencher todos os elementos da tabela.
h) Desenvolva uma função que verifique se numa tabela onde estejam armazenados vários retângulos existem dois que tenham a mesma área. A função recebe como argumentos o endereço do primeiro elemento da tabela e o número de elementos que esta contém. Como resultado, deve devolver o valor 1 se existirem dois retângulos com a mesma área (devolve 0 se todos os retângulos tiverem áreas diferentes).

 

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

#define TAM 4


struct ponto{
  int oX;
  int oY;
};

typedef struct retangulo{
  struct ponto n;
  int largura;
  int altura;
} r1;

struct retangulo r;
struct ponto p;

void iniciaR(){
scanf(" %d", &r.n.oX);
scanf(" %d", &r.n.oY);
scanf(" %d", &r.largura);
scanf(" %d", &r.altura);

};

void iniciaP(){
scanf(" %d", &p.oX);
scanf(" %d", &p.oY);

};

void verdados(){
printf("\nOrigemX: %d, OrigemY: %d, Largura: %d, Altura: %d\n", r.n.oX, r.n.oY, r.largura, r.altura);
}
void verdados2(){
printf("\nPonto OrigemX: %d, Ponto OrigemY: %d\n", p.oX, p.oY);
}


int verarea(struct retangulo k){
int area;
area=k.altura*k.largura;

return area;
}
int verificaQ(struct retangulo k){

if(k.altura==k.largura){
    return 1;
}
else{
    return 0;
}

}

int verificaDentro(struct retangulo k, struct ponto pn){
if(pn.oX<(k.n.oX+k.largura) && pn.oY<(k.n.oY+k.altura) && pn.oX>=k.n.oX && pn.oY>=k.n.oY){
  return 1;
}else{
  return 0;
}
}

void deslocar(r1 *p, int ax, int ay){

  printf("\no quadrado esta na origem em %d %d", p->n.oX, p->n.oY);
  p->n.oX = p->n.oX+ax;
  p->n.oY = p->n.oY+ay;
  printf("\no quadrado foi deslocado para %d %d", p->n.oX, p->n.oY);

}
//g
void iniciaR2(struct rg *p, int d){
int i;
for(i=0;i<d;i++){
  scanf(" %d", &r.n.oX);
  scanf(" %d", &r.n.oY);
  scanf(" %d", &r.largura);
  scanf(" %d", &r.altura);
}
};

void verdados3(){
printf("\nOrigemX: %d, OrigemY: %d, Largura: %d, Altura: %d\n", r.n.oX, r.n.oY, r.largura, r.altura);
}



int main()
{
  iniciaR();
  verdados();
  printf("A area tem o valor de: %d", verarea(r));
  if(verificaQ(r)==1){
    printf("\ne quadrado\n");
  }else{
    printf("\nnao e quadrado\n");
  }
  iniciaP();
  if(verificaDentro(r, p)==1){
    printf("\nesta dentro\n");
  }else{
    printf("\nnao esta dentro\n");
  }
  //f)
  int deslocaX=2;
  int deslocaY=2;
  deslocar(&r, deslocaX, deslocaY);
  //g)
  struct retangulo rG[TAM];

  iniciaR2(rG, TAM);
  //verdados3(r1 tabela, TAM);


  return 0;
}

//incompleto

Tags : ,