Boa noite Galera, estou fazendo um trabalho para a facul, já desenvolvi todo o algoritmo porém na parte onde tenho que mostrar os nome em ordem alfabética, preciso ordenar um vetor que contem nome dentro. porém não esta dando certo, estou usando o metodo bolha com a função do C strcmp, mas não esta funcionando. agradeço. Segue abaixo o código que já desenvolvi.
/*O sistema deve permitir:
1. Registrar um número indeterminado de dados. Cada registo contém: NOME (máximo 40 caracteres), TIPO SANGUÍNEO (A, B, O) e FATOR RH (+ ou -).
2. Consultar em tela, conforme o tipo sanguíneo [A, B, O] e do fator RH [+, -] informados, todos os nomes das pessoas (em ordem alfabética) que possuem este tipo sanguíneo e fator RH.
O algoritmo termina quando o usuário digitar “n” na pergunta “Continua a consulta [s/n]? ”
Observação: validar as entradas, permitir apenas as letras e sinais indicados nesta especificação.
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h> //BIBLIOTECA PARA USAR STRING
#include <ctype.h> //BIBLIOTECA DA FUNÇÃO TOUPPER
#define MAX 100
struct REG_BANCO_SANGUE{
char nome[40];
char tipoSangue;
char fatorRh;
};
int main(void){
struct REG_BANCO_SANGUE banco[MAX];
int i=0,j,y,cont=0;
int tamanho;
char auxCad,auxPes,auxOrdenar,tipoSangueAux,fatorRhAux;
system("color 74");
printf(" BANCO DE SANGUE\n");
do{
printf("\nInforme o nome do doador.....................:");
fflush(stdin);
scanf("%s", &banco[i].nome);
cont++;
printf("\nInfome o tipo sanguineo do doador{O/A/B}.....:");
fflush(stdin);
scanf("%c", &banco[i].tipoSangue);
while(banco[i].tipoSangue != 'A' && banco[i].tipoSangue!= 'a' && banco[i].tipoSangue != 'B' && banco[i].tipoSangue != 'b' && banco[i].tipoSangue != 'O' && banco[i].tipoSangue != 'o'){
printf("Infome o tipo sanguineo do doador{O/A/B}.....:");
fflush(stdin);
scanf("%c", &banco[i].tipoSangue);
}
printf("Infome o fator RH do Sangue{+/-}..............:");
fflush(stdin);
scanf("%c", &banco[i].fatorRh);
while( banco[i].fatorRh != '+' && banco[i].fatorRh != '-'){
printf("Infome o fator RH do Sangue{+/-}..............:");
fflush(stdin);
scanf("%c", &banco[i].fatorRh);
}
i++;
printf("\nDeseja continuar cadastrando doadores?.:(S/N)\n");
auxCad = getch();
while(auxCad != 's' && auxCad != 'S' && auxCad != 'n' && auxCad != 'N'){
printf("\nDeseja continuar cadastrando doadores?.:(S/N)\n");
auxCad = getch();
}
}while(auxCad != 'n' && auxCad !='N');
for( i= 0; i<=cont; i++){
for( j= i+1; j<= cont; j++){
if(strcmp(banco[i].nome,banco[j].nome)<0){
auxOrdenar = banco[j].nome;
banco[i].nome = banco[j].nome;
banco[i].nome = auxOrdenar;
}
}
}
printf("\n\n------PREENCHA OS DADOS A SEREM PESQUISADOS-------\n\n");
do{
printf("\nInforme o tipo sanguineo{O/A/B}.....:");
fflush(stdin);
scanf("%s", &tipoSangueAux);
while(tipoSangueAux != 'A' && tipoSangueAux != 'a' && tipoSangueAux != 'B' && tipoSangueAux != 'b' && tipoSangueAux != 'O' && tipoSangueAux != 'o'){
printf("\nInforme o tipo sanguineo{O/A/B}.....:");
fflush(stdin);
scanf("%s", &tipoSangueAux);
}
printf("\nInforme o fator RH{+/-}..............:");
fflush(stdin);
scanf("%c", &fatorRhAux);
while(fatorRhAux != '+' && fatorRhAux != '-'){
printf("\nInforme o fator RH{+/-}..............:");
fflush(stdin);
scanf("%c", &fatorRhAux);
}
for(i=0; i<cont; i++){
if(banco[i].tipoSangue = tipoSangueAux && banco[i].fatorRh == fatorRhAux){
printf("\n %s", banco[i].nome);
}
else{
printf("\nNenhum item encontrado");
}
}
printf("\nDeseja continuar a consulta? (S/N)\n\n");
auxPes = getch();
while(auxPes != 's' && auxPes != 'S' && auxPes != 'n' && auxPes != 'N'){
printf("\nDeseja continuar cadastrando doadores?.:(S/N)\n\n");
auxPes = getch();
}
}while(auxPes != 'n' && auxPes != 'N');
system("pause");
}
/*O sistema deve permitir:
1. Registrar um número indeterminado de dados. Cada registo contém: NOME (máximo 40 caracteres), TIPO SANGUÍNEO (A, B, O) e FATOR RH (+ ou -).
2. Consultar em tela, conforme o tipo sanguíneo [A, B, O] e do fator RH [+, -] informados, todos os nomes das pessoas (em ordem alfabética) que possuem este tipo sanguíneo e fator RH.
O algoritmo termina quando o usuário digitar “n” na pergunta “Continua a consulta [s/n]? ”
Observação: validar as entradas, permitir apenas as letras e sinais indicados nesta especificação.
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h> //BIBLIOTECA PARA USAR STRING
#include <ctype.h> //BIBLIOTECA DA FUNÇÃO TOUPPER
#define MAX 100
struct REG_BANCO_SANGUE{
char nome[40];
char tipoSangue;
char fatorRh;
};
int main(void){
struct REG_BANCO_SANGUE banco[MAX];
int i=0,j,y,cont=0;
int tamanho;
char auxCad,auxPes,auxOrdenar,tipoSangueAux,fatorRhAux;
system("color 74");
printf(" BANCO DE SANGUE\n");
do{
printf("\nInforme o nome do doador.....................:");
fflush(stdin);
scanf("%s", &banco[i].nome);
cont++;
printf("\nInfome o tipo sanguineo do doador{O/A/B}.....:");
fflush(stdin);
scanf("%c", &banco[i].tipoSangue);
while(banco[i].tipoSangue != 'A' && banco[i].tipoSangue!= 'a' && banco[i].tipoSangue != 'B' && banco[i].tipoSangue != 'b' && banco[i].tipoSangue != 'O' && banco[i].tipoSangue != 'o'){
printf("Infome o tipo sanguineo do doador{O/A/B}.....:");
fflush(stdin);
scanf("%c", &banco[i].tipoSangue);
}
printf("Infome o fator RH do Sangue{+/-}..............:");
fflush(stdin);
scanf("%c", &banco[i].fatorRh);
while( banco[i].fatorRh != '+' && banco[i].fatorRh != '-'){
printf("Infome o fator RH do Sangue{+/-}..............:");
fflush(stdin);
scanf("%c", &banco[i].fatorRh);
}
i++;
printf("\nDeseja continuar cadastrando doadores?.:(S/N)\n");
auxCad = getch();
while(auxCad != 's' && auxCad != 'S' && auxCad != 'n' && auxCad != 'N'){
printf("\nDeseja continuar cadastrando doadores?.:(S/N)\n");
auxCad = getch();
}
}while(auxCad != 'n' && auxCad !='N');
for( i= 0; i<=cont; i++){
for( j= i+1; j<= cont; j++){
if(strcmp(banco[i].nome,banco[j].nome)<0){
auxOrdenar = banco[j].nome;
banco[i].nome = banco[j].nome;
banco[i].nome = auxOrdenar;
}
}
}
printf("\n\n------PREENCHA OS DADOS A SEREM PESQUISADOS-------\n\n");
do{
printf("\nInforme o tipo sanguineo{O/A/B}.....:");
fflush(stdin);
scanf("%s", &tipoSangueAux);
while(tipoSangueAux != 'A' && tipoSangueAux != 'a' && tipoSangueAux != 'B' && tipoSangueAux != 'b' && tipoSangueAux != 'O' && tipoSangueAux != 'o'){
printf("\nInforme o tipo sanguineo{O/A/B}.....:");
fflush(stdin);
scanf("%s", &tipoSangueAux);
}
printf("\nInforme o fator RH{+/-}..............:");
fflush(stdin);
scanf("%c", &fatorRhAux);
while(fatorRhAux != '+' && fatorRhAux != '-'){
printf("\nInforme o fator RH{+/-}..............:");
fflush(stdin);
scanf("%c", &fatorRhAux);
}
for(i=0; i<cont; i++){
if(banco[i].tipoSangue = tipoSangueAux && banco[i].fatorRh == fatorRhAux){
printf("\n %s", banco[i].nome);
}
else{
printf("\nNenhum item encontrado");
}
}
printf("\nDeseja continuar a consulta? (S/N)\n\n");
auxPes = getch();
while(auxPes != 's' && auxPes != 'S' && auxPes != 'n' && auxPes != 'N'){
printf("\nDeseja continuar cadastrando doadores?.:(S/N)\n\n");
auxPes = getch();
}
}while(auxPes != 'n' && auxPes != 'N');
system("pause");
}






