Quero fazer uma procedure para salvar em disco(arquivo.txt) os itens ordenados da minha lista. Há possibilidade de salvar em forma de uma tabela? Também gostaria de saber como acessar um determinado item da lista e como imprimir na tela e como mandar os itens para a impressora?
Obrigado.
Segue abaixo meu código:
//Lista Encadeada ordenada
//Maurício Bainy Curi
//Sistemas de Informação - Escola Técnica da Ufrgs
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
//Cronstrucao de estrutura de nome ListaEncadeadaOrdenada
/* struct é um grupo de variaveis dentro de um unico registro */
struct ListaEncadeadaOrdenada
{
char nome[50];
struct ListaEncadeadaOrdenada *elo; //declaracao de ponteiro do tipo
estrutura
};
typedef ListaEncadeadaOrdenada defLista; /* definicao de um novo tipo.
typedef é a palavra-chave, ListaEncadeadaOrdenada é o tipo estrutura e
defLista é o identificador. */
/* Prototipo de funcoes */
int insere(char stringnome[50]);
void imprime();
int exclui(char stringnome[50]);
/* Declaracao de ponteiros(global) */
defLista *Lista;
defLista *Primeiro;
void main(void)
{
/* Declaracao de variaveis */
char opcao;
int resultado;
int contador=0;
char string[50];
while (opcao!=5)
{
clrscr();
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf(" ------------------------------------------------------\n");
printf("\t L I S T A E N C A D E A D A O R D E N A D A\n");
printf(" ------------------------------------------------------\n");
printf("\n");
printf("\n");
printf("\t ESCOLHA UMA DENTRE AS OPCOES ABAIXO:\n");
printf("\n");
printf("\n");
printf("\t\t\t 1 - INSERIR;\n");
printf("\n");
printf("\t\t\t 2 - LISTA;\n");
printf("\n");
printf("\t\t\t 3 - EXCLUSAO;\n");
printf("\n");
printf("\t\t\t 4 - TAMANHO DA LISTA.\n");
printf("\n");
printf("\t\t\t 5 - SAIR.\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t\t\t OPCAO: ");
scanf("%d",&opcao);
fflush(stdin);
switch(opcao)
{
case 1 :clrscr();
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t ********************************************\n");
printf(" *
*\n");
printf("\t\t * 1 - INSERCAO *\n");
printf(" *
*\n");
printf("\t\t ********************************************\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("NOME:");
gets(string);
resultado=insere(string);
if (resultado==TRUE)
{
printf("\n");
printf("\n");
printf("\n");
printf("%s INSERIDO COM SUCESSO !",string);
contador++;
}
printf("\n");
printf("\n");
printf("\n");
printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");
getch();
break;
case 2 :clrscr();
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t **************************\n");
printf(" * *\n");
printf("\t\t * 2 - LISTA *\n");
printf(" * *\n");
printf("\t\t **************************\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
imprime();
printf("\n");
printf("\n");
printf("\n");
printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");
getch();
break;
case 3 : clrscr();
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t **********************************\n");
printf(" * *\n");
printf("\t\t * 2 - EXCLUSAO *\n");
printf(" * *\n");
printf("\t\t **********************************\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t ENTRE COM O NOME A SER EXCLUIDO: ");
gets(string);
resultado = exclui(string);
if(resultado == TRUE)
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t\t %s EXCLUIDO COM SUCESSO\n",string);
contador--;
}
else
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t ERRO DE EXCLUSAO!\n");
}
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");
getch();
break;
case 4 : clrscr();
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t **********************************\n");
printf(" * *\n");
printf("\t\t * 4 - TAMANHO DA LISTA *\n");
printf(" * *\n");
printf("\t\t **********************************\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t Tamanho:%d elemento(s)",contador);
printf("\n");
printf("\n");
printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");
getch();
break;
case 5 :exit(1);
}
}
}
int insere(char stringnome[50])
{//1
/* Declaracao de ponteiros */
/* Aux e PercorreLista apontam para NULL*/
defLista *Aux;
defLista *PercorreLista;
/* Alocacao de memoria para armazenar os registros */
Aux=(defLista *)malloc(sizeof(defLista)); // Armazena endereco p/ estrutura
if (Aux==NULL)
{//2
return(0);
}//2
else
{//3
strcpy(Aux->nome,stringnome);
Aux->elo = NULL;
if( Lista!=NULL)
{//4
if (Primeiro!=NULL)
{//5
Aux->elo = Primeiro;
Lista=Aux;
PercorreLista=Primeiro;
if (stricmp(Lista->nome, Primeiro->nome) > 0)
{//6
Aux=Primeiro;
PercorreLista = Primeiro->elo;
while ((PercorreLista!=NULL) &&
(((stricmp(Lista->nome,PercorreLista->nome)) > 0)))
{
Aux=PercorreLista;
PercorreLista = PercorreLista->elo;
}
Lista->elo = PercorreLista;
Aux->elo = Lista;
}//6
else
{
Primeiro=Lista;
}
}//5
else
{
if (stricmp(Aux->nome, Lista->nome) > 0)
{
Lista->elo = Aux;
Primeiro=Lista;
Lista=Aux;
}
if (stricmp(Aux->nome, Lista->nome) < 0)
{
Aux->elo = Lista;
Lista=Aux;
Primeiro=Lista;
}
}
}//4
else
{
Lista=Aux;
}
}//3
return(1);
}//1
void imprime()
{//1
defLista *Aux;
if (Lista == NULL)
{
gotoxy(10,20);
printf("Erro. Lista Vazia");
}
else
{//13
if (Primeiro == NULL)
{
Aux=Lista;
printf("%s\n",Aux->nome);
}
else
{
Lista=Primeiro;
Aux=Lista;
while (Aux!=NULL)
{
printf("%s\n",Aux->nome);
Aux = Aux->elo;
}
}
}
}//1
int exclui(char stringnome[50])
{//1
defLista *Aux;
defLista *Espelho;
int comparaChar;
if(Lista == NULL)
{//2
return(0);
}//2
else
{//3
if (Primeiro == NULL)
{
Aux=Lista;
comparaChar=stricmp(Aux->nome,stringnome);
if (comparaChar == 0)
{
free(Aux);
Lista=NULL;
return(1);
}
else
{
return(0);
}
}
else
{//12
Lista=Primeiro;
Aux=Lista;
while(Aux!=NULL)
{//16
comparaChar=stricmp(Aux->nome,stringnome);
if (comparaChar == 0)
{//4
if (Aux == Primeiro)
{
if (Aux->elo == NULL)
{
free(Aux);
Lista=NULL;
return(1);
}
else
{
Primeiro = Aux->elo;
free(Aux);
return(1);
}
}
else
{//8
Espelho->elo = Aux->elo;
free(Aux);
return(1);
}//8
}//4
else
{//5
Espelho=Aux;
Aux = Aux->elo;
}//5
}//16
return(0);
}//12
return(1);
}//3
}//1
Pergunta
Guest --MauricioCuri --
Quero fazer uma procedure para salvar em disco(arquivo.txt) os itens ordenados da minha lista. Há possibilidade de salvar em forma de uma tabela? Também gostaria de saber como acessar um determinado item da lista e como imprimir na tela e como mandar os itens para a impressora?
Obrigado.
Segue abaixo meu código:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.