viernes, 22 de mayo de 2015

Hola a todos en este programa que nos dejo el Ing. Hector  encargado en impartir la materia de Autómatas y Lenguajes Formales lo que hicimos fue convertir de una base n a otra base n, lo cual lo hicimos en c++ y que la base resultante se guardare en un archivo de texto.

código implementado para hacer las conversiones en c++

#include <iostream>
#include <stdio.h>  
#include <stdlib.h>  
#include <math.h>  
#include <conio.h>  
#include <fstream>
#include <string>
#include <iomanip>


using namespace std; 

void arreglo (int numero [], int digitos, int bx);  
int convertirdecimal (int numero [], int digitos, int bx, int by);  
void convertirbase (int decimal, int by);  
int checabase ();  
int checaby ();
int cont();
int conv();  
void mostrarDatos();
void escribirEnArchivo();
void recuperarDeArchivo();
void salidaArchivo();

int main(int argc, char** argv) {

int digitos = 0;  
int bx, by;  
int decimal;  

 cout << "----------------------------Convertidor------------------------------ \n\n";  

 bx = checabase (); 


 cout << "\n longitud del numero a convertir \n\n ";    // Cuantos digitos contendra el numero a ingresar
 cin >> digitos;  // Se almacenara la longitud del numero

 int numero [digitos];  
 cout <<"\n Introduce el numero  a convertir, digito a digito\n\n";  

 arreglo (numero, digitos, bx);  
 decimal = convertirdecimal (numero, digitos, bx, by);  
 by = checaby();  
    
 cout << "\n";  

    convertirbase (decimal, by);  
    system ("PAUSE");  
    return 0;  }  

 int checabase ()  
 {  
 int x;  // se de clara variable en donde se almacenara el numero a convertir

 // Aqui se pide al usuario que ingrese el numero que desea convertir a cualquier otra base 
 // Ingresando solamente el numero que se muestra en frente de la frase

 cout <<"En que base esta el numero a convertir: \n ";
 cout <<"Decimal = 10 \n";
 cout <<"Binario = 2 \n"; 
 cout <<"Octal = 8\n";
 cout <<"Hexadecimal = 16 \n \n ";  
 cin >> x;  // se almacena el numero ingresado
    
    
    if(x >=17)  
    {  
    cout << "\n\n Ingrese una base menor a 16 para la conversion \n\n";  
    cout << "A que base deseas convertir, ingresalo en numero: \n";
    cout << "Decimal = 10 \n";
    cout << "Binario = 2 \n"; 
    cout << "Octal = 8 \n";
    cout << "Hexadecimal = 16 \n \n ";  
    cin >> x;  
    }  

 if(x <=-1)  
 {  

 cout << "\n \n Ingrese una base menor a 16 para la conversion \n\n";  
 cout << "A que base deseas convertir, ingresalo en numero: \n";
 cout << "Decimal = 10 \n";
 cout << "Binario = 2 \n"; 
 cout << "Octal = 8 \n";
 cout << "Hexadecimal = 16 \n \n "; 
        cin >> x;  
    }  
    return x;  
}  
  
int checaby ()  
{  
    int x;  

 cout << "\n\n A que base deseas convertir, ingresalo en numero: \n\n";
 cout << "Decimal = 10 \n";
 cout << "Binario = 2 \n"; 
 cout << "Octal = 8\n";
 cout << "Hexadecimal = 16 \n \n "; 
 cin >> x;  
    
 if(x >=17)  
    {  
 cout << "\n \n Ingrese una base menor a 16 para la conversion \n\n";   
 cout << "A que base deseas convertir, ingresalo en numero: \n ";
 cout << "Decimal = 10 \n";
 cout << "Binario = 2 \n"; 
 cout << "Octal = 8\n";
 cout << "Hexadecimal = 16 \n \n ";    
        cin >>x;  
    }  
  
    else if (x <=-1)  
    {  
        cout << "\n \n Ingrese una base mayor para la conversion \n\n";  
        cout << "\n \n A que base deseas convertir, ingresalo en numero: \n ";
        cout << "Decimal = 10 \n";
        cout << "Binario = 2 \n"; 
        cout << "Octal = 8\n";
        cout << "Hexadecimal = 16 \n \n "; 
        cin >>x;  
    }  
    return x;  
}  
  
void arreglo (int numero [], int digitos, int bx)  
{  
    int i,x, a;  
    for (i=0; i<digitos; i++)  
    {  
        cout << "\n Introduce su numero \n", i+1;  
        cin >>numero[i];  
        if (numero[i]>=bx || numero[i]<0)  
        {  
           cout << "\n Su numero no es valido \n";  
           cout << "\n Introduce el digito \n", i+1;  
           cin >>numero[i];  
        }  
    }  
  
   cout << "\n El numero a convertir es: \n\n";  
   
   for (i=0; i<digitos; i++)  
   cout << numero [i];  
   
  
}  
  
int convertirdecimal (int numero [], int digitos, int bx, int by)  
{  
    int i, pot;  
    int x=0;  
    for (i=digitos-1, pot=0; i>=0, pot<digitos; i--, pot++)  
    {  
        x+= (pow(bx, pot)* numero[i]);  
    }  
    return x;  
    
}  
  
void convertirbase (int decimal, int by)  
{  
    int cociente,residuo,cont, i,j;  
    int conv [50];  
    i=0;  
    do{  
        cociente = decimal/by;  
        residuo = decimal%by;  
        conv[i] = residuo;  
        decimal = cociente;  
        i+=1;  
    } while (cociente>0);  
  
    cout << "\n El numero convertido es: \n";  
    ofstream salidaArchivo("convertidorBases.txt",ios::out);
    for (cont=i-1; cont>=0; cont--)   
    {  
        cout <<  conv [cont];
  salidaArchivo<<conv[cont];  
    } 
   cout <<"\n\n"; 
    
}  




PANTALLA DE SALIDA









0 comentarios :

Publicar un comentario