Subido por jcmguedez

324-Trabajo Practico computacion 2

Anuncio
Universidad Nacional Abierta
Vicerrectorado Académico Área de
Ingeniería
Carrera Ingeniería de Sistemas
Trabajo práctico sustitutivo
Asignatura: Computación II
Código: 324
Fecha de devolución:l 12-03-2024
Nombre del Estudiante:Julio Csar Martinez
Cédula de Identidad:6220205
Centro Local / Unidad de Apoyo: Maracay
Correo electrónico jcmguedez:@hotmail.com
Teléfono celular: 04243585310
Carrera: Ingenieria en Sistema
Número de originales: Lapso: 2024-1
Resultados de Corrección
Objetivos
Logrado: 1
No logrado: 0
1
2
3
4
Utilice esta misma página como carátula de su trabajo
M: 1, U: 1, O: 1
C/D: 1/1
1. Realice un TAD en C++ para verificar si dado 2 números complejos su suma y multiplicación son iguales.
1: #include <cstdlib>
2: #include <iostream>
3: #include <conio.h>
4:
5:
6: using namespace std; 7:
struct complejo
8: {
9:
float real,imaginaria;
10:
11: } num1,num2,num3,num4;
12:
13: //ingresar Datos a traves de las sgte funciones
14: void ingresarNumro();
15: complejo suma(complejo,complejo);
16:
17: void muestra(complejo);
18:
19:
20:
21: int main()
22: {
23:
ingresarNumro();
24:
complejo x = suma(num1,num2);
25:
26:
muestra(x);
27:
if (num3.imaginaria==num4.imaginaria and num3.real==num4.real)
28:
{
29:
cout<<"\n El Resultado Cumple a las especificaciones dada"<<endl;
30:
cout<<"\n La Suma y la Multiplicacion son iguales"<<endl;
31:
32:
33:
}
34:
else
35:
{ cout<<"\n El Resultado No! Cumple las especificaciones dada"<<endl;
36:
cout<<"\n La Suma y la Multiplicacion NOO! son iguales"<<endl;
37:
cout<<"\n Intente Nuevamente"<<endl;
}
38:
getch();
39:
return 0 ;
40: }
41: void ingresarNumro()
42: {
43:
cout<<"Ingrese el Primer Numero complejo :"<<endl;
44:
cout<<"Parte Real :"; cin>>num1.real;
45:
cout<<"Parte Imaginaria :"; cin >>num1.imaginaria;
46:
47:
cout<<"\nIngrese el Segundo Numero complejo :"<<endl;
48:
cout<<"Parte Real :"; cin>>num2.real;
49:
cout<<"Parte Imaginaria :"; cin >>num2.imaginaria;
50:
51:
}
52:
53: complejo suma(complejo num1,complejo num2)
54: {
55:
num3.real=num1.real+num2.real;
56:
num3.imaginaria=num1.imaginaria+num2.imaginaria;
57:
num4.real=num1.real*num2.real;
58:
num4.imaginaria=num2.imaginaria*num2.imaginaria;
59:
return num3,num4;
60: }
61:
62:
63: void muestra(complejo x)
64: {
65: cout<<"\nResultado de Suma Compleja : "<<num3.real<<","<<num3.imaginaria<<endl;
66: cout<<"\nResultado de Multiplicacion Compleja : "<<num4.real<<","<<num4.imaginaria<<endl;
67:
68:
}
69:
70:
M: 1, U: 2, O: 2
C/D: 1/1
Realice un programa en C++ que construya una función imprimeInverso que imprima los elementos de una lista enlazada de enteros en
orden inverso a partir de una posición p
1: #include <cstdlib>
2: #include <iostream>
3: #include <conio.h>
4:
5: using namespace std;
6:
7: struct Nodo {
8:
int dato ;
9:
Nodo *siguiente;
10: };
11:
12:
13:
// funciones
14: void menu();
15: void insertarlista(Nodo *& ,int);
16: void mostrarlista(Nodo *);
17:
18: Nodo *lista = NULL;
19:
20: int main(){
21:
22:
menu();
23:
24:
getch();
25:
return 0;
26: }
27:
void menu(){
28:
int opcion,dato;
29:
do{
30:
cout<<"\t.:MENU:.\n";
31:
cout<<"1. Insertar Elementos a la lista\n";
32:
cout<<"2. Mostra
Elementos de la lista en Forma inversa \n";
33:
cout<<"3. Salir de lista\n";
34:
cout<<"Opcion: ";
35:
cin>>opcion ;
36:
37:
switch (opcion) {
38:
case 1:
cout<<"\ningrese un numero :";
39:
cin>>dato;
40:
insertarlista(lista,dato);
41:
cout<<"\n";
42:
system("pause");
43:
break;
44:
case 2: mostrarlista (lista);
45:
cout<<"\n";
46:
system("pause");
47:
break;
48:
}
49:
system("cls");
50:
} while (opcion !=3);
51:
}
52: void insertarlista(Nodo *&lista,int n){
53:
Nodo *nuevo_nodo = new Nodo();
54:
nuevo_nodo->dato = n;
55:
56:
Nodo * aux1 = lista;
57:
Nodo * aux2;
58:
59:
while (( aux1 != NULL) && (aux1 -> dato > n)){
60:
aux2 = aux1 ;
61:
aux1 = aux1->siguiente;
62:
}
63:
if(lista==aux1){
64:
lista = nuevo_nodo;
65:
}
66:
else{
67:
aux2->siguiente = nuevo_nodo;
68:
}
69:
nuevo_nodo ->siguiente = aux1;
70:
cout<<"\t Elemento"<<n<<" insertado a lista correctamente\n";
71: }
72: void
mostrarlista(Nodo *lista){
73:
Nodo *actual = new Nodo();
74:
actual = lista;
75:
while (actual!= NULL){
76:
77:
78:
79:
cout<<actual->dato<<" -> ";
actual=actual->siguiente;
}
}
M: 2, U: 3, O: 3
C/D: 1/1
2. Se dispone de un compilador que únicamente tiene implementada la estructura de datos pila, y las siguientes operaciones
asociadas. void Inicializar (Tpila *pila);
- void Apilar (Tpila *pila,Telem elem);
- void Sacar (Tpila *pila);
- Telem Cima (Tpila Pila, Telem Elemento);
- BOOLEAN Vacia (Tpila Pila);
1: #include <cstdlib> // sirv para crear spacio en memoria
2: #include <iostream>
3: #include <conio.h>
4:
5: using namespace std;
6:
struct Nodo {
7:
int dato;
8:
Nodo *siguiente;
9: };
10:
struct Nodo_aux {
11:
int dato_aux;
12:
Nodo_aux *siguiente_aux;
13: };
14:
15: //funcion
16: void agregarPila(Nodo *&,int);
17: void sacarPila(Nodo *&,int &);
18: void apilarPila(Nodo_aux *&,int n_aux);
19: int main()
20: {
21:
Nodo *pila=NULL;
22:
Nodo_aux *pila_aux=NULL;
23:
24:
int dato,ctdad_nodo;
25:
ctdad_nodo=0;
26:
char rspt;
27:
do {
28:
ctdad_nodo=ctdad_nodo+1;
29:
cout<<"Ingrese un Numero :";
30:
cin>>dato;
31:
agregarPila(pila,dato);
32:
cout<<"\n\nDesea agregar otro Numero a la pila (S/N): ";
33:
cin>>rspt;
34:
}
35:
while((rspt=='S')||(rspt=='s') );
36:
while(pila !=NULL) { // mientra no sea el final de la pila
37:
sacarPila(pila,dato);
38:
if (pila!=NULL){
39:
apilarPila(pila_aux,dato);
40:
}
41:
else{
42:
apilarPila(pila_aux,dato);
43:
cout<<" Elementos
Invertido en la Pila Correctamente"<<endl;
44:
cout<<"\n la cantidad de datos que habia en la pila es de "<<ctdad_nodo<<" Elementos";
45:
}
46:
}
47:
48:
getch();
49:
return 0;
50: };
51: void agregarPila(Nodo *&pila,int n)
52: {
53:
Nodo *nuevo_nodo=new Nodo(); //creamos o reservamos el espacio en memoria con new
54:
nuevo_nodo->dato=n ; // llenar el campo dato con el nro n que indique el usuario
55:
nuevo_nodo->siguiente=pila;// llenar el campo sgte que es el puntero si es l primro l pasamos NULL
56:
pila=nuevo_nodo; // igualamos la variabl pila con nuevo nodo para pasarlo al sgte nodo
57:
cout<<"\n Elemento "<<n<<" Agregado orrectamente"<<endl;
58: };
59:
60: void sacarPila(Nodo *&pila ,int &n)
61: {
62:
Nodo *aux = pila;
63:
n=aux->dato;
64:
pila=aux->siguiente;
65:
delete aux;
66: }
67: void apilarPila(Nodo_aux *&pila_aux,int _aux)
68: {
69:
Nodo_aux *nuevo_nodo_aux=new odo_aux();
70:
71:
72:
73:
74:
75: };
76:
77:
nuevo_nodo_aux->dato_aux=n_aux ;
nuevo_nodo_aux->siguiente_aux=pila_aux;
pila_aux=nuevo_nodo_aux;
cout<<n_aux<<" ,";
3. El recorrido en preorden de un determinado árbol binario es: GEAIBMCLDFKJH y en inorden IABEGLDCFMKHJ. Resolver:
A) Dibujar el árbol binario.
B) Dar el recorrido en postorden.
C) Hacer una función en C++ para dar el recorrido en postorden dado el recorrido en preorden e inorden y hacer un programa en
C++ para comprobar el resultado del apartado anterior.
Las soluciones son las siguientes:
A) El árbol correspondiente es el de la siguiente figura:
B)El recorrido en postorden es IBAEDLFCHJKMG.
C)El código solución al tercera pregunta:
1: #include < stdio.h>
2: #include < stdlib.h>
3: #include < string.h>
4:
5: char *preorden="GEAIBMCLDFKJH";
6: char *inorden="IABEGLDCFMKHJ";
7: char *postorden;
8:
9:
10: void post(char *pre,char *in,char *pos,int n)
11: {
12:
int longIzqda;
13:
14:
if(n!=0){
15:
pos[n-1]=pre[0];
16:
longIzqda=strchr(in,pre[0])-in;
17:
post (pre+1,in,pos,longIzqda);
18:
post(pre+1+longIzqda,in+1+longIzqda,pos+longIzqda,n-1-longIzqda);
19:
}
20: }
21:
22: main(int argc,char *argv[])
23: {
24:
int aux;
25:
26:
aux=strlen(preorden);
27:
postorden=(char *)malloc(aux*sizeof(char));
28:
if (postorden){
29:
printf("El preorden es: %s\n",preorden);
30:
printf("El inorden es: %s\n",inorden);
31:
post(preorden,inorden,postorden,aux);
32:
postorden[aux]='\0';
33:
printf("El postorden calculado es: %s\n",postorden);
34:
35:
36:
37:
38:
39:
40:
41:
42: }
43:
44:
free(postorden);
}
else{
fprintf(stderr,"Error: Sin memoria\n");
return 1;
}
return 0;
Descargar