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;