• Sábado 18 de Mayo de 2024, 19:21

Autor Tema:  Operaciones Con Varios Sistemas De Numeros  (Leído 3426 veces)

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Operaciones Con Varios Sistemas De Numeros
« en: Miércoles 2 de Abril de 2008, 16:10 »
0
Me podrían ayudar con este programa, tengo que hacer una especie de calculadora con un menú que me de a escoger el sistema que voy a usar (Binarios, Octal, Decimal y Hexadecimal) y me de las opciones de sumar, restar, multiplicar o dividir en cada uno,
si me pudieran dar una ayuda y guiarme, gracias de Antemano.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #1 en: Miércoles 2 de Abril de 2008, 19:49 »
0
Pediste una guia asi que aqui va:

Para la lectura de variables usa scanf, o si es cadena gets.
Para la eleccion de los menus usa switch/case.
Para que no permitas valga la redundancia numeros no permitidos (esto dependera de la base) valida las entradas (pista, usa do..while)
Para las operaciones, simplemente hazlas, ejemplo: suma = a+ b;

Cuando tengas algo hecho, regresa y posteas tu codigo, y podremos ayudarte mas, pero antes demuestra que has hecho algo.

Porque no se hacen tareas ;)

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #2 en: Jueves 3 de Abril de 2008, 01:32 »
0
Lo que sucede es que no entiendo muy bien como hacer operaciones con estos sistemas de números ( excepto con el decimal pues por que siempre lo manejamos ) es esta la mayor razón de que solicite ayuda y no encuentro donde me expliquen esto.
Claro que esta ayuda me sirve para empezar a crear el menú.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #3 en: Jueves 3 de Abril de 2008, 03:33 »
0
Tu mismo lo dijiste, todas las operaciones se hacen en decimal (aunque internamente la computadora lo hace en binario, pero esa es otra historia :)).

Asi que lo que tienes que hacer es crear una funcion que convierta de base "x" a decimal, y de decimal a base "x", supongo que la conversion la sabes hacer, conversiones de sistemas se ve en el primer semestre de cualquier carrera de informatica, si no, busca en la wikipedia sistema binario, sistema octal y sistema hexadecimal.

Resumiendo de nuevo

1. Lees los numeros (como cadena, en el caso de hexadecimal)
2. Validas segun la base
3. conviertes de base "x" a decimal (a menos que ya sea decimal).
4. haces la operacion.
5. conviertes de decimal a base "x".

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #4 en: Jueves 3 de Abril de 2008, 05:17 »
0
Es decir, por ejemplo quiero sumar dos números binarios, lo que tengo que hacer es primero convertir esos números binarios a decimales, hacer la operación y luego volverlos a convertir a binarios, y asi con los otros sistemas de números ?

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #5 en: Jueves 3 de Abril de 2008, 05:28 »
0
Cita de: "Jejasa"
Es decir, por ejemplo quiero sumar dos números binarios, lo que tengo que hacer es primero convertir esos números binarios a decimales, hacer la operación y luego volverlos a convertir a binarios, y asi con los otros sistemas de números ?
Si

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #6 en: Jueves 3 de Abril de 2008, 05:46 »
0
Hay una forma facil de leer el numero con scanf, el problema es que no valida que el numero sea correcto segun la base (o sea un 9 en base octal por ejemplo), ni tampoco funciona con binarios:

Código: Text
  1.  
  2. // Lee un numero en octal
  3. scanf("%o", &valor);
  4.  
  5. // Lee un numero en hexadecimal
  6. scanf("%x", &valor);
  7.  
  8.  

Asi que de todas formas, como dije, tienes que hacer conversiones.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #7 en: Viernes 4 de Abril de 2008, 07:25 »
0
Conversión de bases: revisa tus libros. También, esta página te puede servir: http://www.pablin.com.ar/computer/cursos/varios/basesnum.htm
La imaginación es el límite.
Hardware & Software | Mexchip

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #8 en: Lunes 7 de Abril de 2008, 16:31 »
0
Ya he comprendido mejor lo de las conversiones de los sistemas, pero como hacerlo con C++?.  me podrían explicar esto a través del código del programa.
y perdón por las molestias.

EI: NO PONGAS MAS MENSAJES PIDIENDO AYUDA, CON ESTE ALCANZA, SI ALGUIEN LO PUEDE HACER LO HARA.

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #9 en: Viernes 11 de Abril de 2008, 01:09 »
0
La Pregunta Anterior sigue en pie, pero ahora tengo otra mas y es al usar goto, lo que pasa es que al seleccionar la opción (indicada en el programa) no me salta a donde debería (indicado en el programa), no se si lo estoy haciendo mal, o si hay otra forma de hacerlo

Código: Text
  1.  
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <windows.h>
  5. using namespace std;
  6. main(){
  7. int a,b,x;
  8. char aux=0;
  9.     do{
  10.     regreso1:                                       /* AQUÍ DEBERÍA SALTAR */
  11.        cout << " ************** Menu **************" << endl << endl;
  12.        cout << "       Sistema Actual ----> Decimal" <<endl;  
  13.        cout << "1-Cambiar Sistema" << endl;                  
  14.        cout << "2-Sumar" << endl;
  15.        cout << "3-Restar" << endl;
  16.        cout << "4-Multiplicar" << endl;
  17.        cout << "5-Dividir" << endl;
  18.        cout << "6-Salir" << endl << endl;
  19.        cout << "Seleccione Opcion: ";
  20.        cin >> x;
  21.        cout << endl << endl;
  22.        if (x>6){
  23.           cout <<"Obcion No Valida";
  24.           Sleep(1000);
  25.        }
  26.        system("CLS");
  27.        
  28.          switch(x){
  29.             case 1:
  30.              do{
  31.               cout << "   --  Cambiar Sistema  --" <<endl <<endl;
  32.               cout << "1-Binario" << endl;
  33.               cout << "2-Hexadecimal" << endl;
  34.               cout << "3-Octal" << endl;
  35.               cout << "4-Regresar" << endl <<endl;
  36.               cout << "Seleccione Opcion: ";
  37.               cin >> x;
  38.               cout << endl << endl;
  39.               if (x>4){
  40.                  cout <<"Obcion No Valida";
  41.                  Sleep(1000);
  42.               }
  43.               system("CLS");
  44.              
  45.                   switch(x){                
  46.                      case 1:
  47.                       do{
  48.                        regreso2:
  49.                           cout << " ************** Menu **************" << endl << endl;
  50.                           cout << "       Sistema Actual ----> Binario" <<endl;      
  51.                           cout << "1-Cambiar Sistema" <<endl;                      
  52.                           cout << "2-Sumar" <<endl;
  53.                           cout << "3-Restar" <<endl;
  54.                           cout << "4-Multiplicar" <<endl;
  55.                           cout << "5-Dividir" <<endl;
  56.                           cout << "6-Salir" <<endl <<endl;
  57.                           cout << "Seleccione Opcion: ";
  58.                           cin >> x;
  59.                           cout << endl << endl;
  60.                           system("CLS");
  61.                          
  62.                           switch(x){
  63.                                case 1:
  64.                                 do{
  65.                                    cout << "   --  Cambiar Sistema  --" <<endl <<endl;
  66.                                    cout << "1-Decimal" << endl;
  67.                                    cout << "2-Hexadecimal" << endl;
  68.                                    cout << "3-Octal" << endl;
  69.                                    cout << "4-Regresar" << endl <<endl;
  70.                                    cout << "Seleccione Opcion: ";
  71.                                    cin >> x;
  72.                                    cout << endl << endl;
  73.                                    if (x>4){
  74.                                       cout <<"Obcion No Valida";
  75.                                       Sleep(1000);
  76.                                    }
  77.                                    system("CLS");    
  78.                                    break;
  79.                                    
  80.                                    switch(x){
  81.                                         case 1:     /* ESTA ES LA OBCION QUE ESCOJO*/
  82.                                              goto regreso1;
  83.                                         break;
  84.                                        
  85.                                         case 2:
  86.                                              goto regreso3;    /*ESTAS OPCIONES TAMPOCO*/
  87.                                         break;                        /*FUNCIONAN*/
  88.                                        
  89.                                         case 3:
  90.                                              goto regreso4;
  91.                                         break;
  92.                                        
  93.                                         case 4:
  94.                                              goto regreso2;
  95.                                         break;
  96.                                    }
  97.                                 }while(x>4);
  98.                           }
  99.                       }while(x>6);    
  100.                          
  101.                      case 2:
  102.                       do{
  103.                        regreso3:
  104.                           cout << " ************** Menu **************" << endl << endl;
  105.                           cout << "       Sistema Actual ----> Hexadecimal" <<endl;      
  106.                           cout << "1-Cambiar Sistema" <<endl;                      
  107.                           cout << "2-Sumar" <<endl;
  108.                           cout << "3-Restar" <<endl;
  109.                           cout << "4-Multiplicar" <<endl;
  110.                           cout << "5-Dividir" <<endl;
  111.                           cout << "6-Salir" <<endl <<endl;
  112.                           cout << "Seleccione Opcion: ";
  113.                           cin >> x;
  114.                           cout << endl << endl;
  115.                           system("CLS");
  116.                       }while(x>6);
  117.                      break;
  118.                      
  119.                      case 3:
  120.                      regreso4:
  121.                           cout << " ************** Menu **************" << endl << endl;
  122.                           cout << "       Sistema Actual ----> Octal" <<endl;      
  123.                           cout << "1-Cambiar Sistema" <<endl;                      
  124.                           cout << "2-Sumar" <<endl;
  125.                           cout << "3-Restar" <<endl;
  126.                           cout << "4-Multiplicar" <<endl;
  127.                           cout << "5-Dividir" <<endl;
  128.                           cout << "6-Salir" <<endl <<endl;
  129.                           cout << "Seleccione Opcion: ";
  130.                           cin >> x;
  131.                           cout << endl << endl;
  132.                           system("CLS");
  133.                          
  134.                      case 4:
  135.                          goto regreso1;
  136.                      break;
  137.                   }
  138.              }while(x>4);
  139.             break;
  140.              
  141.             case 2:
  142.               cout << "Ingrese Numero 1" << endl;
  143.               cin >> a;
  144.               cout << "Ingrese Numero 2" << endl;
  145.               cin >> b;
  146.               cout << "La Suma Es: " << a << " + " << b << " = " <<a+b << endl <<endl;
  147.               system("pause");
  148.               return 0;
  149.               system("CLS");
  150.             break;
  151.            
  152.             case 3:
  153.               cout << "Ingrese Numero 1" << endl;
  154.               cin >> a;
  155.               cout << "Ingrese Numero 2" << endl;
  156.               cin >> b;
  157.               cout << "La Resta Es: " << a << " + " << b << " = " <<a-b <<endl <<endl;
  158.               system("pause");
  159.               return 0;
  160.               system("CLS");
  161.             break;
  162.            
  163.             case 4:
  164.               cout << "Ingrese Numero 1" << endl;
  165.               cin >> a;
  166.               cout << "Ingrese Numero 2" << endl;
  167.               cin >> b;
  168.               cout << "La Multiplicacion Es: " << a << " * " << b << " = " <<a*b <<endl <<endl;
  169.               system("pause");
  170.               return 0;
  171.               system("CLS");
  172.             break;
  173.            
  174.             case 5:
  175.               cout << "Ingrese Numero 1" << endl;
  176.               cin >> a;
  177.               cout << "Ingrese Numero 2" << endl;
  178.               cin >> b;
  179.               cout << "La Division Es: " << a << " / " << b << " = " <<a/b <<endl <<endl;
  180.               system("pause");
  181.               return 0;
  182.               system("CLS");
  183.             break;
  184.            
  185.             case 6:
  186.                cout << "Fin Del Programa";
  187.             break;
  188.                                        
  189.                                        
  190.          }
  191.        }while(x>6);
  192. }
  193.  
  194.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #10 en: Viernes 11 de Abril de 2008, 08:24 »
0
A. Lee algun libro o toma un curso de programacion.

B. Si todavia queres usar goto entonces hacelo simple DEPURA tu programa, el error no esta ahi ni por casualidad.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #11 en: Viernes 11 de Abril de 2008, 14:40 »
0
Perdona pero es que todavía soy principiante, y supiera que hacer o que otra función usar pues no estaría aquí peguntando

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #12 en: Viernes 11 de Abril de 2008, 16:09 »
0
Cita de: "Jejasa"
Perdona pero es que todavía soy principiante, y supiera que hacer o que otra función usar pues no estaría aquí peguntando
Es IRRELEVANTE, si TU programa no se comporta como esperas que lo haga entonces DEPURALO para saber exactamente que esta haciendo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #13 en: Viernes 11 de Abril de 2008, 16:28 »
0
Perdona Si dije algo malo, pero es que eso de que "Lee un libro o Toma Un curso De Programación" no me pareció correcto,
de todas maneras disculpa.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #14 en: Viernes 11 de Abril de 2008, 16:45 »
0
Cita de: "Jejasa"
Perdona Si dije algo malo, pero es que eso de que "Lee un libro o Toma Un curso De Programación" no me pareció correcto,
de todas maneras disculpa.
Lo siento sino te parecio correcto pero simplemente me parece que lo necesitas (y me lo confirmas diciendome que sos principiante). No hace falta que pidas perdon por nada ;)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #15 en: Sábado 12 de Abril de 2008, 00:55 »
0
Cita de: "Jejasa"
Perdona Si dije algo malo, pero es que eso de que "Lee un libro o Toma Un curso De Programación" no me pareció correcto,
de todas maneras disculpa.
Pues de hecho el consejo no es malo, pues el que uses goto, indica que no has tomado o leido un buen libro de programacion, en la programacion estructurada el uso de goto no se aconseja, pues genera lo que se llama codigo spaghetti (o sea, un codigo que tiene tantos goto (saltos) que es imposible o casi imposible seguir el curso de ejecucion).

Lo que hiciste lo puedes hacer sin goto, es cosa de que estructures tu programa de otra manera.

Y bueno, normalmente no hacemos codigos, pero en vista de que se ve que no tienes ni idea de donde empezar, te pondre una ayuda (diria una super ayuda), un codigo que convierte de decimal a binario, con esto supongo que podras hacer todo lo demas. Si no eres capaz de hacerlo, pues lamento decirte que te equivocaste de carrera, pues la programacion requiere mente analitica y capacidad para resolver problemas, y si no puedes hacer problemas simples, mucho menos podras resolver un problema que te den en una empresa una vez que ya estes trabajando. Espero no me lo tomes a mal.

Código: Text
  1.  
  2. void ConvertirDecimalABinario(int num, char binario[])
  3. {
  4.   char temp[80];
  5.  
  6.   int i = 0;
  7.  
  8.   /// Repetir la division entre 2 hasta que el cociente sea cero
  9.   while ((num / 2) != 0)
  10.   {
  11.     /// Toma el residuo de la division, lo convierte a caracter,
  12.     /// y lo guarda en la cadena
  13.     temp[i] = (num % 2) + 48;
  14.  
  15.     /// Obtiene el cociente de la division, que sera el siguiente
  16.     /// numero a dividir.
  17.     num = num / 2;
  18.  
  19.     /// Para llevar el control de cuantos numeros hay en la cadena
  20.     i++;
  21.   }
  22.  
  23.   /// Obtengo el ultimo residuo
  24.   temp[i] = (num % 2) + 48;
  25.  
  26.   /// Agrego el fin de cadena
  27.   temp[i+1] = '\0';
  28.  
  29.   /// Ciclo para invertir la cadena, pues los digitos quedan invertidos
  30.   int j = 0;
  31.   for (i = strlen(temp) - 1; i >= 0; i--)
  32.   {
  33.     binario[j] = temp[i];
  34.     j++;
  35.   }
  36.  
  37.   /// Agrego el fin de cadena
  38.   binario[j] = '\0';
  39.  
  40. }
  41.  
  42.  

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Jejasa

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Operaciones Con Varios Sistemas De Numeros
« Respuesta #16 en: Sábado 12 de Abril de 2008, 01:11 »
0
lo que sucede es que no pude estar en algunas de las primeras clases y cuando me pusieron este programa no tenia mucha idea de que hacer, pero esto me ha aclarado muchas cosas,
Gracias por su paciencia. y voy a mirar como modifico el programa.