é o seguinte, estou estudando funções e tal, por isso o programa ta dividido em várias funções, eu já arrumei uns problemas com as outras funções de cadastramento e não consigo resolver essa de comparação, vou postar o código fonte e espero uma luz de vocês, pq eu estou quebrando a cabeça e não consigo resolver!!
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#define MAXFICHA 20
struct ficha {
char nome[50];
int altura;
int peso;
char endereco[50];
};
struct suspeito {
int altura;
int peso;
};
int menu() {
int opcao;
fflush(stdin);
system("cls"
printf("### I D E N T I F I C A D O R D E S U S P E I T O S ###\n\n"
printf("1- Cadastrar Ficha de Criminosos.\n"
printf("2- Preencher Informacoes do Suspeito.\n"
printf("3- Procurar Suspeito nas Fichas.\n"
printf("4- Sair.\n\n"
printf("Escolha uma das opcoes: "
scanf("%i", &opcao);
return(opcao);
}
void adicionarFicha(struct ficha array[MAXFICHA], int *cont) {
fflush(stdin);
system("cls"
printf("### I D E N T I F I C A D O R D E S U S P E I T O S ###\n\n"
printf("Cadastrar Ficha de Criminosos.\n\n\n"
printf("Digite o Nome: "
gets(array[*cont].nome);
do {
printf("Digite a Altura(cm): "
scanf("%i", &array[*cont].altura);
if(array[*cont].altura <= 0) {
printf("!!! Altura invalida, por favor digite novamente.!!!\n"
}
}while(array[*cont].altura <=0);
do {
printf("Digite o Peso(Kg): "
scanf("%i", &array[*cont].peso);
if(array[*cont].peso <= 0) {
printf("!!! Peso invalido, por favor digite novamente.!!!\n"
}
}while(array[*cont].peso <=0);
fflush(stdin);
printf("Digite o Endereco: "
gets(array[*cont].endereco);
(*cont)++;
system("pause"
}
void suspeito(struct suspeito array2) {
system("cls"
printf("### I D E N T I F I C A D O R D E S U S P E I T O S ###\n\n"
printf("Preencher Informacoes do Suspeito.\n\n\n"
fflush(stdin);
do {
printf("Digite a Altura(cm) Estimada: "
scanf("%i", &array2.altura);
if(array2.altura <= 0) {
printf("!!! Altura invalida, por favor digite novamente.!!!\n"
}
}while(array2.altura <=0);
do {
printf("Digite o Peso(Kg): "
scanf("%i", &array2.peso);
if(array2.peso <= 0) {
printf("!!! Peso invalido, por favor digite novamente.!!!\n"
}
}while(array2.peso <=0);
printf("\nCadastro Efetuado com Sucesso!\n\n"
system("pause"
}
void comparar(struct ficha array[MAXFICHA], struct suspeito array2, int cont) {
int i=0;
system("cls"
printf("### I D E N T I F I C A D O R D E S U S P E I T O S ###\n\n"
printf("Procurando Fichas Compativeis com as informacoes dos suspeitos....\n\n\n"
printf("Suspeitos Compativeis com a Altura Fornecida:\n\n"
for(i=0;i<cont;i++) {
if(array[i].altura <= array2.altura+5) {
if(array[i].altura >= array2.altura-5) {
printf("Nome: %s\nAltura: %i\nPeso: %i\nEndereco: %s\n\n", array[i].nome, array[i].altura, array[i].peso, array[i].endereco);
}
}
}
printf("Suspeitos Compativeis com o Peso Fornecido:\n\n"
for(i=0;i<cont;i++) {
if(array[i].peso <= array2.peso+5) {
if(array[i].peso >= array2.peso-5) {
printf("Nome: %s\nAltura: %i\nPeso: %i\nEndereco: %s\n\n", array[i].nome, array[i].altura, array[i].peso, array[i].endereco);
}
}
}
system("pause"
}
main() {
struct ficha array[MAXFICHA];
struct suspeito array2;
int opcao, cont;
cont=0;
while(opcao != 4) {
opcao = menu();
switch(opcao) {
case 1: {
if (cont < MAXFICHA) {
adicionarFicha(array ,&cont);
}else{
printf("\nNumero de Fichas Cadastradas esta no maximo!\n\n"
system("pause"
}
break;
}
case 2: {
if (cont==0) {
printf("\nNenhuma Ficha Cadastrada!\n\n"
system("pause"
}else{
suspeito(array2);
}
break;
}
case 3: {
if(cont==0) {
printf("\nNenhuma Ficha Cadastrada!\n\n"
system("pause"
}else{
comparar(array, array2, cont);
}
break;
}
case 4: {
break;
}
default: {
printf("Opcao Invalida! Aperta uma tecla para Retornar ao Menu...."
getch();
break;
}
}
}
}
Ta ai o código galera, aguardo....Edit: Esqueci de postar a propósta, ta ai:
Suponha que você foi encarregado de escrever um programa em linguagem C cuja tarefa será auxiliar a Delegacia de Polícia a identificar possíveis suspeitos de envolvimento em um crime com base na descrição de testemunhas oculares. Esta identificação se dará pela comparação das características do suspeito (fornecidas pelas testemunhas) com as características previamente cadastradas nos arquivos da Delegacia de Polícia. As seguintes funcionalidades são esperadas do programa:
a) ler a partir do teclado e armazenar em um array as “fichas” de 20 criminosos conhecidos, contendo as seguintes informações: Nome, Altura (em cm), peso (em Kg) e Endereço. A execução desta funcionalidade deverá ser implementada por uma função.
b) ler a partir do teclado a descrição do suspeito fornecida pela testemunha ocular, contendo as seguintes informações: Altura Estimada do Suspeito (em cm) e Peso Estimado (em kg). A execução desta funcionalidade também deverá ser implementada por uma função.
c) Comparar a descrição do suspeito com os criminosos cadastrados, imprimindo todos os nomes e endereços que sejam compatíveis com a descrição fornecida. Para a comparação admite-se uma diferença de 5 cm na altura (para mais ou para menos) e uma diferença de 5 kg no peso (também para mais ou menos). A execução desta funcionalidade também deverá ser implementada por uma função.
d) A chamada de cada uma das funcionalidades deverá ser feita a partir de um menu de opções implementado na função main(). Este menu deverá apresentar mais uma opção que permitirá ao usuário encerrar o programa.
e) No cadastramento das alturas e pesos solicitados nos itens a) e b) não são admitidos valores nulos ou negativos, portanto o programa deverá fazer a consistência dos valores digitados para evitar que isto aconteça. A execução destas funcionalidades também deverá ser implementada por funções.