I've Just finished a program and it's taking various errors. Can you show me Where its wrong?
/********************************************************************
* Autor: Antônio Airton Cabral Neto *
* Compilador: BC 3.1 Borland *
* Ambiente: Tela de scroll do DOS *
* Modelo de memoria: Small *
* Data: 12/09 e 14/09 de 2011 *
* Objetivo: Programa de Lista Duplamente Encadeada com ponteiros *
* dinâmicos, com conteúdo de endereço e nodos dinâmicos. *
********************************************************************/
// ----- Inclui as bibliotecas necessarias
#include <iostream> // cout, cin, endl
#include <stdio.h> // printf e scanf
#include <conio.h> // clrscr() e getch()
#include <dos.h> // sound(), nosound() e delay()
#include <process.h> // exit()
#include "C:\bc-dos\mylib.h"
// --------------- Declaracao de variaveis globais
#define esc 27
#define max 5
using namespace std;
/********************************************************************
* --- Convencoes para funcionamento desta lista encadeada --- *
*********************************************************************
* - Nodos contém um elemento inteiro em sua área de dados e dois. *
* ponteiros de manipulação (prox e ant). *
* - Lista vazia - prim=NULL; , ult=NULL; e livre=NULL *
* - Lista inesgotável para insercao de novos elementos. *
* - Inserção no final da lista. *
* - Remoção com base em pesquisa de elemento. *
* - Lista não Ordenada. *
*********************************************************************/
typedef struct nodo {
//--------------- Área de Dados: ---------------- //
int data;
//-------------- Área de Ponteiros -------------- //
struct nodo* ant; // --- Ponteiro para nodo anterior.
struct nodo* prox; // --- Ponteiro para próximo nodo.
}nodo;
void create_list() {
nodo* prim = new nodo;
prim->ant=NULL;
prim->prox=NULL;
nodo* ult = prim;
nodo* livre = prim->prox;
} // create_list();
void insert_nodo() {
int n; // --- Variável para armazenar valor para ser atribuído
char ch;
moldura();
gotoxy(30,3); cout << "Inclui elemento";
gotoxy(3,7); cout << "Digite um elemento (n. inteiro) : ";
cin >> n; // --- Recebe valor para ser armazenado
livre = new nodo; // ----- Cria novo nodo na Lista
livre->data=n; // ----- Atribui valor recebido ao novo nodo
livre->ant=ult; // ----- Ajusta os Ponteiros para o elemento anterior
livre->prox=NULL; // ----- Ajusta os Ponteiros para o próximo elemento
ult=livre; // ----- Ajusta ult para o fim da lista
livre=livre->prox; // ----- Ajusta livre para a próxima área livre
gotoxy(3,8); cout << "Elemento inserido na Lista";
gotoxy(3,(alt-1)); cout << "Tecle <enter> p/ continuar";
ch=getch();
while (ch!=13) // ----- Espera especificamente um enter p/ continuar
ch=getch();
} // insert_nodo();
nodo search_nodo (int n) { // ----- Função procura nodo com valor n e retorna
nodo* p = prim; // endereço do nodo.
nodo* p2;
do {
if(p->data==n) {
p2=p;
return p2;
}
else {
if (p->prox!=NULL)
p=p->prox;
else {
p2=NULL;
return p2;
}
}
} while (p->data!=n);
} // search_nodo();
void delete_nodo() {
int n; // --- Variável para armazenar valor para ser removido
nodo* p; // --- Ponteiro para armazenat nodo á ser removido
char ch;
moldura();
gotoxy(30,3); cout << "Remove elemento";
gotoxy(3,7); cout << "Digite um elemento (n. inteiro) : ";
cin >> n; // --- Recebe valor para ser excluído
p = search_nodo(n);
if (p!=NULL) {
p->ant->prox=p->prox;
p->prox->ant=p->ant;
delete p;
gotoxy(3,8); cout << "Elemento removido da Lista";
gotoxy(3,(alt-1)); cout << "Tecle <enter> p/ continuar";
ch=getch();
while (ch!=13) // ----- Espera especificamente um enter p/ continuar
ch=getch();
}
else {
gotoxy(3,8); cout << "Elemento não Encontrado! ";
apito();
gotoxy(3,(alt-1)); cout << "Tecle <enter> p/ continuar";
ch=getch();
while (ch!=13) // ----- Espera especificamente um enter p/ continuar
ch=getch();
}
} // delete_nodo();
void show_list() {
moldura();
nodo *p = prim;
char ch;
if (prim->prox!=NULL) {
gotoxy(30,3); cout << "Mostra lista";
gotoxy(3,8); cout << "Prim&..............: " << prim;
gotoxy(3,9); cout << "Livre&.............: " << livre;
gotoxy(3,10); cout << "Ult&...............: " << ult;
gotoxy(3,11); cout << "Último Inserido....: " << ult->data;
gotoxy(3,12); cout << "Primeiro Inserido..: " << prim->prox->data;
gotoxy(3,(alt-1));
cout << "Pressione qualquer tecla para rolar a lista";
getch();
while (p->prox!=NULL) {
gotoxy(3,13); cout << "Nodo&..............: " << p;
gotoxy(3,14); cout << "Conteúdo...........: " << p->data;
getch();
if (p->prox!=NULL)
p=p->prox;
else
gotoxy(3,(alt-1));
cout << "Fim da Lista! Tecle <enter> para continuar.";
getch();
} // while (p->prox!=NULL);
} // if (prim->prox!=NULL);
else {
gotoxy(30,3); cout << "Mostra lista";
gotoxy(3,8); cout << "Prim&..............: " << prim;
gotoxy(3,9); cout << "Livre&.............: " << livre;
gotoxy(3,10); cout << "Ult&...............: " << ult;
gotoxy(3,(alt-1));
cout << "Lista Vazia! Tecle <enter> para continuar.";
ch = getch();
while (ch!=13) // ----- Espera especificamente um enter p/ continuar
ch=getch();
}
}
void delete_list() {
nodo* point = ult;
while (point!=NULL) {
nodo* p;
p=point;
point=p->ant;
ult=point->ant;
delete p;
}
// --------------- Programa Principal:
int main() {
prim = new struct nodo;
livre=prim->prox;
ult=prim;
create_list();
int op=0;
while (op!=5) {
op=menu();
switch (op) {
case 1: insert_nodo(); break;
case 2: exclui_nodo(); break;
case 3: show_list(); break;
case 4: create_list(); break;
case 5: delete_list();
exit(0);
default : cout << "Opção Inválida! ";
exit(1);
}
}
getch();
return 0;
} // void main()
}
-----------------------------------------------------------------------------------------
MYLIB.H
/********************************************************************
* Autor: Antônio Airton Cabral Neto *
* Compilador: BC 3.1 Borland *
* Ambiente: Tela de scroll do DOS *
* Modelo de memoria: Small *
* Data: 12/09 e 14/09 de 2011 *
* Objetivo: Programa de Lista Duplamente Encadeada com ponteiros *
* dinâmicos, com conteúdo de endereço e nodos dinâmicos. *
********************************************************************/
// ----- Inclui as bibliotecas necessarias
#include <iostream.h> // cout, cin, endl
#include <stdio.h> // printf e scanf
#include <conio.h> // clrscr() e getch()
#include <dos.h> // sound(), nosound() e delay()
#include <process.h> // exit(
// --------------- Declaracao de variaveis globais
#define esc 27
const int larg=80, alt=24;
char tecla(void) {
char ch1, ch2;
unsigned char by; // um inteiro de 8 bits que por default e' visto como char
ch1=getch();
by=(int)ch1; // by contem o codigo da tecla "traduzido" para inteiro sem sinal de 8 bits
if (by==0) {
ch2=getch();
by=(int)ch2;
switch (by) {
// ----- Seta para cima
case 72 : by=128;
break;
// ----- Seta para baixo
case 80 : by=129;
break;
// ----- Seta para direita
case 77 : by=130;
break;
// ----- Seta para esquerda
case 75 : by=131;
break;
// ----- DEL
case 83 : by=127;
break;
// ----- Insert
case 82 : by=135;
break;
// ----- Home
case 71 : by=136;
break;
// ----- End
case 79 : by=137;
break;
// ----- Page Up
case 73 : by=138;
break;
// ----- Page Down
case 81 : by=139;
break;
// ----- F1
case 59 : by=140;
break;
// ----- F2
case 60 : by=141;
break;
// ----- F3
case 61 : by=142;
break;
// ----- F4
case 62 : by=143;
break;
// ----- F5
case 63 : by=144;
break;
// ----- F6
case 64 : by=145;
break;
// ----- F7
case 65 : by=146;
break;
// ----- F8
case 66 : by=147;
break;
// ----- F9
case 67 : by=148;
break;
// ----- F10
case 68 : by=149;
break;
// ----- F11
case 133 : by=150;
break;
// ----- F12
case 134 : by=151;
break;
} // ----- switch (by)
ch1=by;
} // ----- if (by==0)
return ch1;
} // ----- char tecla(void)
// --------------- Funcao apita um som de 275 Hz durante 0,35 seg.
void apito(void) {
sound(275);
delay(350);
nosound();
cout << " - Tecle <enter> p/ continuar";
getch();
}
// --------------- Funcao monta moldura na tela.
void moldura(void) {
int i;
char Cima[81], Baixo[81], Meio[81], Comum[81];
const char CimaEsq=201;
const char CimaDir=187;
const char BaixoEsq=200;
const char BaixoDir=188;
const char Vert=186;
const char Horiz=205;
const char TDir=185;
const char TEsq=204;
// --------------- Monta linha de Cima da Moldura
Cima[0]=CimaEsq;
for (i=1; i<=(larg-2); i++)
Cima[i]=Horiz;
Cima[(larg-1)]=CimaDir;
Cima[larg]='\0';
// --------------- Monta linha Comum da Moldura
Comum[0]=Vert;
for (i=1; i<=(larg-2); i++)
Comum[i]=' ';
Comum[(larg-1)]=Vert;
Comum[larg]='\0';
// --------------- Monta divisoria com caixa de status da Moldura
Meio[0]=TEsq;
for (i=1; i<=(larg-2); i++)
Meio[i]=Horiz;
Meio[(larg-1)]=TDir;
Meio[larg]='\0';
// --------------- Monta de baixo da Moldura
Baixo[0]=BaixoEsq;
for (i=1; i<=(larg-2); i++)
Baixo[i]=Horiz;
Baixo[(larg-1)]=BaixoDir;
Baixo[larg]='\0';
// --------------- Escreve Moldura na Tela
clrscr();
cout << Cima;
cout << Comum;
cout << Comum; // ----- Nesta linha deve-se colocar o Titulo
cout << Comum;
cout << Meio; // ----- Divisao do Titulo
for (i=1; i<=(alt-8); i++)
cout << Comum;// << endl;
cout << Meio; // ----- Divisao da linha de Status
cout << Comum;
cout << Baixo;
}
// --------------- Funcao mostra menu na tela
int menu(void) {
int resp=0;
while ((resp<1) || (resp>5)) {
moldura();
gotoxy(14,3); cout << "Lista simplesmente Encadeada sobre vetor estatico";
gotoxy(28,7); cout << "1 - Incluir elemento";
gotoxy(28,8); cout << "2 - Excluir elemento";
gotoxy(28,9); cout << "3 - Mostrar toda a Lista";
gotoxy(28,10); cout << "4 - Limpar a Lista";
gotoxy(28,11); cout << "5 - Sair";
gotoxy(28,13); cout << "Opcao: ";
cin >> resp;
if ((resp<1) || (resp>5)) {
gotoxy(3, (alt-1)); cout << "Opcao Invalida";
apito();
} // ----- if ((resp<1) || (resp>5))
} // ----- while ((resp<1) || (resp>5))
return resp;
} // ----- menu()
Thankyou a lot