Quando insiro todos os campos do registro corretamente, inclusive no campo descrição do problema[200] e cometário técnico[200], se eu digitar uns 180 caracteres em cada um, quando mando imprimir, aparere, o que digitei no campo descrição do problema[200] e cometário técnico[200], e também na linha dos outros campos.
[php]
#include
#include
#include
#include
#include
#define REG_MAX 50
//declaração da estrutura de tipo ROL
typedef struct{
int num_chamado;
char data_ocorrencia[10];
char descricao_problema[200];
char nome_professor[40];
char id_micro[5];
char data_verificacao[10];
char comentario_tecnico[200];
char laboratorio[4];
} ROL;
//declaração dos (métodos || funções || rotinas)
void Le_Dados();
void Inclui_Inicio();
void Inclui_Fim();
void Inclui_Registro();
void Imprimir_Todos_Registros();
void Consulta_Registro();
void Ordenar_Registros();
void Alterar_Registro();
void Excluir_Registro();
int procura_nodo( int chamada );
//void Reorganiza_numero_chamada();
ROL registro[REG_MAX] = {'\0'}; //maximo 50 registros
ROL aux;
int fim_lista = 0; //variavel para controle da lista de registros (fim da lista)
int numeracao_chamada = 1; //variavel para controle da numeração dos chamados
int coordenada_y = 0; //coordenada Y do gotoxy(x,y);
//****************************** MAIN *****************************************//
// Rotina principal do programa
// É ela quem controla todo programa, é através dela que são chamadas as
// outras rotinas do programa.
//*******************************************************************************//
int main (){
char op;
int i;
/* ############################################## */
/* --------------- MENU PRINCIPAL --------------- */
/* ############################################## */
while ( 1 ){
system("cls");
textcolor(WHITE);
printf("\n\n--------------------------------MENU----------------------------------\n\n");
printf("\n 1 - Registrar Ocorrencia (inclui no fim da lista de Registros)");
printf("\n 2 - Inclui Registro no inicio da Lista de Registros");
printf("\n 3 - Inclui Registro antes ou depois de um Registro de referencia");
printf("\n 4 - Imprimir Todos Registros");
printf("\n 5 - Consultar Registro(s)");
printf("\n 6 - Ordenar Registros");
printf("\n 7 - Alterar Registro");
printf("\n 8 - Excluir Registro(s)");
printf("\n 9 - Sair");
printf("\n\n----------------------------------------------------------------------");
printf("\n Informe a Opcao desejada: ");
op = getche();
switch (op){
case '1':
system("cls");
printf("\n\n *** Registrar Ocorrencia (inclui no fim da lista de Registros) *** ");
Inclui_Fim();
break;
case '2':
system("cls");
printf("\n\n *** Inclui Registro no inicio da Lista de Registros *** ");
Inclui_Inicio();
break;
case '3':
system("cls");
printf("\n\n *** Inclui Registro antes ou depois de um Registro de referencia *** ");
Inclui_Registro();
break;
case '4':
system("cls");
textcolor(YELLOW);
printf("\n\n --------------------------------Registros Atuais-------------------------------");
textcolor(WHITE);
Imprimir_Todos_Registros();
break;
case '5':
system("cls");
printf("\n\n *** Consultar Registro(s) *** ");
Consulta_Registro();
break;
case '6':
system("cls");
printf("\n\n *** Ordenar Registros *** ");
Ordenar_Registros();
break;
case '7':
system("cls");
printf("\n\n *** Alterar Registro *** ");
Alterar_Registro();
break;
case '8':
system("cls");
printf("\n\n *** Excluir Registro(s) *** ");
Excluir_Registro();
break;
case '9':
system("cls");
printf("\n\n\n\n Projeto desenvolvido para a cadeira de estruturas de dados - FTEC-POA");
printf("\n\n Leandro Duarte Medeiros");
printf("\n Douglas Fernandes\n\n\n\n");
printf(" Pressione qualquer tecla para ENCERRAR O PROGRAMA...");
getch();
exit( 1 ); // término do programa
break;
default:
printf("\n\n Opcao invalida, opcoes de 1 - 9 \n\n");
system("pause");
}
fflush( stdin );
}
return 0;
}
//****************************** LE_DADOS **********************************************//
// Rotina para leitura dos dados da ocorrência.
// É utilizada pelas rotinas inclui_fim, inclui_inicio, inclui_registro, altera_registro
// utilizada para ler os dados do teclado e guardar em uma variavel auxiliar.
// Foi feito algumas validações com while(1) break dentro, e do-while, sabemos que as duas
// funcionam iguais, colocamos para mostrar a funcionalidade das duas.
//****************************************************************************************//
void Le_Dados(){
int n, i=0;
do{
textcolor(WHITE); //texto da proxima linha em branco
gotoxy( 1, coordenada_y ); //coordenada para o cursor
clreol(); //limpa somente a linha, utilizada para o caso do usuario digitar algo invalido, o clreol(); limpa o que foi digitado errado.
printf(" Nome do professor......................: ");
textcolor(LIGHTCYAN); //texto digitado na cor azul claro
fflush(stdin);
gets(aux.nome_professor); //leitura da entrada de dados
}while(strlen(aux.nome_professor)==0); //não pode estar vazio
while(1){
textcolor(WHITE);
gotoxy( 1, coordenada_y+1 );
clreol();
printf(" Informe Data da Ocorrencia [dd/mm/aaaa]: ");
textcolor(LIGHTCYAN);
fflush(stdin);
scanf(" %10[0123456789/]",aux.data_ocorrencia);
if((strlen(aux.data_ocorrencia)!=0) && (aux.data_ocorrencia[2]== '/') && (aux.data_ocorrencia[5]== '/'))
break;
}
while(1){
textcolor(WHITE);
gotoxy( 1, coordenada_y+2 );
clreol();
printf(" Informe o Laboratorio [LAB1 ou LAB2]...: ");
textcolor(LIGHTCYAN);
fflush(stdin);
gets(aux.laboratorio);
for(i=0; i
aux.laboratorio[i] = toupper(aux.laboratorio[i]);
}
if((aux.laboratorio[0]=='L') && (aux.laboratorio[1]=='A') && (aux.laboratorio[2]=='B') && (aux.laboratorio[3]=='1' || aux.laboratorio[3]=='2') && (strlen(aux.laboratorio)==4))
break;
}
while(1){
textcolor(WHITE);
gotoxy( 1, coordenada_y+3 );
clreol();
printf(" Informe ID do Computador [ex.: F1-M1]..: ");
textcolor(LIGHTCYAN);
fflush(stdin);
gets(aux.id_micro);
for(i=0; i
aux.id_micro[i] = toupper(aux.id_micro[i]);
}
if((aux.id_micro[0]=='F') && (aux.id_micro[1]>'0') && (aux.id_micro[1]<'6') && (aux.id_micro[2]=='-') && (aux.id_micro[3]=='M') && (aux.id_micro[4]>'0') && (aux.id_micro[4]<'6') && (strlen(aux.id_micro)==5))
break;
}
//SEM VALIDAÇÃO, POIS A VERIFICAÇÃO TÉCNICA PODE AINDA NÃO TER SIDO FEITA, ENTÃO ACEITA-SE CAMPO VAZIO
textcolor(WHITE);
gotoxy( 1, coordenada_y+4 );
clreol();
printf(" Data Verificacao Tecnica...............: ");
textcolor(LIGHTCYAN);
fflush(stdin);
gets(aux.data_verificacao);
do{
textcolor(WHITE);
gotoxy( 1, coordenada_y+6 );
printf(" -------------------------------------------------------------------------------\n");
clreol();
printf(" Descreva o Problema do Micro...........: ");
textcolor(LIGHTCYAN);
fflush(stdin);
scanf(" %200[^\n]", aux.descricao_problema); //leitura de 200 caracteres ou até enter, oque acontecer 1º
}while(strlen(aux.descricao_problema)==0);
//COM VALIDAÇÃO, POIS AQUI TEM QUE SER DIGITADO ALGO, NEM QUE SEJA "AGUARDANDO TÉCNICO"
do{
textcolor(WHITE);
gotoxy( 1, coordenada_y+11 );
printf(" -------------------------------------------------------------------------------\n");
clreol();
printf(" Comentario Tecnico.....................: ");
textcolor(LIGHTCYAN);
fflush(stdin);
scanf(" %200[^\n]", aux.comentario_tecnico); //leitura de 200 caracteres ou até enter, oque acontecer 1º
}while(strlen(aux.descricao_problema)==0);
aux.num_chamado = numeracao_chamada;
system("cls");
}
//****************************** INCLUI_INICIO **********************************************//
// Rotina para incluir registro no inicio da lista de registros.
// É utilizada sempre que usuario quiser colocar um registro no topo da lista de registros
// só registra se tiver espaço na lista
//****************************************************************************************//
void Inclui_Inicio(){
int i;
coordenada_y = 6; //incrementa coordenada gotoxy() para a entrada de dados desta função, quando chamar Le_Dados()
if( fim_lista >= REG_MAX ){ //se lista estiver cheia, imprimi --> puts( "\n\n\n Lista de registros cheia!\n\n" );
textcolor(LIGHTRED);
puts( "\n\n\n Lista de registros cheia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{ //senão,
for( i=fim_lista; i > 0; i-- ){
registro[i] = registro[i-1]; //movimenta a lista até abrir o espaço do 1º registro
}
printf("\n\n\n");
Le_Dados(); //le os dados do registro
registro[0] = aux;
fim_lista++; //incrementa fim da lista
numeracao_chamada++; //incrementa numeração de chamados
}
}
//****************************** INCLUI_FIM **********************************************//
// Rotina para incluir registro no fim da lista de registros.
// É utilizada sempre que usuario quiser colocar um registro no fim da lista de registros
// só registra se tiver espaço na lista
//****************************************************************************************//
void Inclui_Fim(){
coordenada_y = 6;
if ( fim_lista >= REG_MAX ){
textcolor(LIGHTRED);
puts("\n\n\n Lista de registros cheia!\n\n");
textcolor(WHITE);
system("pause");
}
else{
printf("\n\n\n");
Le_Dados();
registro[fim_lista] = aux;
fim_lista++;
numeracao_chamada++;
}
}
//****************************** INCLUI_REGISTROS **********************************************//
// Rotina para incluir registro antes e depois de um registro de referencia.
// É utilizada sempre que usuario quiser colocar um registro antes ou depois de um registro especifico
// só registra se tiver espaço na lista
//****************************************************************************************//
void Inclui_Registro(){
int i, chamada_referencia, pf=0;
char opcao;
if( fim_lista == 0 ){
textcolor(LIGHTRED);
printf( "\n\n\n Lista de registros vazia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
if( fim_lista >= REG_MAX ){
textcolor(LIGHTRED);
puts( "\n\n\n Lista de registros cheia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
do{ //MENU PARA SABER SE USUARIO DESEJA REGISTRAR ANTES OU DEPOIS DE UM REGISTRO
system("cls");
printf("\n\n *** Inclui Registro antes ou depois de um Registro de referencia *** ");
printf("\n\n\n 1 - Incluir Antes de Registro de Referencia");
printf("\n 2 - Incluir Depois de Registro de Referencia");
printf("\n\n Informe a opcao desejada: ");
fflush(stdin);
opcao=getche();
if(opcao != '1' && opcao != '2'){
textcolor(LIGHTRED);
printf("\n\n Opcao invalida, somente 1 ou 2!");
textcolor(WHITE);
getch();
}
}while(opcao != '1' && opcao != '2');
printf("\n\n\n Numero da chamada, do registro de referencia: " );
fflush( stdin ); // limpa buffer do teclado, funciona junto com entrada de dados
textcolor(LIGHTGREEN);
scanf( "%d", &chamada_referencia );
textcolor(WHITE);
pf = procura_nodo( chamada_referencia ); // procura chamada de referencia
if (( pf >= 0 ) && ( pf < fim_lista )){
printf("\n\n\n");
coordenada_y = 16;
Le_Dados(); // le dados
if (opcao == '1'){
for( i=fim_lista-1; i >= pf; i-- ){ // desloca a lista até abrir um espaco antes do REGISTRO de referencia
registro[i+1]= registro[i];
} // fim for
registro[pf] = aux; // insere na lista
fim_lista++; //incrementa o tamanho da lista
numeracao_chamada++; //incrementa numero dos chamados
}
else{
for( i=fim_lista-1; i > pf; i-- ){ // desloca da lista até abrir espaco depois do REGISTRO de referencia
registro[i+1]= registro[i];
} // fim for
registro[pf+1] = aux; // insere na lista
fim_lista++; //incrementa o tamanho da lista
numeracao_chamada++; //incrementa numero dos chamados
} // fim else
}
else{
textcolor(LIGHTRED);
printf( "\n\n\n Numero de Chamada nao existe! \n\n" ); //senão encontrar o registro de referencia
textcolor(WHITE);
system("pause");
}
}
}
}
//****************************** IMPRIMIR_TODOS_REGISTROS **********************************************//
// Rotina para imprimir todos registros
// É utilizada sempre que usuario quiser imprimir os reistros atuais de ocorrência
// só imprimi se tiver no minimo 1 registro
//****************************************************************************************//
void Imprimir_Todos_Registros(){
int i;
if( fim_lista == 0 ){
textcolor(LIGHTRED);
printf( "\n\n\n Lista de registros vazia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
for (i=0; i < fim_lista; i++){
printf("\n\n\n Numero da Chamada = %03d", registro[i].num_chamado);
printf("\n\n Nome do professor.............: %s", registro[i].nome_professor);
printf("\n Data da Ocorrencia............: %s", registro[i].data_ocorrencia);
printf("\n Laboratorio da Ocorrencia.....: %s", registro[i].laboratorio);
printf("\n Identificacao do Computador...: %s", registro[i].id_micro);
printf("\n Data Verificacao Tecnica......: %s", registro[i].data_verificacao);
printf("\n -------------------------------------------------------------------------------\n");
printf("\n Descricao do Problema do Micro: %s", registro[i].descricao_problema);
printf("\n -------------------------------------------------------------------------------\n");
printf("\n Comentario Tecnico............: %s", registro[i].comentario_tecnico);
textcolor(YELLOW);
printf("\n\n\n *******************************************************************************");
printf("\n *******************************************************************************");
textcolor(WHITE);
}
printf("\n\n");
system("pause");
}
}
//****************************** CONSULTA_REGISTROS **********************************************//
// Rotina para consultar registro, consulta por numero do chamado ou identificação do micro
// É utilizada sempre que usuario quiser consultar uma ocorrência
// só consulta se tiver no minimo 1 registro
//****************************************************************************************//
void Consulta_Registro(){
int i, j, vazio, consulta_chamada, pf=0;
char opcao, lab[4], consulta_id[5];
if( fim_lista == 0 ){
textcolor(LIGHTRED);
printf( "\n\n\n Lista de registros vazia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
do{
system("cls"); //MENU PARA CONSULTAR REGISTRO
printf("\n\n *** Consultar Registro(s) *** ");
printf("\n\n\n 1 - Consultar por Numero de Chamada");
printf("\n 2 - Consultar por ID do micro");
printf("\n\n Informe a opcao desejada: ");
fflush(stdin);
opcao=getche();
if(opcao != '1' && opcao != '2'){
textcolor(LIGHTRED);
printf("\n\n Opcao invalida, somente 1 ou 2!");
textcolor(WHITE);
getch();
}
}while(opcao != '1' && opcao != '2');
printf("\n\n\n");
if(opcao == '1'){
//NUMERO DO CHAMADO DO REGISTRO A CONSULTAR
printf( " Numero do chamado, registro a ser consultado: " );
fflush( stdin ); // limpa buffer do teclado, funciona junto com entrada de dados
textcolor(LIGHTGREEN);
scanf( "%d", &consulta_chamada );
textcolor(WHITE);
pf = procura_nodo( consulta_chamada ); // procura chamado de referencia
if (( pf >= 0 ) && ( pf < fim_lista )){
printf("\n----------------------------------------------------------------------\n");
//IMPRIMI O REGISTRO CONSULTADO
printf("\n Numero da Chamada = %03d", registro[pf].num_chamado);
printf("\n\n Nome do Professor.............: %s", registro[pf].nome_professor);
printf("\n Data da Ocorrencia............: %s", registro[pf].data_ocorrencia);
printf("\n Laboratorio da Ocorrencia.....: %s", registro[pf].laboratorio);
printf("\n Identificacao do Computador...: %s", registro[pf].id_micro);
printf("\n Data Verificacao Tecnica......: %s", registro[pf].data_verificacao);
printf("\n -------------------------------------------------------------------------------\n");
printf("\n Descricao do Problema do Micro: %s", registro[pf].descricao_problema);
printf("\n -------------------------------------------------------------------------------\n");
printf("\n Comentario Tecnico............: %s\n\n\n", registro[pf].comentario_tecnico);
system("pause");
}
else{ //se não encontrar o registro
textcolor(LIGHTRED);
printf( "\n\n\n Numero da Chamada nao existe! \n\n" );
textcolor(WHITE);
system("pause");
}
}
else{
while(1){ //LABORATORIO DO REGISTRO A CONSULTAR
printf( " Laboratorio que deseja consultar [LAB1 ou LAB2]: ");
textcolor(LIGHTGREEN);
fflush(stdin);
gets(lab);
textcolor(WHITE);
for(i=0; i
lab[i] = toupper(lab[i]);
}
if((lab[0]=='L') && (lab[1]=='A') && (lab[2]=='B') && (lab[3]=='1' || lab[3]=='2') && (strlen(lab)==4))
break;
}
printf("\n");
while(1){ //ID DO MICRO DO REGISTRO A CONSULTAR
printf( " ID do micro, do registro a ser consultado [ex.: F1-M1]: ");
textcolor(LIGHTGREEN);
fflush(stdin);
gets(consulta_id);
textcolor(WHITE);
for(i=0; i
consulta_id[i] = toupper(consulta_id[i]);
}
if((consulta_id[0]=='F') && (consulta_id[1]>'0') && (consulta_id[1]<'6') && (consulta_id[2]=='-') && (consulta_id[3]=='M') && (consulta_id[4]>'0') && (consulta_id[4]<'6'))
break;
}
j=0;
vazio=0; //VERIFICAÇÃO SE REGISTRO A SER CONSULTADO EXISTE DENTRO DO LAB A SER CONSULTADO
while(j < fim_lista){
if( strcmp(lab, registro[j].laboratorio)==0){
if( strcmp(consulta_id, registro[j].id_micro)==0){
printf("\n----------------------------------------------------------------------\n");
printf("\n Numero do Chamado = %03d", registro[j].num_chamado);
printf("\n\n Nome do Professor.............: %s", registro[j].nome_professor);
printf("\n Data da Ocorrencia............: %s", registro[j].data_ocorrencia);
printf("\n Laboratorio da Ocorrencia.....: %s", registro[j].laboratorio);
printf("\n Identificacao do Computador...: %s", registro[j].id_micro);
printf("\n Data Verificacao Tecnica......: %s", registro[j].data_verificacao);
printf("\n -------------------------------------------------------------------------------\n");
printf("\n Descricao do Problema do Micro: %s", registro[j].descricao_problema);
printf("\n -------------------------------------------------------------------------------\n");
printf("\n Comentario Tecnico............: %s\n\n\n", registro[j].comentario_tecnico);
vazio=1;
}
}
j++;
}
if (vazio == 0){
textcolor(LIGHTRED); //SENÃO HOUVER O REGISTRO NO LAB PESQUISADO
printf( "\n\n\n Sem registros para o ID %s no laboratorio %s \n\n", consulta_id, lab);
textcolor(WHITE);
}
system("pause");
}
}
}
//****************************** ORDENAR_REGISTROS **********************************************//
// Rotina para ordenar registros,
// É utilizada sempre que usuario quiser ordenar os registros, ordena por numero do chamado
// só ordena se tiver no minimo 2 registros
//****************************************************************************************//
void Ordenar_Registros(){
int i, j;
ROL auxiliar;
char imprimi_registros;
if( fim_lista == 1 ){
textcolor(LIGHTRED);
printf( "\n\n\n Impossivel ordenar, somente 1 registro!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
if( fim_lista == 0 ){
textcolor(LIGHTRED);
printf( "\n\n\n Lista de registros vazia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{ //ordena a lista
for( i=0; i
for( j=i+1; j
if( registro[i].num_chamado > registro[j].num_chamado){
auxiliar = registro[i];
registro[i] = registro[j];
registro[j] = auxiliar;
}
}
}
textcolor(YELLOW);
textbackground(BLUE);
printf("\n\n\n Ordenado com sucesso!");
textcolor(WHITE);
textbackground(BLACK);
do{ //verificação se usuario apos ordenar, deseja imprimir ordenado
printf("\n\n Deseja imprimir Registros Ordenados? [ S / N ]: ");
imprimi_registros = getche();
}while((toupper(imprimi_registros)!= 'S') && (toupper(imprimi_registros)!= 'N'));
if ( imprimi_registros == 'S' || imprimi_registros == 's' ){
textcolor(YELLOW);
printf("\n\n\n------------------------Registros Atuais Ordenados----------------------------");
textcolor(WHITE);
Imprimir_Todos_Registros();
}
}
}
}
//****************************** ALTERAR_REGISTRO **********************************************//
// Rotina para alterar registro,
// É utilizada sempre que usuario quiser alterar um registro
// só altera se tiver no minimo 1 registro
//****************************************************************************************//
void Alterar_Registro(){
int altera_registro, j, achou_registro=0;
if( fim_lista == 0 ){
textcolor(LIGHTRED);
printf( "\n\n\n Lista de registros vazia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
printf("\n\n\n Informe o Numero da Chamada do registro a ser alterado: ");
textcolor(LIGHTGREEN);
scanf("%d",&altera_registro);
textcolor(WHITE);
for (j=0; j < fim_lista; j++){
//procura o registro a ser alterado, na lista de registros
if (altera_registro == registro[j].num_chamado){
printf("\n\n Nome do professor.............: %s", registro[j].nome_professor);
printf("\n Data da Ocorrencia............: %s", registro[j].data_ocorrencia);
printf("\n Laboratorio da Ocorrencia.....: %s", registro[j].laboratorio);
printf("\n Identificacao do Computador...: %s", registro[j].id_micro);
printf("\n Data Verificacao Tecnica......: %s", registro[j].data_verificacao);
printf("\n Descricao do Problema do Micro: %s", registro[j].descricao_problema);
printf("\n Comentario Tecnico............: %s\n\n\n\n", registro[j].comentario_tecnico);
coordenada_y = 20;
Le_Dados();
aux.num_chamado = altera_registro;
registro[j] = aux;
break; // com break o laço é finalizado nao testando os outros registros após já ter encontrado
}
}
if (achou_registro == 0){
system("cls");
textcolor(LIGHTRED);
printf("\n\n\n Numero de Chamada nao encontrado!\n\n");
textcolor(WHITE);
system("pause");
}
}
}
//****************************** PROCURA_POSIÇÃO_FISICA **********************************************//
// Rotina para procurar a posição de um registro,
//******************************************************************************************************//
int procura_nodo( int chamada ){
int i, pf=-1; // i= indice; pf= posicao fisica
for( i=0; i < fim_lista; i++ ){ // anda pela lista até o final ou até encontrar registro desejado
if( chamada == registro[i].num_chamado){
pf = i; // guarda posicao fisica
break;
}
}
return( pf ); // posicao fisica do registro de referencia
}
//****************************** EXCLUIR_REGISTRO **********************************************//
// Rotina para excluir registro(s),
// É utilizada sempre que usuario quiser excluir um ou todos registros
// só exclui se tiver no minimo 1 registro
//****************************************************************************************//
void Excluir_Registro(){
int i, exclui_num_chamado, pf=0;
char opcao, excluir_todos;
if( fim_lista == 0 ){
textcolor(LIGHTRED);
printf( "\n\n\n Lista de registros vazia!\n\n" );
textcolor(WHITE);
system("pause");
}
else{
do{ //MENU PARA EXCLUIR REGISTRO
system("cls");
printf("\n\n *** Excluir Registro(s) *** ");
printf("\n\n\n 1 - Excluir UM unico registro");
printf("\n 2 - Excluir TODOS registros");
printf("\n\n Informe a opcao desejada: ");
fflush(stdin);
opcao=getche();
if(opcao != '1' && opcao != '2'){
textcolor(LIGHTRED);
printf("\n\n Opcao invalida, somente 1 ou 2!");
textcolor(WHITE);
getch();
}
}while(opcao != '1' && opcao != '2');
if ( opcao == '1'){
//se for um registro a excluir, digitar o numero do chamado
printf( "\n\n\n Numero do Chamado, do registro a excluir: " );
textcolor(LIGHTGREEN);
fflush( stdin ); // limpa buffer do teclado, funciona junto com entrada de dados
scanf( "%d", &exclui_num_chamado );
textcolor(WHITE);
pf= procura_nodo( exclui_num_chamado ); // procura posição fisica do registro a excluir
if (( pf >= 0 ) && ( pf < fim_lista )){
for( i=pf; i
registro[i] = registro[i+1];
} // fim for
fim_lista--; // decrementa o tamanho da lista
textcolor(YELLOW);
textbackground(BLUE);
printf("\n\n\n Excluido com sucesso!\n\n");
textcolor(WHITE);
textbackground(BLACK);
system("pause");
} // fim if
else{
textcolor(LIGHTRED);
printf( "\n\n\n Numero de Chamada nao existe!\n\n" );
textcolor(WHITE);
system("pause");
}
}
else{
do{ //se deseja excluir todos registros, tem averificação se não é engano
textcolor(LIGHTRED);
printf("\n\n\n\a Atencao!!! Deseja mesmo excluir todos registros? [ S / N ]: ");
textcolor(WHITE);
excluir_todos = getche();
}while((toupper(excluir_todos)!= 'S') && (toupper(excluir_todos)!= 'N'));
if ( excluir_todos == 'S' || excluir_todos == 's' ){
fim_lista = 0;
//numeracao_chamada = 1; //SE QUISER QUE OS NUMEROS DE CHAMADA DOS REGISTROS INICIEM APARTIR DO 1 NOVAMENTE É SÓ DESCOMENTAR ESTA LINHA
textcolor(YELLOW);
textbackground(BLUE);
printf("\n\n\n Registros excluidos com sucesso!\n\n");
textcolor(WHITE);
textbackground(BLACK);
system("pause");
}
}
}
}
//******************** ROTINA UTILIZADA ****************************************************//
/*void Reorganiza_numero_chamada(){
int i, j;
ROL auxiliar;
for( i=0; i
for( j=i+1; j
if( registro[i].num_chamado > registro[j].num_chamado){
auxiliar = registro[i];
registro[i] = registro[j];
registro[j] = auxiliar;
}
}
}
for ( i=0; i
registro[i].num_chamada = i+1;
}
numeracao_chamada = fim_lista + 1;
} */
[/php]
ldm2005
Novo Membro
Registrado
70 Mensagens
0 Curtidas