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
0 thoughts on “Guião laboratorial n.º 2 – exercício 2”