programas de estructuras y bases de datos
TRANSCRIPT
-
8/18/2019 Programas de Estructuras y Bases de Datos
1/62
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica
Academia de Computación
Estructuras y bases de datos
Tema
“programas del semestre “
Grupo: 3cm3
Integrantes
Hernández López Luis Fernando
!ec"a de entrega# $ de mar%o de &'(
-
8/18/2019 Programas de Estructuras y Bases de Datos
2/62
Binario
#include
#include
#include
#include using namespace std;
class bin
{
private:
int z,x,n,nn2[!";
public:
bin$;
void calculo%$;
&bin$;
';bin :: bin$
{
cout
nn2[!"*!;
)or x*!;x
-
8/18/2019 Programas de Estructuras y Bases de Datos
3/62
main$
{
bin a;
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
4/62
cout
or%z+x;z>+!;z00&{cout
bin a;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
5/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
6/62
$oat vel;$oat precio,a6o;);int main%&{
int n;laptop ap;int i;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
7/62
{case :{s4stem%*pause*&;$oat in,sup;
s4stem%*cls*&;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
8/62
{x+strcmp%busca,%ap/i&0>abri&;i%x++!&{cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
9/62
Estructura libros#include#include#include
using namespace std;struct libro{char titulo[2!";int paginas;$oat precio;);int main%&{int n;libro ap;
int i;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
10/62
bandera //;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
11/62
void cadena :: longitud% &{int x+!;do{
i%a[x"-+CD!C&x//;)8hile%a[x"-+CD!C&;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
12/62
)cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
13/62
case ':{a.lectura%&;b.lectura%&;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
14/62
Lista simplemente enlazada
#include#include#include
#include#includeusing namespace std;class HIJK;class 9LML{int dato,edad;char nombre[2!";9LML siguiente;public:9LML%int M+!,9LML s+9,char d[2!"+* *,int e+!&
{dato+M;siguiente+s;strcp4%nombre,d&;edad+e;)riend class HIJK;);class HIJK{9LML ista;public:HIJK%&;void insertar%char nom&;void recorrer%&;int buscar%int b&;void buscar2%int g&;void borrar%int x&;void buscar'%int i,int s&;void buscarG%char d[2!"&;(HIJK%&;
);HIJK :: HIJK%&{ista+9;)void HIJK :: buscar2%int g&{9LML aux,anterior;aux+ista;i%aux0>dato++g&{
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
15/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
16/62
i%aux++9&{cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
17/62
)int HIJK :: buscar%int b&{9LML aux;aux+ista;
8hile%aux&{i%aux0>dato++b&return ;aux+aux0>siguiente;)return !;)void HIJK :: borrar%int x&{9LML aux,anterior;
aux+ista;i%aux++9&{coutsiguiente;
delete aux;return;)anterior+aux;aux+aux0>siguiente;)cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
18/62
aux+ista;8hile%aux&{ista+ista0>siguiente;delete aux;
aux+ista;))void HIJK :: buscarG%char d[2!"&{int x;9LML aux,anterior;aux+ista;x+strcmp%aux0>nombre,d&;i%x++!&{
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
19/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
20/62
brea3;case O:int in,sup;do{
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
21/62
Lista simplemente enlazada
#include#include#include#include#include#includeusing namespace std;class HIJK;class 9LML{char dato[2P";
9LML siguiente;public:9LML%char M[2P"+* *,9LML I+9&{strcp4%dato,M&;siguiente+I;)riend class HIJK;);class HIJK{9LML ista;public:HIJK%&;void insertar%&;void recorrer%&;void buscar%char d&;void borrar%char x&;(HIJK%&;);HIJK :: HIJK%&
{ista+9;)void HIJK :: insertar%&{char M[2P";9LML aux;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
22/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
23/62
9LML aux,anterior;aux+ista;int 4;i%aux++9&{
coutsiguiente;)cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
24/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
25/62
{ char 9ombre[2!"; 9odo Iiguiente; public: 9odo%char 9+* *,9odoI+9&
{ strcp4%9ombre,9&; Iiguiente+I; ) riend class ista; ); class ista{ char 9ombre[2!"; 9odo Hnicio;
public: ista%&; void insertar%&; int buscar%&; void recorrer%&; void borrar%&; (ista%&;);
ista::ista%&{ Hnicio+9;)
void ista::insertar%&{char 9[2!";int x;9odoKux;Kux+Hnicio;=ush%stdin&;
cout else { Kux+Hnicio; i%Kux0>Iiguiente-+9& x+strcmp%Kux0>9ombre,9&;
8hile%%Kux0>Iiguiente&AA%x-+!&&{ Kux+Kux0>Iiguiente;
-
8/18/2019 Programas de Estructuras y Bases de Datos
26/62
x+strcmp%Kux0>9ombre,9&; ) Kux0>Iiguiente+ne8 9odo%9,Kux0>Iiguiente&; )cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
27/62
i%aux++9& { cout9ombre,Q&; i%x++!& { anterior0>Iiguiente+aux0>Iiguiente; delete aux; return; ) anterior+aux; aux+aux0>Iiguiente; )cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
28/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
29/62
Lista doblemente enlazada#include#include#include#include#include#include
using namespace std;#dene Kscendente#dene Mescendente
class nodo{
char dato[!";nodo Iiguiente;
public:nodo%char F+* *,nodo sig+9&{
strcp4%dato,F&;Iiguiente+sig;
)riend class ista;
);t4pede nodo pnodo;
class ista{
pnodo actual;
public:ista%&{actual+9;)(ista%&;void insertar%char F&;void Qorrar%char F&;bool istaFacia%&{return actual++9;)void Bostrar%&;void Iiguiente%&{
i%actual& actual+actual0>Iiguiente;
-
8/18/2019 Programas de Estructuras y Bases de Datos
30/62
)
bool Kctual%&{return actual-+9;
)
char FalorKctual%pnodo aux&{return aux0>dato;)
);
ista::(ista%&{pnodo 9odo;
8hile%actual0>Iiguiente-+actual&{9odo +actual0>Iiguiente;actual0>Iiguiente+9odo0>Iiguiente;
actual0>Iiguiente+9odo0>Iiguiente;delete 9odo;
)delete actual;actual+9;
)
void ista::insertar%char v&{pnodo 9odo;9odo+ne8 nodo%v&;i%actual++9&actual+9odo;else9odo0>Iiguiente+actual0>Iiguiente;actual0>Iiguiente+9odo;
)
void ista::Qorrar%char F&{pnodo 9odo;9odo+actual;
do{ i%strcmp%actual0>Iiguiente0>dato,F&-+!&Iiguiente%&;)8hile %strcmp%actual0>Iiguiente0>dato,F&-+!AAactual-
+9odo&;
i %strcmp%actual0>Iiguiente0>dato,F&++!&{i%actual++actual0>Iiguiente&{
delete actual;actual+9;
)
-
8/18/2019 Programas de Estructuras y Bases de Datos
31/62
else {9odo+actual0>Iiguiente;actual0>Iiguiente;actual0>Iiguiente+9odo0>Iiguiente;
delete 9odo;) )elsecout
-
8/18/2019 Programas de Estructuras y Bases de Datos
32/62
s8itch%opcion&{case CaC:cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
33/62
#include#include#includeusing namespace std;
class nodo{public:nodo%int v+!, nodosig+9,nodoant+9&:valor%v&,siguiente%sig&,anterior%ant&{)private:int valor;nodo siguiente;nodo anterior;riend class lista;);
t4pede nodopnodo;
class lista{public:lista%&:plista%9&{)(lista%&;void Hnsertar%int v&;void Qorrar%int v&;bool istaFacia%&{return plista++9;)void Bostrar%int&;void Iiguiente%&;void Knterior%&;void Wrimero%&;void ltimo%&;bool Kctual%&{return plista -+ 9;)int FalorKctual%&{return plista0>valor;)private:pnodo plista;);
lista::(lista%&{pnodo aux;Wrimero%&;8hile%plista&{aux+plista;plista+plista0>siguiente;delete aux;)
)
-
8/18/2019 Programas de Estructuras y Bases de Datos
34/62
void lista::Hnsertar%int v&{pnodo nuevo;Wrimero%&;i%istaFacia%&EEplista0>valor>v&
{nuevo+ne8 nodo%v,plista&;i%-plista&plista+nuevo;else plista 0>anterior+nuevo;)else{8hile%plista0>siguienteAAplista0>siguiente0>valorsiguiente,plista&;plista0>siguiente+ nuevo;i%nuevo0>siguiente&nuevo0>siguiente0>anterior+nuevo;
)coutanterior;i%-9odoEE9odo0>valor-+v&return;i%9odo0>anterior&9odo0>anterior0>siguiente+9odo0>siguiente;i%9odo0>siguiente&9odo0>siguiente0>anterior+9odo0>anterior;delete 9odo;)
void lista::Bostrar%int o&{pnodo aux;i%o++&
{cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
35/62
)cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
36/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
37/62
Lista simple con multiples opciones#include#include
#include#include#include#include#include#includeusing namespace std;class HIJK;class 9LML{int dato,edad;char nombre[2!";9LML siguiente;public:9LML%int M+!,char d[2!"+* *,int e+!,9LML s+9&{dato+M;siguiente+s;edad+e;strcp4%nombre,d&;)
riend class HIJK;);class HIJK{9LML ista;public:HIJK%&;void insertar%int d+!,char nom+**,int e+!&;void recorrer%&;int buscar%int b&;void buscar2%int g&;
void borrar%int x&;void buscar'%int i,int s&;
-
8/18/2019 Programas de Estructuras y Bases de Datos
38/62
void buscarG%char d[2!"&;void ?uardar%&;void Uecuperar%&;(HIJK%&;);
HIJK :: HIJK%&{ista+9;)void HIJK :: ?uardar%&{9LML aux;aux+ista;char 9ombre5archivo[2P";cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
39/62
i%aux0>dato++g&{cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
40/62
anterior0>siguiente+aux0>siguiente;)aux+anterior;anterior+aux0>siguiente;)
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
41/62
anterior+aux;aux+aux0>siguiente;8hile%aux&{i%aux0>edad++x&
{anterior0>siguiente+aux0>siguiente;delete aux;return;)anterior+aux;aux+aux0>siguiente;)cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
42/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
43/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
44/62
elsecout
-
8/18/2019 Programas de Estructuras y Bases de Datos
45/62
return !;deault:cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
46/62
class ista{9odo inicio;public:
ista%&{
inicio+9;)void Hnsertar%char&;void ?uardar%&;void Uecuperar%&;void Uecorrer%&;
);
void ista::Hnsertar%char9&{9odonuevo+inicio;nuevo+ ne8 9odo%9,inicio&;
inicio+nuevo;s4stem%*pause*&;
)
void ista::?uardar%&{9odo aux+inicio;char 9ombre5archivo[2P";cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
47/62
return;)8hile%inicio&{
aux+inicio;inicio+inicio0>siguiente;
delete aux;)8hile%-archivo5entrada.eo%&&{
archivo5entrada.getline%dato, sizeo%dato&&;Hnsertar%dato&;
)aux+inicio;inicio+inicio0>siguiente;delete aux;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
48/62
s4stem%*cls*&;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
49/62
0000000000 Sstructura de la cola 000000000struct nodoTola{ KQQ ptr;
struct nodoTola sgte;);struct cola{ struct nodoTola delante; struct nodoTola atras;);
void inicializaTola%struct cola A7&{ 7.delante + 9; 7.atras + 9;
) void encola%struct cola A7, KQQ n&{ struct nodoTola p; p + ne8%struct nodoTola&; p0>ptr + n; p0>sgte + 9; i%7.delante++9& 7.delante + p; else %7.atras&0>sgte + p; 7.atras + p;) KQQ desencola%struct cola A7&{ struct nodoTola p; p + 7.delante; KQQ n + p0>ptr; 7.delante + %7.delante&0>sgte;
delete%p&; return n;) KQQ crear9odo%int x&{ KQQ nuevo9odo + ne8%struct nodo&; nuevo9odo0>nro + x; nuevo9odo0>iz7 + 9; nuevo9odo0>der + 9;
return nuevo9odo;)
-
8/18/2019 Programas de Estructuras y Bases de Datos
50/62
void insertar%KQQ Aarbol, int x&{ i%arbol++9& { s4stem%*cls*&;
arbol + crear9odo%x&; coutiz7&; cout nro der&; )) void postLrden%KQQ arbol&{ i%arbol-+9&
{ enLrden%arbol0>iz7&; enLrden%arbol0>der&; cout nro der, n/&;
-
8/18/2019 Programas de Estructuras y Bases de Datos
51/62
or%int i+!; ider, dato&;
else r + ; son iguales, lo encontre
return r;) KQQ unirKQQ%KQQ iz7, KQQ der&{ i%iz7++9& return der; i%der++9& return iz7;
KQQ centro + unirKQQ%iz70>der, der0>iz7&; iz70>der + centro; der0>iz7 + iz7; return der;
) void elimina%KQQ Aarbol, int x&{ i%arbol++9& return;
i%xnro& elimina%arbol0>iz7, x&; else i%x>arbol0>nro& elimina%arbol0>der, x&;
else {
-
8/18/2019 Programas de Estructuras y Bases de Datos
52/62
KQQ p + arbol; arbol + unirKQQ%arbol0>iz7, arbol0>der&; delete p; ))
int alturaKQ%KQQ arbol&{ int KltHz7, KltMer;
i%arbol++9& return 0; else { KltHz7 + alturaKQ%arbol0>iz7&; KltMer + alturaKQ%arbol0>der&;
i%KltHz7>KltMer&
return KltHz7/; else return KltMer/; )) void recorrerx9ivel%KQQ arbol&{ struct cola 7; inicializaTola%7&; cout iz7&; i%arbol0>der-+9& encola%7, arbol0>der&; ) )) KQQ arbolSspe6o%KQQ arbol&
{ KQQ temp;
-
8/18/2019 Programas de Estructuras y Bases de Datos
53/62
i%arbol-+9&
{ temp + arbol0>iz7; arbol0>iz7 + arbolSspe6o%arbol0>der&;
arbol0>der + arbolSspe6o%temp&; ) return arbol;) void nodosBenoresRue%KQQ arbol, int n&{ i%arbol++9& return; nodosBenoresRue%arbol0>der, n/&; i%arbol0>nroiz7, n/&; ) int contar@o6as%KQQ arbol&{ i %arbol++9& { return !; ) i %%arbol0>der ++9&AA%arbol0>iz7 ++9&& { return ; ) else { return contar@o6as%arbol0>iz7& / contar@o6as%arbol0>der&; ))void menu%&
{ cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
54/62
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
55/62
enLrden%arbol&; brea3; case 2: preLrden%arbol&; brea3; case ': postLrden%arbol&; brea3;
) ) else cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
56/62
verKrbol%arbol, !&;
cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
57/62
using namespace std;
class KrbolKQQ { private: class 9odo {
public: 9odo% int dat, 9odo iz7+9, 9odo der+9& : dato%dat&, iz7uierdo%iz7&, derecho%der& {) int dato; 9odo iz7uierdo; 9odo derecho; );
9odo raiz; 9odo actual; int contador;
int altura;
public: KrbolKQQ%& : raiz%9&, actual%9& {) (KrbolKQQ%& { Wodar%raiz&; ) void Hnsertar%int dat&; void Qorrar%int dat&; bool Quscar%int dat&; bool Facio%9odo r& { return r++9; ) bool Ss@o6a%9odo r& { return -r0>derecho AA -r0>iz7uierdo; ) const int 9umero9odos%&; const int KlturaKrbol%&; int Kltura%int dat&; int AFalorKctual%& { return actual0>dato; ) void Uaiz%& { actual + raiz; ) void HnLrden%void %unc&%intA& , 9odo nodo+9, bool r+true&; void WreLrden%void %unc&%intA& , 9odo nodo+9, bool r+true&; void WostLrden%void %unc&%intA& , 9odo nodo+9, bool r+true&; private: void Wodar%9odo A&; void auxTontador%9odo&;
void auxKltura%9odo, int&;);
void KrbolKQQ::Wodar%9odo Anodo&{
i%nodo& { Wodar%nodo0>iz7uierdo&;
Wodar%nodo0>derecho&;delete nodo;nodo + 9;
))
-
8/18/2019 Programas de Estructuras y Bases de Datos
58/62
void KrbolKQQ::Hnsertar%int dat&{ 9odo padre + 9;
actual + raiz; 8hile%-Facio%actual& & { padre + actual; i%dat > actual0>dato& actual + actual0>derecho; else i%dat dato& actual + actual0>iz7uierdo; ) i%Facio%padre&& raiz + ne8 9odo%dat&; else i%dat dato& padre0>iz7uierdo + ne8 9odo%dat&; else i%dat > padre0>dato& padre0>derecho + ne8 9odo%dat&;)
void KrbolKQQ::Qorrar%int dat&{ 9odo padre + 9; 9odo nodo; int aux;
actual + raiz; 8hile%-Facio%actual&& { i%dat ++ actual0>dato& {
i%Ss@o6a%actual&& {i%padre&i%padre0>derecho ++ actual& padre0>derecho + 9;
else i%padre0>iz7uierdo ++ actual& padre0>iz7uierdo + 9; delete actual;
actual + 9; return; ) else {
padre + actual; i%actual0>derecho& { nodo + actual0>derecho;
8hile%nodo0>iz7uierdo& { padre + nodo; nodo + nodo0>iz7uierdo; ) )
else { nodo + actual0>iz7uierdo; 8hile%nodo0>derecho& { padre + nodo; nodo + nodo0>derecho;
) )
-
8/18/2019 Programas de Estructuras y Bases de Datos
59/62
aux + actual0>dato;
actual0>dato + nodo0>dato; nodo0>dato + aux; actual + nodo;
) ) else {
padre + actual; i%dat > actual0>dato& actual + actual0>derecho; else i%dat < actual0>dato& actual + actual0>iz7uierdo; ) ))
void KrbolKQQ::HnLrden%void %unc&%intA&, 9odo nodo, bool r&
{i%r& nodo + raiz;
i%nodo0>iz7uierdo& HnLrden%unc, nodo0>iz7uierdo, alse&; unc%nodo0>dato&; i%nodo0>derecho& HnLrden%unc, nodo0>derecho, alse&;)
void KrbolKQQ::WreLrden%void %unc&%intA&, 9odo nodo, bool r&{ i%r& nodo + raiz; unc%nodo0>dato&; i%nodo0>iz7uierdo& WreLrden%unc, nodo0>iz7uierdo, alse&; i%nodo0>derecho& WreLrden%unc, nodo0>derecho, alse&;)
void KrbolKQQ::WostLrden%void %unc&%intA&, 9odo nodo, bool r&{ i%r& nodo + raiz; i%nodo0>iz7uierdo& WostLrden%unc, nodo0>iz7uierdo, alse&; i%nodo0>derecho& WostLrden%unc, nodo0>derecho, alse&; unc%nodo0>dato&;
)bool KrbolKQQ::Quscar%int dat&{ actual + raiz; 8hile%-Facio%actual&& { i%dat ++ actual0>dato& return true;
else i%dat > actual0>dato& actual + actual0>derecho;else i%dat < actual0>dato& actual + actual0>iz7uierdo;
) return alse;
)
-
8/18/2019 Programas de Estructuras y Bases de Datos
60/62
int KrbolKQQ::Kltura%int dat&{ int altura + !;
actual + raiz;
8hile%-Facio%actual&& { i%dat ++ actual0>dato& return altura;
else { altura//;
i%dat > actual0>dato& actual + actual0>derecho; else i%dat < actual0>dato& actual + actual0>iz7uierdo; ) ) return 0;
)
const int KrbolKQQ::9umero9odos%&{ contador + !; auxTontador%raiz&; ZnciYn auxiliar return contador;)
void KrbolKQQ::auxTontador%9odo nodo&{ contador//;
i%nodo0>iz7uierdo& auxTontador%nodo0>iz7uierdo&; i%nodo0>derecho& auxTontador%nodo0>derecho&;)
const int KrbolKQQ::KlturaKrbol%&{ altura + !; auxKltura%raiz, !&;
return altura;
)
void KrbolKQQ::auxKltura%9odo nodo, int a&{ i%nodo0>iz7uierdo& auxKltura%nodo0>iz7uierdo, a/&; i%nodo0>derecho& auxKltura%nodo0>derecho, a/&; i%Ss@o6a%nodo& AA a > altura& altura + a;)
void Bostrar%int Ad&
{ cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
61/62
)int main%&{int dat;char opcion;
KrbolKQQ K;do{s4stem%*cls*&;cout
-
8/18/2019 Programas de Estructuras y Bases de Datos
62/62
coutdat;
cout