Ir para conteúdo
Fórum Script Brasil
  • 0

Ordem Alfabetica


Guest rickab7

Pergunta

Guest rickab7

Ola pessoal e ai td tranquilo???...bom primeira coisa eu queria agradecer por vocês tarem me ajudando ... e dizer q esse grupo ta legal...bom o q eu puder ajudar....

eu to fazendo uma lista de exercicio da minha professora pra ficar crack na prova...mais empaquei na hora de deixar o meu programa em ordem alfabetica e também na hora de deletar dados...lembrando q o q eu to fazendo agora é lista....

o problema ta aqui .. fiz ele no devcpp..c alguém puder me ajudar

/*5- Criar um programa que manipule uma lista encadeada, contendo informações

sobre pacientes (nome do paciente, nome do médico, data de nascimento, sexo). Este

programa deverá implementar as seguintes funções:

Inserir elementos.

Mostrar elementos na ordem de cadastramento.

Mostrar elementos em ordem crescente (ordenar pelo nome do paciente)

Mostrar elementos em ordem decrescente (ordenar pelo nome do paciente)

Excluir pacientes individualmente.

Excluir pacientes por médico .

Observações:

os elementos podem ser inseridos sem qualquer ordenação; quando a lista for

mostrada em ordem crescente ou decrescente deve-se utilizar alguma forma que não

destrua a ordem original de cadastramento; para realizar a exclusão de pacientes

individualmente, deve-se informar o nome do paciente que se deseja remover;

para realizar a exclusão de pacientes por médico, deve-se informar o nome do

médico cujos pacientes serão excluídos da lista.*/

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <string.h>

using namespace std;

class hospital{

private:

char nomep[50];

char nomem[50];

char data_nasc[10];

char sexo;

hospital *prox;

public:

hospital *inserir ( hospital *i );

void mostrar (hospital *i);

void ordemcres ( hospital *i );

};

int main()

{ hospital *i;

int op;

i = NULL;

do{ system("cls");

cout << "\n(1)-CADASTRAR PACIENTES";

cout << "\n(2)-MOSTRAR ELEMENTOS NA ORDEM";

cout << "\n(3)-MOSTRAR ELEMENTOS POR ORDEM ALFABETICA CRESCENTE";

cout << "\n(4)-MOSTARR ELEMENTOS POR ORDEM ALFABETICA DECRESCENTE";

cout << "\n(4)-EXCLUIR PACIENTES";

cout << "\n(5)-EXCLUIR PACIENTES POR MEDICO";

cout << "\n(6)-FINALIZAR PROGRAMA";

cout << "\n\nNUMERO: ";

cin >> op;

getchar();

switch(op)

{

case 1: system("cls");

i = i -> inserir(i);

break;

case 2: system("cls");

i -> mostrar(i);

break;

case 3: system("cls");

i -> ordemcres(i);

break;

}

}while(op != 6);

return 0;

}

hospital *hospital::inserir( hospital *i)

{ hospital *novo;

hospital *aux;

novo = new hospital;

cout << "\nNOME DO PACIENTE: ";

gets(novo -> nomep);

cout << "\nNOME DO MEDICO: ";

gets(novo -> nomem);

cout << "\nDATA DE NASCIMENTO: ";

gets(novo -> data_nasc);

cout << "\nSEXO: ";

cin >> novo -> sexo;

novo -> prox = NULL;

if(i == NULL)

i = novo;

else

{ aux = i;

while( aux -> prox != NULL)

aux -> prox;

aux -> prox = novo;

}

return i;

}

void hospital::mostrar( hospital *i)

{ hospital *aux;

aux = i;

while( aux != NULL)//porque eu não consegui fazer com o printf??

{ cout << "\nNOME: "<< aux -> nomep;

cout << "\nNOME DO MEDICO: "<< aux -> nomem;

cout << "\nDATA DE NASCIMENTO: "<<aux -> data_nasc<<endl<<endl;

aux = aux -> prox;

}

getch();

}

void hospital::ordemcres( hospital *i)

{ hospital *aux;

hospital *aux2;

aux = i;

aux2 = i;

char auxnome[50];

while(aux != NULL)

{

while(aux2 != NULL)

{ if( strcmp(aux -> nomep, aux2->nomep)>=0)

strcpy(auxnome, aux2->nomep);

aux2 = aux2 -> prox;

}

printf("NOME: %s", auxnome);

aux = aux -> prox;

}

getch();

}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Acredito que seria melhor se você primeiro formasse a nova lista (aux2) e só depois percorresse ela para imprimi-la (e não tudo de uma vez só). Além disso, a ordenação não está correta. Você simplesmente está olhando se o nome da primeira lista é maior ou igual ao que está sendo apontado pela segunda lista, mas não está deslocando os demais (quando o nome deve ser inserido no meio).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest rickab7

cara pior q é verdade...depois no outro dia q eu fui ver...eu não tava fazendo nada...rsrsr...+ é isso ai vivendo e aprendendo...o jeito é fazer + uma lista...

falou cara...valeu pela dica

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...