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

polícia pretende armazenar informação sobre um conjunto de criminosos. Para cada um dos criminosos, a informação a armazenar é a seguinte: nome, altura (em cm) e peso (em Kg).
a) Crie um tipo estruturado que permita guardar a informação relativa a um criminoso;
b) Declare uma tabela que permita armazenar um máximo de 100 criminosos. A tabela deve ser uma variável local da função main().
Após ter declarado a tabela, inicialize-a com os criminosos: {“Joao Ratao”, 175 cm, 120 Kg};
{“Gato das Botas”, 199 cm, 67 Kg}; {“Mancha Negra”, 150 cm, 80 Kg}; {“Etelvina Seabra”,
156 cm, 45 Kg}.
c) Desenvolva uma função que escreva no monitor a informação relativa a um criminoso. A função recebe, como argumentos, um ponteiro para o início da tabela, o número de elementos que esta contém e a posição em que se encontra a estrutura relativa ao criminoso pretendido;
d) Desenvolva uma função que procure suspeitos de um determinado crime. A função recebe,como argumentos, um ponteiro para o início da tabela, o número de elementos que esta contém, o peso aproximado e a altura aproximada do suspeito. Deve percorrer a tabela e escrever no monitor a informação relativa a criminosos cuja diferença de peso e de altura não seja superior a 10% dos valores indicados como argumento.
e) Desenvolva uma função que permita retirar da tabela a informação relativa a uma pessoa. A função recebe, como argumentos, um ponteiro para o início da tabela, o número de elementos que esta contém e o nome da pessoa a retirar. Se existir alguém com esse nome na tabela a sua estrutura deve ser eliminada. Devolve como resultado o número de elementos que ficaram na tabela após a eliminação.

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

//alinea b
#define TAM 100

//alinea a
struct criminoso {
char nome[20];
int alturaCM;
int pesoKg;
};

void mostra_criminoso(struct criminoso *c,int t, int v){
int i;
for(i=0; i< t; i++, c++){
  if(i==v){
  printf("nome: %s", c->nome);
  printf("\naltura: %dcm",c->alturaCM);
  printf("\npeso: %dkg",c->pesoKg);
  }
}

}
//d
void procura_criminoso(struct criminoso *p, int t, int a_procura, int p_procura){
int i;
float cimaK, baixoK, cimaA, baixoA;

  baixoK=p_procura/1.1;
  cimaK=p_procura*1.1;
  baixoA=a_procura/1.1;
  cimaA=a_procura*1.1;
  printf("\nreferencias: %.2f--%.2f kg %.2f--%.2f cms", cimaK, baixoK, cimaA, baixoA);

for(i=0; i< t; i++, p++){
  if(p->pesoKg >= baixoK && p->pesoKg <= cimaK && p->alturaCM >= baixoA && p->alturaCM <= cimaA){
  printf("\nnome: %s", p->nome);
  printf("\naltura: %dcm",p->alturaCM);
  printf("\npeso: %dkg",p->pesoKg);
  }
}
}

//alinea e

//notworking
int elemina_criminoso(struct criminoso *e, int t, char *nome){
struct criminoso *f;
int novot, i;
char aux[20];

for(i=0, f=e; i<t; i++, e++,f++){
  if(strcmp(nome, e->nome)==0){
    printf("\nexiste");
    e[i]=e[i+1];
    t=t-1;
  }
}

novot= t;
return novot;
}


void mostra_T(struct criminoso *c,int t){
int i;
printf("\n---------------------------------------------");
for(i=0; i< t; i++, c++){
  printf("\nnome: %s", c->nome);
  printf("\naltura: %dcm",c->alturaCM);
  printf("\npeso: %dkg",c->pesoKg);

}

}

int main()
{
//alinea b


struct criminoso tabela_crime[TAM] = {
                      {"Joao Ratao",      175,  120},
                      {"Gato das Botas",  199,  67},
                      {"Mancha Negra",    150,  80},
                      {"Etelvina Seabra", 156,  45}
                      };

  int t=4;
  int ver_criminoso=2;
  //mostra_criminoso(tabela_crime, t, ver_criminoso);

//alinea d

  int altura_procurar=160;
  int peso_procurar=45;
  //procura_criminoso(tabela_crime, t, altura_procurar, peso_procurar);

//aliena e
  char nome_procurar[20]="Joao Ratao";
  printf("\ntotal de elementos iniciais: %d", t);
    mostra_T(tabela_crime, t);
  t=elemina_criminoso(tabela_crime, t, nome_procurar);
  printf("\ntotal de elementos atuais: %d", t);
  mostra_T(tabela_crime, t);

  return 0;
}

esta incompleto o eliminar não percebi a atualização!!!

+ajudas: LINK

+ajudas: LINK

+ajudas: LINK

Tags :