Advertisement
Guest User

Untitled

a guest
Apr 18th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. using namespace std;
  5.  
  6. typedef struct nod{
  7.     string dato;
  8.     nod*sgte;
  9. }Pila;
  10.  
  11.  
  12. void push(int numero,int numeroaux,Pila*&p,string operador,string hexadecimal[16]){
  13.    
  14.     int resto,i,j,termino;
  15.    
  16.     if (operador=="b")
  17.         termino = 2;
  18.     else
  19.         termino = 16;
  20.    
  21.     for(i = 1 ; i <= numero; i++){ // Determina las divisiones que se haran
  22.         numeroaux = numeroaux/ termino;
  23.         if(numeroaux == 1 && operador == "b"){
  24.             break;
  25.         }
  26.         else if(numeroaux < 16 && operador != "b"){
  27.             break;
  28.         }
  29.   }
  30.   for(j = 1 ; j <= i; j++){ // Realiza las operaciones para la conversión
  31.     Pila*pila =new Pila;
  32.         resto = numero % termino;
  33.         pila->dato = hexadecimal[resto];
  34.         numero = numero / termino;
  35.     pila->sgte = pila;
  36.      
  37.      
  38.      
  39.   }
  40.   Pila* pila = new Pila;
  41.   pila->dato=hexadecimal[numero];
  42.  };
  43.  
  44.  
  45.  
  46. string pop(Pila *&pila){
  47.  // Crea un nuevo nodo
  48.     Pila *p;
  49.     Pila *next;
  50.     string x;
  51.     p = NULL;
  52.     next = pila;
  53.    
  54.     while (!pila_vacia(next)){
  55.  // El nuevo nodo va a apuntar al primer nodo de la lista ligada
  56.     x = next->dato;
  57.  // Ahora el segundo nodo de la lista ligada va a ser el primero
  58.     p = next;
  59.    
  60.  // Borra el primer nodo de la lista ligada
  61.     cout<<"x "<<next->dato<<endl;
  62.     delete(p);
  63.     cout<<"xsawda"<<endl;
  64.  // Regresa el valor que contenía el nodo que se eliminó
  65.     cout << x << endl;
  66.     }
  67.     return x;
  68. };
  69.  
  70. int main(){
  71.    
  72.     int salida;
  73.     salida = 1;
  74.     Pila *pila = NULL;
  75.     string hexadecimal[16]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
  76.     while(salida!=0){
  77.         string orden,operador;
  78.         int numero;
  79.         cout<<"Ingrese una frase: ";
  80.         getline(cin,orden);
  81.         stringstream string_actual(orden);
  82.         string_actual>>operador; //obtenemos el operador (b si es binario, h si es hexadecimal)
  83.         string_actual>>numero;
  84.        
  85.        
  86.         if(orden!="x 0"){
  87.            
  88.             if(operador=="b"){
  89.                 push(numero,numero,pila,operador,hexadecimal);
  90.                 pop(pila);
  91.             }
  92.            
  93.             else{
  94.                 push(numero,numero,pila,operador,hexadecimal);
  95.                 //while (pila_vacia(pila) != 1)
  96.                     //pop(pila);
  97.             }
  98.        
  99.         }
  100.            
  101.         else{
  102.             salida=0;
  103.         }
  104.     }
  105.    
  106.     return 0;
  107. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement