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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  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
281  Programación / Programación C/C++ / Re: Funcion de modificar archivos no funciona en: 24 Mayo 2017, 06:36 am
Cuando los strings los defines como char [] esos strings allí guardados, no se comparan con ==
Para ese caso, usa strcmp o strncmp o crea una función que recorra los arreglos y los compare.
282  Programación / Programación C/C++ / Re: Reemplazar cout [Juego Encontrar Triadas] en: 14 Mayo 2017, 03:12 am
Sugiero partir de cero que recortar este programa. No parece ser un ejemplo de buenas practicas.

Por otro lado, si sabes de ciclos, for y printf, sugiero que hagas el reemplazo que propones tu mismo.
283  Programación / Programación C/C++ / Re: Matriz en: 12 Mayo 2017, 22:14 pm
Super bueno.

Le falta la aritmetica para los indices de la matriz (y llenarla).
Sin embargo, agregarla diluye la magia de la simplicidad inicial.
284  Programación / Programación C/C++ / Re: Busqueda por posicion en arboles binarios c++ en: 12 Mayo 2017, 15:46 pm
En la funcion busquedaPos tienes un while, con una condicion.
Cuando esa condicion se hace falsa?

Yo creo que nunca, porque parece que no estas modificando las variables que controlan el ciclo.
285  Programación / Programación C/C++ / Re: Matriz en: 12 Mayo 2017, 11:52 am
Solo por jugar, para poder repetir los valores antes de llegar al final del arreglo cartas, se puede hacer un truco: usar la matriz final como memoria adicional y aplicar la misma idea anterior, e.g.: http://goo.gl/mOF4jJ

Aun no es como lo descrito, pero la idea se puede aplicar de multiples formas para evitar o forzar repeticiones, sin requerir de estructuras de datos adicionales o contar, la solucion funciona por construccion, como se demuestra en el codigo del link, el que copio aqui:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. char a[4][4];
  6. char cartas[] = {'#','%','@','*','!','<','?', '+'};
  7. int total=sizeof(cartas);
  8.  
  9. int main()
  10. {
  11.    for(int i = 0; i < total*2; i++) {
  12.        a[i/4][i%4] = cartas[i%8];
  13.    }
  14.  
  15.    srand(time(0));
  16.    for (int mover_a = total*2-1; mover_a >=0; mover_a--) {
  17.        int hacia = mover_a;
  18.        int desde = rand() % (hacia + 1);
  19.  
  20.        char temp = a[hacia/4][hacia%4];
  21.        a[hacia/4][hacia%4] = a[desde/4][desde%4];
  22.        a[desde/4][desde%4] = temp;
  23.  
  24.        printf("\t%c ",a[hacia/4][hacia%4]);
  25.        if(mover_a%4 == 0) printf("\n");
  26.  
  27.   }
  28.   printf("\n\n");
  29. }

Verlo ejecutando aqui; http://goo.gl/mOF4jJ
286  Programación / Programación C/C++ / Re: Matriz en: 10 Mayo 2017, 03:00 am
Es completamente posible que aparezca en la salida un patron como el del enunciado.
Hay que cambiar el arreglo de cartas para que incluya el "?" y sacar la "x" que puse yo sin fijarme.
287  Programación / Programación C/C++ / Re: Llenado de Matriz en: 9 Mayo 2017, 23:02 pm
O(1) espacio
O(n) operaciones, n el tamaño del arreglo de cartas, la mitad de la matriz

Verlo ejecutándose aquí: http://goo.gl/KLHE8S

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. char a[4][4];
  6. char cartas[] = {'#','%','@','*','!','<','x', '+'};
  7. int total=sizeof(cartas);
  8.  
  9. int main()
  10. {
  11.    int mover_a = total*2-1;
  12.    srand(time(0));
  13.    for (int i=0; i < 4; i++) {
  14.        for (int j=0; j < 4; j++) {
  15.            int hacia = mover_a % total;
  16.            int desde = rand() % (hacia + 1);
  17.  
  18.            a[i][j] = cartas[desde];
  19.            cartas[desde] = cartas[hacia];
  20.            cartas[hacia] = a[i][j];
  21.  
  22.            printf("\t%c ",a[i][j]);
  23.  
  24.            mover_a--;
  25.        }
  26.      printf("\n\n");
  27.    }
  28. }
  29.  
288  Programación / Programación C/C++ / Re: Llenado de Matriz en: 9 Mayo 2017, 17:03 pm
Al arreglo cartas le falta 1 elemento, la matriz de 4x4 = 16 caracteres, y cartas tiene tamano 7.

Una idea alternativa es que modifiques el arreglo de cartas, eligiendo aleatoriamente desde el, y llevando al final o al inicio la carta elegida, y recorrerlo 2 veces. Con eso, no requieres memoria adicional, ninguna estructura de datos extra, y llevar donde vas en 1 indice adicional.
289  Programación / Programación C/C++ / Re: C++ Sobrecarga de un operador por medio de un template? en: 9 Mayo 2017, 06:18 am
Una solucion alternativa a usar macros, pero que tampoco es exactamente lo que buscas, es usar functors. Se trata de clases o structs que tienen un metodo operator() y que puede ser redefinido en otras clases. Es eso lo que hice en el codigo que incluyo aqui:


Código
  1. #include <functional>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. // tu clase Num, con metodos adicionales para hacer mas corto el resto
  7. class Num
  8. {
  9. public:
  10.    double a, b;
  11.    Num(double x, double y) : a(x), b(y) {}
  12.    void show() { cout << a << ":" << b << endl; }
  13. };
  14.  
  15. // la definicion del functor
  16. struct Operador : public binary_function<Num,Num,Num> {
  17.    virtual Num operator()(Num&n1, Num& n2) = 0;
  18. };
  19.  
  20. // los operadores
  21. struct Sumador : public Operador {
  22.  Num operator() (Num& n1, Num& n2) {return Num(n1.a+n2.a,n1.b+n2.b);}
  23. } sumador;
  24.  
  25. struct Multiplicador : public Operador {
  26.  Num operator() (Num& n1, Num& n2) {return Num(n1.a*n2.a,n1.b*n2.b);}
  27. } multiplicador;
  28.  
  29. // definir otros, si se quiere ...
  30.  
  31. // una funcion que aplica los operadores
  32. Num apply_op(Num n1, Num n2, Operador& op) {
  33.  return op(n1, n2);
  34. }
  35.  
  36. int main() {
  37.    Num num1(1,2), num2(3,4);
  38.  
  39.    apply_op(num1, num2, sumador).show();
  40.    apply_op(num1, num2, multiplicador).show();
  41.  
  42.    // en vez de hacer .show(), como arriba, se puede asignar el resultado, si se quiere
  43.    Num resultado = apply_op( num1, num2, sumador );
  44.    resultado.show();
  45.  
  46.    return 0;
  47. }
290  Programación / Programación C/C++ / Re: ayuda con una duda sobre punteros en: 7 Mayo 2017, 17:18 pm
La definición es antes que el uso.
Define tlibro antes que _nodo
Luego usa el * entre el tipo y el nombre del campo.
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines