elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
18 Noviembre 2008, 11:11  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  una duda respecto a una parte de un codigo...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: una duda respecto a una parte de un codigo...  (Leído 602 veces)
renenegrete

Desconectado Desconectado

Mensajes: 5


Ver Perfil
una duda respecto a una parte de un codigo...
« en: 16 Noviembre 2007, 06:37 »

hola .. solo unas preguntillas algo facil jejej eso creo .. bueno he intentado descifrar el codigo pero no entiendo mucho ... soy nuevo en estas ondas...


mis preguntas son:

como funcionan esta parte del codigo ... 
n1 /= base1;
n2 += (alg*mult);
mult *= base2; ...

solo "   /=    +=   *=  "  ?


en esta parte del codigo..  printf("%lu",conversor(n,2,10)); ...   como funciona la parte que sigue despues de % ... yo solo conocia .. %d %s %c pero no..  "%lu"      tambien la parte que sigue del "   conversor(n,2,10));  "  ?


y por ultimo no entiendo esta parte del for    "  for( ;; )  "  ... cual es su funcion?



espero alguien me pueda ayudar se lo agradeceria mucho ... gracias  y saludos...

Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

char menu()
{
   char c;

   printf("1 - Decimal -> Binario\n");
   printf("2 - Decimal -> Octal\n");
   printf("3 - Decimal -> Hexadecimal\n");
   printf("4 - Binario -> Decimal\n");
   printf("5 - Binario -> Octal\n");
   printf("6 - Binario -> Hexadecimal\n");
   printf("7 - Octal -> Decimal\n");
   printf("8 - Octal -> Binario\n");
   printf("9 - Octal -> Hexadecimal\n");
   printf("A - Hexadecimal -> Decimal\n");
   printf("B - Hexadecimal -> Binario\n");
   printf("C - Hexadecimal -> Octal\n");
   printf("S - Salir\n");

   printf("\nSeleccione opcion: ");
   c = getche();
   return c;
}


unsigned long conversor(unsigned long n1,int base1,int base2)
{
   unsigned long alg,mult=1,n2=0;
   while (n1 > 0)
   {
      alg = n1 % base1;
      n1 /= base1;
      n2 += (alg*mult);
      mult *= base2;
   }
   return n2;
}

main()
{
   unsigned long n;
   char op;
   

   for(;;)
   {
      system("cls");
      op = menu();
      system("cls");

      switch(op)
      {
         case '1':
       printf("Conversor Decimal -> Binario\n");
            printf("Introduza un numero Decimal: ");
       scanf("%lu",&n);
       printf("Numero Binario correspondente: ");
       printf("%lu",conversor(n,2,10));
            break;

         case '2':
       printf("Conversor Decimal -> Octal\n");
            printf("Introduza um numero Decimal: ");
       scanf("%lu",&n);
       printf("Numero Octal correspondente: ");
       printf("%lo",n);
            break;

         case '3':
       printf("Conversor Decimal -> Hexadecimal\n");
            printf("Introduza um numero Decimal: ");
       scanf("%lu",&n);
       printf("Numero Hexadecimal correspondente: ");
       printf("%lx",n);
            break;

         case '4':
       printf("Conversor Binario -> Decimal\n");
            printf("Introduza un numero Binario: ");
       scanf("%lu",&n);
       printf("Numero Decimal correspondente: ");
       printf("%lu",conversor(n,10,2));
            break;

         case '5':
       printf("Conversor Binario -> Octal\n");
            printf("Introduza un numero Binario: ");
       scanf("%lu",&n);
       printf("Numero Octal correspondente: ");
        printf("%lo",conversor(n,10,2));
            break;

         case '6':
       printf("Conversor Binario -> Hexadecimal\n");
            printf("Introduza un numero Binario: ");
       scanf("%ld",&n);
       printf("Numero Hexadecimal correspondente: ");
       printf("%lx",conversor(n,10,2));
            break;

         case '7':
       printf("Conversor Octal -> Decimal\n");
            printf("Introduza un numero Octal: ");
       scanf("%lo",&n);
       printf("Numero Decimal correspondente: ");
       printf("%lu",n);
            break;

         case '8':
       printf("Conversor Octal -> Binario\n");
            printf("Introduza un numero Octal: ");
       scanf("%lo",&n);
       printf("Numero Binario correspondente: ");
       printf("%lu",conversor(n,2,10));
            break;

         case '9':
       printf("Conversor Octal -> Hexadecimal\n");
            printf("Introduza un numero Octal: ");
       scanf("%lo",&n);
       printf("Numero Hexadecimal correspondente: ");
       printf("%lx",n);
            break;

         case 'A':
         case 'a':
       printf("Conversor Hexadecimal -> Decimal\n");
            printf("Introduza un numero Hexadecimal: ");
       scanf("%lx",&n);
       printf("Numero Decimal correspondente: ");
       printf("%lu",n);
            break;

         case 'B':
         case 'b':
       printf("Conversor Hexadecimal -> Binario\n");
            printf("Introduza un numero Hexadecimal: ");
       scanf("%lx",&n);
       printf("Numero Binario correspondente: ");
       printf("%lu",conversor(n,2,10));
            break;

         case 'C':
         case 'c':
       printf("Conversor Hexadecimal -> Octal\n");
            printf("Introduza un numero Hexadecimal: ");
       scanf("%lx",&n);
       printf("Numero Octal correspondente: ");
       printf("%lo",n);
            break;

         case 'S':
         case 's':
            exit(0);
            break;

         default:
            printf("Opcion invalida!");
      }
      getch();
   }
}
En línea
z0t0

Desconectado Desconectado

Mensajes: 474


Slackware


Ver Perfil WWW
Re: una duda respecto a una parte de un codigo...
« Respuesta #1 en: 16 Noviembre 2007, 08:48 »

Buenas,  :P

//1
n1 /= base1; // n1 = n1 / base1;

n2 += (alg*mult); // n2 = n2 + (alg*mult);

mult *= base2; // mult = multi * base2;

//2

printf("%lu",conversor(n,2,10));

conversor(n,2,10); = Conversor sera una funcion creada por el es lo mas seguro, n, 2, 10 son los argumentos.

%lu = la "l" de long entero, la "u" de unsigned .

PD: no estoi seguro de lo ultimo.

Un Saludo.
En línea


The real mckenzies && the nofx.
BEATMASTER

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: una duda respecto a una parte de un codigo...
« Respuesta #2 en: 17 Noviembre 2007, 04:15 »

la parte de " for( ;; ) " se llama for infinito o sin limites ejecutara indeterminadamente el ciclo hasta que encuentre alguna rutina de salida dentro del mismo ciclo como un break; o alguna otra manera de abandonar el ciclo (puede igual nunca abandonarlo pero no hay muchas cosas que requieran nunca terminar :P )
en tu caso la opcion que le da salida al bucle infinito es esta  :
case 'S':
case 's':
exit(0);   <---- termina el programa
break;   

« Última modificación: 17 Noviembre 2007, 04:23 por BEATMASTER » En línea
neo007

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Re: una duda respecto a una parte de un codigo...
« Respuesta #3 en: 17 Noviembre 2007, 04:40 »

si lo que quieres es hacer eso de manera mas simple deberia probar lo siguiente....

#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;

int main()
{

    int numero;
   
    cout << "Introduzca un numero:" << endl;
    cin >> numero;
    cout << "El valor introducido en base 10 es: " << numero << endl;
   
    cout << resetiosflags(ios::dec);
    cout << setiosflags(ios::oct);
    cout << "en base octal es: " << numero << endl;
   
    cout << resetiosflags(ios::oct);
    cout << setiosflags(ios::hex);
    cout << "y en base hexadecimal es: " << numero << endl;
    cout << setiosflags(ios::uppercase|ios::showbase);
    cout << "utilizando los manipuladores uppercase y showbase" << " el valor es: " << numero << endl;
   
    cout << resetiosflags(ios::uppercase|ios::showbase);
    cout << resetiosflags(ios::hex);
    cout << setiosflags(ios::showpos|ios::showpoint|ios::fixed);
    cout << "Utilizando los manipuladores showpos,"
      " showpoint y fixed: " << (float)numero << endl;
   
    cout << resetiosflags(ios::showpos|ios::showpoint|ios::fixed);
    cout << "Finalmente el valor es " << numero << endl;
   

    system("pause");

    return 0;
}




ya solamente adaptas el programa este a tus necesidades.... así no tendrás que hacer la conversion de valores mediante algoritmos y solo con manipuladores de datos... espero ser de ayuda  :D
En línea
renenegrete

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: una duda respecto a una parte de un codigo...
« Respuesta #4 en: 17 Noviembre 2007, 05:20 »

muchas gracias a z0t0 BEATMASTER y neo007... y neo007 la verdad solo quiero entender el codigo... imaginate si no entiendo el codigo que les puse quieres que entienda en tuyo ... lo siento pero la verdad no entendi nada... pero de todos modos gracias ...
En línea
SirLanceCC

Desconectado Desconectado

Mensajes: 1.059


Equipo de Traducción


Ver Perfil WWW
Re: una duda respecto a una parte de un codigo...
« Respuesta #5 en: 17 Noviembre 2007, 16:34 »

entonces for( ;; ) sería equivalente a poner while(1)??
Yo ya había usado while(1) y lo traduzco como "siempre".
En línea

neo007

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Re: una duda respecto a una parte de un codigo...
« Respuesta #6 en: 20 Noviembre 2007, 05:24 »

muchas gracias a z0t0 BEATMASTER y neo007... y neo007 la verdad solo quiero entender el codigo... imaginate si no entiendo el codigo que les puse quieres que entienda en tuyo ... lo siento pero la verdad no entendi nada... pero de todos modos gracias ...

bno yo utilizo lo que son los manipuladores... y si revisas el codigo se vuelve algo intuitivo.....
resetiosflags(ios::dec); //aqui me dice que utilizo valores en decimal
setiosflags(ios::oct); //aqui que la salida d datos k obtendré será en octal.... ya despue
                                //ya despues solo imprimo la variable



con lo que dice -| Sir_Lance |-
yo creo que no.. porque nos marcaria error ya que no hay comparacion en el while..... y se traduce "mientras que" <comparacion>.............
En línea
(*<>*) HaCKinG_SkrIP

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: una duda respecto a una parte de un codigo...
« Respuesta #7 en: 20 Noviembre 2007, 11:35 »

En referente al la relación for-while. 

Corregirme si me equivoco:

*condición_1--> cond1, condición_2---> cond2     // Sentencia_inicial1--> senti1, etc


************************************

for(senti1, senti2  ; cond1, cond2 ; i++, j--, t+=2)
    {
      grupo_de_sentencias;
     }

*************************************

Con while*********
senti1;
senti2;

while((cond1) && (cond2))
    {
      grupo_de_sentencias;
     
     i++;   i--;   t+=2;
     }

***********************

En principio el for suele ser más "rápido de utilizar", pero entiendo que depende de cada situación y lo que queramos hacer.

En cuanto a lo de "algoritmo infinito" o bucle.

Yo tenia entendido que para hacer con un for un buvle infinito era así: 

 for( ;1; )
 {    sentencias;   }

Y con while pues -->  while(1)
                               {  sentencias;  }

Más o menos es así, no?
En línea

Karman

Desconectado Desconectado

Mensajes: 260



Ver Perfil WWW
Re: una duda respecto a una parte de un codigo...
« Respuesta #8 en: 20 Noviembre 2007, 14:43 »

lo del for es así:

for(senti1, senti2  ; cond1 & cond2 ; i++, j--, t+=2)
{ grupo_de_sentencias; }

y lo del bucle infinito:

for(;;)
{  sentencias;  }

while(1)
{  sentencias;  }

Donde el primero es más eficiente, porque no se comprueban condiciones, solo se da vueltas, mientras que el while, internamente comprueba en cada vuelta la condición

S2
En línea

renenegrete

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: una duda respecto a una parte de un codigo...
« Respuesta #9 en: 01 Diciembre 2007, 06:17 »

ahora mi otra pregunta es como rayos imprime las letras le la parte hexadecimal???? gracias a todos los que han contestado por su ayuda
En línea
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: una duda respecto a una parte de un codigo...
« Respuesta #10 en: 01 Diciembre 2007, 06:23 »

Código:
int i=255;
printf("0x%x",i); // imprime 0xFF
En línea

Karman

Desconectado Desconectado

Mensajes: 260



Ver Perfil WWW
Re: una duda respecto a una parte de un codigo...
« Respuesta #11 en: 01 Diciembre 2007, 06:27 »

con:

scanf("%lx",&n);

el %x y %X se imprime el contenido de una variable en hexadecimal, la "l" lo único que hace es modificar la cantidad de números a imprimir (long)

S2
En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC