me urge un programa de c++ con altas, bajas,modificaciones y consultas

paola
16 de Enero del 2006
por favor si alguien me puede ayudar enviandome un programa de turbo c++ con altas,bajas modificaciones y consultas en especial de una video .
mi correo es [email protected]

Noel Solw
16 de Enero del 2006
Te envio un programa similar a lo que pides.
Espero que te sirva de ayuda.

// program eloy153.cpp
// naviera (lista de listas).
// 13/10/2004
// written in borland c++ - ver 4.5
//---------------------------------------------------------------------------
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

const int N = 3,
LEN = 20;
char *E = "empty";
char *msg[2] = {"original","actualizada"};
float coste,total;
//---------------------------------------------------------------------------
struct Cargas
{
char material[LEN+1];
unsigned int cantidad;
float precio;
Cargas *next;
Cargas(char*,unsigned int,float);
};// STRUCT CARGAS

Cargas::Cargas(char *MATERIAL = E,unsigned int CANTIDAD = 0,float PRECIO = 0) :
cantidad(CANTIDAD),precio(PRECIO),next(NULL)
{
strncpy(material,MATERIAL,LEN);
material[LEN] = 0;
} // CARGAS CONSTRUCTOR

ostream &operator<<(ostream &out,const Cargas &c)
{
out << setw(20) << c.material << " - " << c.cantidad << " - "
<< c.precio << endl;
coste += c.cantidad*c.precio;
return out;
} // CARGAS OPERATOR OUT
//---------------------------------------------------------------------------
struct Barcos
{
unsigned int registro;
char nombre[LEN+1];
Barcos *next;
Cargas *begin,*end;
Barcos(unsigned int,char*);
~Barcos();
void AddCargaNode(char*,unsigned int,float);
void PrintCargas() const;
};// STRUCT BARCOS

Barcos::Barcos(unsigned int REGISTRO = 0,char *NOMBRE = E) :
registro(REGISTRO),next(NULL)
{
strncpy(nombre,NOMBRE,LEN);
nombre[LEN] = 0;
begin = end = new Cargas();
} // BARCOS CONSTRUCTOR

Barcos::~Barcos()
{
Cargas *p = begin,*holder;
while(p)
{
holder = p->next;
delete p;
p = holder;
}
} // BARCOS DESTRUCTOR

void Barcos::AddCargaNode(char *material = E,unsigned int cantidad = 0,
float precio = 0)
{
begin->cantidad++;
Cargas *temp = new Cargas(material,cantidad,precio);
end -> next = temp;
end = temp;
} // BARCOS ADD CARGA NODE

void Barcos::PrintCargas() const
{
Cargas *p = begin->next;
for(int i = 0;i < begin->cantidad;i++,p = p->next)
cout << *p;
} // BARCOS CARGAS PRINT

ostream &operator<<(ostream &out,const Barcos &b)
{
out << setw(20) << b.registro << " - " << b.nombre << endl;
b.PrintCargas();
return out;
} // BARCOS OPERATOR OUT
//---------------------------------------------------------------------------
struct BarcosHeaderList
{
Barcos *begin,
*end;
BarcosHeaderList();
~BarcosHeaderList();
void AddNode(unsigned int,char*);
void ErraseNode(Barcos*);
Barcos *Search(unsigned int);
void Print(char*);
}; // BARCOS HEADER LIST

BarcosHeaderList::BarcosHeaderList()
{
begin = new Barcos(0);
end = begin;
} // BARCOS HEADER LIST CONSTRUCTOR

BarcosHeaderList::~BarcosHeaderList()
{
Barcos *p = begin,*holder;
while(p)
{
holder = p->next;
delete p;
p = holder;
}
} // BARCOS HEADER LIST DESTRUCTOR

void BarcosHeaderList::AddNode(unsigned int REGISTRO = 0,char *NOMBRE = E)
{
begin->registro++;
Barcos *temp = new Barcos(REGISTRO,NOMBRE);
end->next = temp;
end = temp;
} // BARCOS HEADER LIST ADD NODE

void BarcosHeaderList::ErraseNode(Barcos *anterior)
{
begin->registro--;
Barcos *holder = anterior->next->next;
delete anterior->next;
anterior->next = holder;
} // BARCOS HEADER LIST ERRASE NODE

Barcos *BarcosHeaderList::Search(unsigned int registro)
{
Barcos *p = begin;
while(p->next)
{
if(p->next->registro == registro)
return p;
p = p->next;
}
return NULL;
} // BARCOS HEADER LIST SEARCH

void BarcosHeaderList::Print(char *msg)
{
cout << "lista " << msg << " de barcos : " << endl << endl;
Barcos *p = begin->next;
total = 0;
for(int i = 0;i < begin->registro;i++,p = p->next)
{
coste = 0;
cout << *p;
cout << setw(20) << "coste" << " : " << coste << endl << endl;
total += coste;
}
cout << setw(20) << "coste total" << " : " << total << endl << endl;
} // BARCOS HEADER LIST PRINT
//---------------------------------------------------------------------------
void GetName(char *name,char *msg)
{
name[0] = 0;
while(!strlen(name))
{
cout << setw(30) << msg;
cin.getline(name,LEN);
}
} // GET NAME

float GetInt(char *msg)
{
char num[LEN+1];
GetName(num,msg);
return atoi(num);
} // GET INT

float GetFloat(char *msg)
{
char num[LEN+1];
GetName(num,msg);
return atof(num);
} // GET NUM

int Menu()
{
cout << "[1] : agregar barco." << endl;
cout << "[2] : borrar barco." << endl;
cout << "[3] : listado." << endl;
cout << "[4] : salir." << endl;
cout << " elija la accion deseada --> ";
int choice = 10;
while(choice < 1 || choice > 4)
choice = getch()-'0';
cout << choice << endl << endl;
return choice;
} // MENU

int AgregarBarco(BarcosHeaderList &lista)
{
lista.AddNode();
lista.end->registro = GetInt("registro : ");
GetName(lista.end->nombre,"nombre : ");
cout << endl;
char material[LEN+1];
int cantidad;
float precio;
GetName(material,"material (salida -> FIN) : ");
while(strcmp(material,"FIN") && strcmp(material,"fin"))
{
cantidad = GetInt("cantidad : ");
precio = GetFloat("precio : ");
lista.end->AddCargaNode(material,cantidad,precio);
cout << endl;
GetName(material,"material (salida -> FIN) : ");
}
cout << setw(20) << "---" << endl;
return 1;
} // AGREGAR BARCO

int BorrarBarco(BarcosHeaderList &lista)
{
int registro = GetInt("registro : ");
Barcos *p = lista.Search(registro);
if(p)
{
lista.ErraseNode(p);
cout << "el barco ha sido borrado de la lista" << endl << endl;
return 1;
}
cout << "el registro pedido no figura en la lista" << endl << endl;
return 0;
} // BORRAR BARCO
//---------------------------------------------------------------------------
main()
{
cout << setprecision(2) << setiosflags(ios::fixed);
cout << "naviera (lista de listas)." << endl << endl;
BarcosHeaderList lista;
lista.AddNode(2032,"Tashi Maru");
lista.end->AddCargaNode("aluminio",2000,320.12);
lista.end->AddCargaNode("cemento",4020,510.31);
lista.AddNode(8281,"Savannah");
lista.AddNode(3810,"Ribadeo");
lista.end->AddCargaNode("contenedores",20,5922.53);
lista.end->AddCargaNode("aluminio",330,350.22);
lista.end->AddCargaNode("cobre",920,1231.13);
int choice = Menu(),sw = 0;
while(choice != 4)
{
switch(choice)
{
case 1 : sw += AgregarBarco(lista);
break;
case 2 : sw += BorrarBarco(lista);
break;
case 3 : lista.Print(msg[sw]);
break;
} // SWITCH
choice = Menu();
}
cout << "end of program - good bye ! ! !" << endl;
return 0;
} // MAIN
//---------------------------------------------------------------------------