elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 132
281  Programación / Programación C/C++ / Re: Binomio de Newton, y triángulo de Pascal en: 20 Marzo 2014, 16:41 pm
En informática decimos "recursividad" para referirnos a una función que se llama a sí misma. Pero en el tema de las sucesiones numéricas, la "recursividad" es cuando los términos de la sucesión se generan a partir de los términos anteriores. Por ejemplo la famosa sucesión de Fibonacci a0, a1, a2, ... donde

a0 = 0, a1 = 1

y an = an-1 + an-2 para n>=2 (cada término es la suma de los dos anteriores). Queda entonces:

0,  1,  2,  3,  5,  8,  ...

.......................................................


¡¡¡PERO POR DIOS!!! , en que lugar estas dejando las Matemáticas.

Estimado yoel_alejandro eso que comentas tampoco es recursividad en matemáticas, es lo que se llama ley de recurrencia en contraposición a la llamada fórmula del término general. Es como si la fórmula que da el término general de una sucesión aritmética,  an-1 = a1 +(n-1)d quisieras pasarla como recurrencia, que no recursividad. Pues no, es lo que llamamos fórmula del término general y, aunque está obtenida a partir de un término anterior, no por ello se acuña en Mates el término recursividad, al menos por estos lares, no sé si por ahí le cambiáis el nombre.


Así que NO,  ivancea96 no a aplicado recursividad., pero.....

¡¡¡ivancea96 OS LA HA PEGADO!!!

y de paso yoel_alejandro

ya que ambos NO DIBUJAN EL TRIÄNGULO, tan sólo escriben una línea de una potencia, más exactamente la 10. ¡¡¡Trampocillos!!!, que son unos trampocillos.

Eso sí, a partir de lo que tiene si que pueden aplicar fácilmente recursividad para obtener el dichosito triángulo, tan sólo tendrán que ajustar los espacios, que no es poco.


Casi, casi cuela, pero NO......

¡¡¡¡ Saluditos! ..... !!!!



EDITO: Esto SI es un triángulo de Pascal con recursividad el clásico podríamos llamarlo y "cortito" xD:


Código
  1. #include<iostream>
  2. #include <iomanip>
  3. #define m   12
  4. using namespace std;
  5.  
  6. int factorial(int n)
  7. {
  8.    if(n<2)
  9.        return 1;
  10.    else
  11.        return n * factorial(n-1);
  12. }
  13.  
  14. int combinacion(int n, int r)
  15. {
  16.    if(r==1)
  17.        return n;
  18.    else
  19.    {
  20.        if(n==r)
  21.            return 1;
  22.        else
  23.            return factorial(n) / (factorial(r) * factorial(n - r));
  24.    }
  25. }
  26.  
  27. int main()
  28. {
  29.    for(int i=0; i<m; i++)
  30.    {
  31.        for(int z=0; z<m-i; z++)
  32.            cout << setw(3) << "";
  33.       for (int j = 0; j <= i; j++)
  34.        cout << setw(6) << combinacion(i,j);
  35.  
  36.        cout << endl;
  37.    }
  38.    return 0;
  39. }

Pero no es lo siguiente que había propuesto, a partir de un array unidimensional. Aunque ya puestos, también se admite uno con recursividad a partir de números combinatorios, pero a partir de Vm,n/Pn. Todo es ponerse a ello ....si te interesa y "estas preparado" en programación, que el  lenguaje ya sé que lo domináis a fondo  que todo es empezar, no hace falta buscar retos muy complejos.

Y el código que pongo es primitivo, como el de yoel_alejandro porque usa factoriales y su cálculo se "sale" de las posibilidades del C/C++ en cuanto se aumenta más allá de trece o por ahí y, claro, salen números "raritos".

282  Programación / Programación C/C++ / Re: funcion de conversion de bases en: 20 Marzo 2014, 06:47 am

Porque el valor es el mismo pero '0' es mas claro.

Un saludo

¿Es que hay diferencia?.

Yo en particular lo he dejado porque así lo había puesto el autor del tema, además de que me manejo con cierta soltura con los códigos ASCII y es un forma de ir re teniéndolos.

Pero volviendo al principio, ¿Existe alguna diferencia de eficiencia o algo por el estilo?. Aún estoy en los inicios en este mundillo de la programación y me gustaría sentar bien las bases y, si alguien de tu nivel pone eso, por algo será.



¡¡¡¡ Saluditos! ..... !!!!






 
283  Programación / Programación C/C++ / Re: buenas, estoy empezando en programacion en c++ y me pusieron un ejercicio en: 19 Marzo 2014, 23:07 pm
no se como realizarlo... quería saber si me podrían ayudar :)

4.Un almacén de Muebles cobra a sus clientes el último día de cada mes.
    Si el cliente paga dentro de los primeros diez días del siguiente mes obtendrá
     un descuento del 2% de la deuda o bien de $20.000 dependiendo de cuál valor sea el mayor.
    Si el cliente paga dentro de los siguientes diez días no tendrá derecho a ningún descuento.
    Si paga dentro de los restantes diez días del mes tendrá un recargo del 2% de la deuda o
     bien de $20.000 dependiendo de cuál valor sea el menor.
Por cada cliente se tienen los siguientes datos:
    Número de identificación.
    Cantidad adeudada.
Elabore un algoritmo que tomando como base los datos del cliente y la fecha actual, calcule
la cantidad que tendrá que pagar un cliente cualquiera.

¡Vamos hombre, anímate!, que todo en esta vida es empezar sin miedo y más cuando hay gente dispuesta a ayudarte en las dudas y caminos sin salida que te encuentres.

Supongo que tienes una base elemental de C, así que ya sabes empezar un programa y como terminarlo:


Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. /* instrucciones*/
  6.  
  7.  return 0;
  8. }
  9.  

* Entre las instrucciones tienes que declarar las variables que vas a usar. Como ejemplo:

int dias,i,:
float /*porque pueden ser decimales*/ cobro, descuento=0.02, recargo=20000,min_para_descuento=....:


* necesitaras un par de scanf para introducir datos como los de las variables cobro día en que paga, etc;

Y así se va haciendo camino.

Cuando tengas un código mínimo lo cuelgas y te ayudaremos dentro de nuestras posibilidades y conocimientos, pero cuelga los avances que hagas para que te ayudemos.

 
¡¡¡¡ Saluditos! ..... !!!!


284  Programación / Programación C/C++ / Re: funcion de conversion de bases en: 19 Marzo 2014, 20:07 pm
........................................................................
  
Citar
int num_decimal = 0;
  .......................................................................

Aunque por eficiencia, yo lo haría sin la función pow (tal y como ha hecho Leo).

Gracias por el último comentario y el problema base  radica, como ya comenté, en que también declaras en tu código como int, en lugar de float o double, a la variable num_decimal .

Y no te preocupes por tu vista, es excelente, te lo asegura un declarado alumno incondicional tuyo.

Un fuerte abrazo campeón.


¡¡¡¡ Saluditos! ..... !!!!




285  Programación / Programación C/C++ / Re: funcion de conversion de bases en: 19 Marzo 2014, 19:49 pm
Me has entendido mal Leo, no me referia que lo hicieses de mala fe ^^

Lo que quería decir esque me comentas que la salida es erronea y me la enseñas:

Es exactamente la salida que pones en tu primer post. No entiendo, ¿acaso no era esa la salida correcta? :huh:

No ya que la entrada era el número "65536" y devolvía  el "65535".

¡¡¡¡ Saluditos! ..... !!!!


286  Programación / Programación C/C++ / Re: problemas con else no puedo compilar en: 19 Marzo 2014, 19:45 pm
En realidad, el "IF", y todo el código que entra dentro de este, es como solo 1 instrucción para el "FOR". Ya tiene sus propias llaves. Era correcto.

Bien visto ivancea96 . Ya he editado el código con tu observación.

¡¡¡¡ Saluditos! ..... !!!!


287  Programación / Programación C/C++ / Re: problemas con else no puedo compilar en: 19 Marzo 2014, 18:36 pm
Antes que nada, cuando le das a GeSHi elige las etiquetas de C++, así el código sale coloreado y es más fácil de seguir y justito en medio de las dos etiquetas code que te salen, repito, justito en medio, pegas tu código.

Además de lo que ya te han comentado sólo un par de observaciones:

* Si un for, if else...se componen de una sola instrucción, no son necesarias las llaves, sólo consigues recargar el códigó

Por ejemplo en:


Código
  1. if(c==2);{
  2.          cout<<"el numero es primo"<<endl;
  3.          }
  4. else {
  5.         cout<<"no es un numero primo "<<endl;
  6.          }

te sobran las llaves. No están mal, no, pero lo que te dije, recargas el código innecesariamente, además te falla la indentación sin ninguna necesidad.

* Y si el "cuerpo" del for, while, if, ....se componen de varias líneas entonces es obligado el poner las llaves.

Por ejemplo en tu código:


Código
  1. for( i=1; i<=n;i++);
  2. if (n%i==0)c++;
  3.  

además de sobrarte, como ya te comentaron el punto y coma del for, sólo te queda por separa en líneas diferentes, para una mejor claridad:

Código
  1. for( i=1; i<=n;i++);
  2. if (n%i==0)c++;
  3.  

amén de que no es buena praxis el usar la misma línea para lo que en realidad son dos  juegos de instrucciones:así no:

Código
  1. f (n%i==0)c++;

así sí:

Código
  1. for( i=1; i<=n;i++)
  2.      if (n%i==0)
  3.        c++;
  4.  



Un último detalle, la variable "c" es lo que podríamos denominar un acumulador ya que "partiendo de un valor inicial" se le van sumando incrementos en este caso concreto, c++, y sin embargo tú en la declaración no tienes inicializada  esta variable:


Código
  1. int n,i,c;

deberías haberle dado a "c" el valor inicial de cero para luego ir sumando con "c++". Al no hacerlo así es muy probable, todo depende del compilador ya que algunos por defecto inicializan las variables a cero por defecto, aunque no es lo usual, como decía es muy probable que la variable tome lo que se llama un valor basura o aleatorio y ahí te fallará siempre la condición de c==2 por culpa de haber tomado c un valor inicial extraño.

Además no dejes de indentar o sangrar todo el código con el mismo criterio.

Te paso el código con todas las observaciones:


Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. //Realice un programa en C++ que lea un numero N, entero y positivo, que diga si N es un numero primo o no. Los números primos son aquellos que solo son divisibles por 1 y por ellos mismos. .//
  8.  int n,i,c=0;
  9.  cout<<"ingrese un numero"<<endl;
  10.  cin>>n;
  11.  for( i=1; i<=n;i++)
  12.    if (n%i==0)
  13.      c++;
  14.  if(c==2)
  15.      cout<<"el numero es primo"<<endl;
  16.  else
  17.    cout<<"no es un numero primo "<<endl;
  18.  system("pause");
  19.  return EXIT_SUCCESS;
  20. }

Otra cosa es el criterio que has seguido para comprobar si el número es o no primo. Si quieres mejorarlo busca en este mismo foro o googlea un poco y obtendrás códigos más eficientes que el que estas usando.

¡¡¡¡ Saluditos! ..... !!!!



EDITADO con la observación de ivancea96
288  Programación / Programación C/C++ / Re: funcion de conversion de bases en: 19 Marzo 2014, 17:53 pm
La salida a tu código en mi ordenadorr y compilador:

Citar
6
36
536
5536
65535
EN FUNCION: [65535]
6
36
536
5536
65535
EN FUNCION: [65535]
EN MAIN: 65535

Process returned 0 (0x0)   execution time : 0.028 s
Press any key to continue.



¿Me has puesto la salida bien? ¿? :huh:

Te tengo en una muy alta estima, de corazón, como para jugar con esos detalles.

En realidad creo que todo acaba dependiendo del compilador. Fíjate que  a eferion el código de m@o_614 le dio el resultado correcto y sin embargo a  m@o_614  y a mi nos daba mal. ¿¿¿¿¿¿?????..... No encuentro otra explicación que todo acaba dependiendo del compilador y versión usado.

Un fuerte abrazo y todos mis respetos hacia ti.


¡¡¡¡ Saluditos! ..... !!!!


289  Programación / Programación C/C++ / Re: tableros en: 19 Marzo 2014, 16:44 pm
No lo comentaba como algo a añadir en el proceso de cifrado.

Yo me refería para que el texto cifrado pudieses pegarlo en el foro sin distorsión.

Básicamente coger el código ya cifrado y pasarlo a base64 para que el código resultante no tenga caracteres extraños que el foro pueda modificar.

.....Tá bien, ahí va....

Citar
XyYjODczNTtMOVNNJiM4NTk1O0UmIzk2NTA7JiM5NzkyOyQtLEAmIzk2NTg7JiM5NTc0O7ImIzg1
OTQ7KSKvMDImIzk2NTA7ICAgICAgICBoJiM5NjQ0OyEmIzk1MTY7J6evJ1ynuFBeXCYjOTc4Nzsm
JiM5NTc3Oy+kYdAmIzgyNTI74zApsiYjODI1MjtSsNJKWiYjODU5NDsiJiM4NTk1OyYjOTc5NDsw
YahoOCsmIzg1OTU7NtnP/iYjOTc5NDsNCmEmIzk3OTQ7JiM5NTMyO0c4YSYjODU5Nju2JyYjOTUz
MjvL0jNCtiYjOTY2ODsmIzg1OTI7JiM5ODM1OyYjOTYwNDtvJiM5NDc0OyYjOTYwODtUMU0mIzk2
NTg7JiM4NTk0O0MnL0jQuyYjOTY1MDtWUzUmIzk2MTk7JiMzMDU7ICYjODU5NDtMuSYjMzA1OyYj
OTU1Njs/piYjOTQ4NDu3JiM5NjMyOyYjOTYxODtpJiM4MjE1O/VfJiM4NTk1OyYjODU5NjsmIzk2
Njg7KSCyJiM4NTk3OyYjOTc5MjtQJiM4NTk1OzlALCYjODU5NztoJiM5NzkyO7LIW7PQJiM5ODI0
OyYjOTUyNDulQw0KzyYjOTY1ODslJiM4MjE1O9964yBfJiM5NjA4O2bNJiM5ODI5O2nPJiM5NDg4
OyYjOTUzMjv1aCIhJiM5NjYwOyYjOTY0NDs9MbcmIzMwNTsmIzk4Mjk7Rbm7JiM4MjUyO8DSJiM5
ODI0OyYjOTQ5NjtQZ1UmIzk4MzU7YSYjOTc4NzsmIzk2NDQ7LGPjpyYjOTU1MjtMpvWvbt6ibSA1
Okkk2SYjODI1MjsmIzk2NTg7TiJSJiM5NTgwOyYjODIxNTsgJiM5NTgwO/4uaiYjODczNTu0JiM4
NTk1OyYjOTY1MDvAJA0KR6c2LEnb1SYjODU5Nzsz8CYjOTQ5MjtNXiYjODU5MztqZsjbQg0KJiM5
NjU4Oz62JiM4NTk1Oz0mIzk2Njg7QDEmIzk0OTY7JyYjOTQ3NDsmIzk0ODg7LbUmIzk2MDg7Tk5S
PrYmIzk3ODY7JiM5ODM1OyQmIzk3ODg72yPBsSQmIzk0ODQ7uGNOODtGTG31p1ZF3yYjOTYxNzsm
Izk3OTI7SiYjODU5MztLZnnGvdko


¡¡¡¡ Saluditos! ..... !!!!





Tal como prometí cuelgo la respuesta a la petición de cómo formar una matriz de 8x8 con los elementos centrales, es decir los cuadraditos. La salida de dicho código es la indicada justamente en el mensaje anterior:

* Lo codificado:


Código
  1. char d[8][8][4];
  2.  for (l=0;l<8;l++){
  3.    for (j=0;j<8;j++){
  4.      for (i=1;i<tam;i+=2){
  5.        if (k<3){
  6.          d[l][j][k]=219;
  7.          k++;
  8.        }
  9.        else{
  10.          d[l][j][k]='\0';
  11.          k=0;
  12.        }
  13.      }
  14.    }
  15.  }
  16.  
  17.  
  18.  for (i=0;i<8;i++){
  19.    printf("\t\t");
  20.    for (j=0;j<8;j++){
  21.      printf("%s  ",d[i][j]);
  22.    }
  23.    puts ("\n");
  24.  }
  25.  putchar ('\n');
  26.  

Y el código entero:

Código
  1. /**
  2. a0=linea superior
  3. a1=lineas intermedias
  4. a2=linea inferior
  5. a3=lineas laterales
  6.  
  7.  
  8.    218=&#9484;  196=&#9472;  194=&#9516;  191=&#9488;  179=&#9474;  195=&#9500;
  9.  
  10.    197=&#9532;  180=&#9508;  192=&#9492;  193=&#9524;  217=&#9496;  219=&#9608;
  11.  
  12. **/
  13.  
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <windows.h>
  18. #include <time.h>
  19.  
  20. #define CUADRADITOS3 "\xdb\xdb\xdb"
  21. #define CUADRADITOS 179,219,179,219,179,219
  22. #define CUADRADITOS1 "\xdb\xdb\xdb"
  23. #define CUADRADITOS2 "\xfe "
  24. #define ULCORNER 218,196,196,196,196,196    /* upper-left corner, esquina superior izquierda y tres guiones*/
  25. #define RTEE     195,196,196,196,196,196   /*right-tee, letra 'T' apuntando hacia la derecha y tres guiones*/
  26. #define CROSS    197,196,196,196,196,196    /* crossover, cruz grande (de mayor tamaño que el signo '+' y tres guiones) */
  27. #define LTEE     180                /* left-tee, letra 'T' apuntando hacia la izquierda */
  28. #define BTEE     194,196,196,196,196,196   /* bottom-tee, letra 'T' apuntando hacia abajo y tres guiones*/
  29. #define URCORNER 191                /* upper-right corner, esquina superior derecha */
  30. #define LLCORNER 192,196,196,196,196,196   /* lower-left corner, esquina inferior izquierda y tres guiones */
  31. #define TTEE     193,196,196,196,196,196    /* top-tee, letra 'T' apuntando hacia arriba y tres guiones */
  32. #define LRCORNER 217                /* lower-right corner, esquina inferior izquierda */
  33. #define VLINE    CUADRADITOS      /*vertical line, linea vertical y tres espacios*/
  34. #define VLINE_   179                /* vertical line, linea vertical */
  35. #define TOKEN    219                /* ficha o pieza */
  36.  
  37. int main(){
  38.  int i,j,k=0,l,tam,cont=0;
  39.  char a[]="\xfe ";
  40.  char b[8][8][6];
  41.  
  42. /******* AQUI MATRIZ CUADRADITOS=254=xfe 8X8 *******/
  43. /** SOLO CUADRADITOS SIN LINEAS INTERMEDIAS **/
  44.  
  45.  /*for (i=0;i<8;i++)
  46.     for (j=0;j<8;j++)
  47.       strcpy( b[i][j], a );
  48.   for (i=0;i<8;i++){
  49.     for (j=0;j<8;j++){
  50.       printf("%s ",b[i][j]);
  51.     }
  52.     putchar ('\n');
  53.   }*/
  54.  int a1[]={RTEE,CROSS,CROSS,CROSS,CROSS,CROSS,CROSS,CROSS,LTEE},
  55.      a0[]={ULCORNER,BTEE,BTEE,BTEE,BTEE,BTEE,BTEE,BTEE,URCORNER},
  56.      a2[]={LLCORNER,TTEE,TTEE,TTEE,TTEE,TTEE,TTEE,TTEE,LRCORNER},
  57.      a3[]={CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS};
  58.  tam=sizeof (a2)/sizeof (a2[0]);
  59.   /****** IMPRIMIMOS LA MATRIZ TOTAL  ************/
  60.  
  61.  /** linea superior **/
  62.  printf("\t");
  63.  for (j=0;j<tam;j++)
  64.    printf("%c",a0[j]);
  65.  putchar ('\n');
  66.  /** linea lateral **/
  67.  printf("\t");
  68.  for (j=0;j<tam;j++)
  69.    printf("%c",a3[j]);
  70.  /** salto de linea...  **/
  71.  /** y dibujo intermedias y laterales  **/
  72.  
  73.  for (i=0;i<7;i++){
  74.    putchar ('\n');
  75.    printf("\t");
  76.    for (j=0;j<tam;j++)
  77.        printf("%c",a1[j]);
  78.      putchar ('\n');
  79.      printf("\t");
  80.      for (j=0;j<tam;j++)
  81.          printf("%c",a3[j]);
  82.  }
  83.  /** linea inferior **/
  84.  putchar ('\n');
  85.  printf("\t");
  86.  for (j=0;j<tam;j++)
  87.    printf("%c",a2[j]);
  88.  putchar ('\n');
  89. /******* AQUI LA NEW MATRIZ SOLA DE CUADRADITOS 8X8 *******/
  90. /*********** A PARTIR DE LA MATRIZ INICIAL  ***************/
  91.  
  92.  puts("\t\tA PARTIR DE LA MATRIZ DE 8X8\n");
  93.  char d[8][8][4];
  94.  for (l=0;l<8;l++){
  95.    for (j=0;j<8;j++){
  96.      for (i=1;i<tam;i+=2){
  97.        if (k<3){
  98.          d[l][j][k]=219;
  99.          k++;
  100.        }
  101.        else{
  102.          d[l][j][k]='\0';
  103.          k=0;
  104.        }
  105.      }
  106.    }
  107.  }
  108.  
  109.  
  110.  for (i=0;i<8;i++){
  111.    printf("\t\t");
  112.    for (j=0;j<8;j++){
  113.      printf("%s  ",d[i][j]);
  114.    }
  115.    puts ("\n");
  116.  }
  117.  putchar ('\n');
  118.  
  119. /*************** OBTENCION DIRECTA ***************/
  120.  /******* OTRA 8X8 *******/
  121.  
  122.  puts("\t\tDE FORMA DIRECTA\n");
  123.  for (i=0;i<8;i++){
  124.    printf("\t\t");
  125.    for (j=0;j<8;j++){
  126.      printf("%s  ",CUADRADITOS3);
  127.    }
  128.    puts ("\n");
  129.  }
  130.  putchar ('\n');
  131.  
  132.  
  133.  
  134. /******* AQUI UNA MATRIZ SOLA DE CUADRADITOS=254=xfe 8X8 *******/
  135.  
  136.  
  137.  for (i=0;i<8;i++){
  138.    printf("\t\t\t");
  139.    for (j=0;j<8;j++){
  140.      printf("%s ",CUADRADITOS2);
  141.    }
  142.    putchar ('\n');
  143.  }
  144.  putchar ('\n');
  145.  
  146.  return 0;
  147. }

¡¡¡¡ Saluditos! ..... !!!!




290  Programación / Programación C/C++ / Re: funcion de conversion de bases en: 19 Marzo 2014, 16:37 pm
El problema radica en el printf("%g"). No se debe usar el %g para enteros.
.......................................


Creo que no, el problema radica en lo que indiqué.

Una salida con int y %d en el printf:


Citar
6
36
536
5536
65535
[65535]


Y si los declara como float o double e imprime con %d ya ni te cuento.

Yo le pondría un parche al cálculo de la potencia propuesto por leosansan.

.........................................................
Básicamente para que funcione en bases que no sea la decimal.


Bien observado amigo eferion. Pero ya lo dice la variable: "num_decimal". No creo que ese  fuera el propósito de m@o_614, pero efectivamente el método es lo bastante versátil como para ser usado para distintas bases. Y repito sí tienes razón, su uso es más potente. .....y me has sacado un as que tenía en la manga para otros temas  ;)



¡¡¡¡ Saluditos! ..... !!!!


Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines