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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 122
151  Programación / Programación C/C++ / Re: Ayuda optimizacion busqueda de salida en laberinto en: 29 Marzo 2014, 11:13 am
Si pero es que un algoritmo que busque aleatoriamente podria tardar una eternidad en recorrer todo el laberinto, redundando en caminos que ya hubiese pasado anteriormente
Pero esque la idea esque no repitas caminos xD.

De todas formas si solo buscas una salida, no necesitas que sea aleatorio. Te abasta con hacerte alguna estructura que permita recursión (lista o pilas), le pones un while ya debería ir.

Función que determina si dos puntos A y B están conectados:
Código
  1. #include <stack>
  2.  
  3. bool explora(char mat[][20],Cord inicio,Cord Destino,int TAMX,int TAMY)
  4. {
  5.    stack<Cord> Pila;
  6.    Pila.push(inicio);
  7.  
  8.    while (Pila.size() != 0)
  9.    {
  10.        //cout<<Pila.top().x<<" , "<<Pila.top().y<<endl;
  11.        // izquierda
  12.  
  13.        if (Pila.top().x > 0)
  14.        {
  15.            if (Pila.top().x-1 == Destino.x && Pila.top().y == Destino.y) return true;
  16.            if (mat[Pila.top().x-1][Pila.top().y] == 0)
  17.            {
  18.                mat[Pila.top().x-1][Pila.top().y] = 1;
  19.                Pila.push(Cord(Pila.top().x-1,Pila.top().y));
  20.                continue;
  21.            }
  22.        }
  23.  
  24.        // derecha
  25.  
  26.        if (Pila.top().x < TAMX-1)
  27.        {
  28.            if (Pila.top().x+1 == Destino.x && Pila.top().y == Destino.y) return true;
  29.            if (mat[Pila.top().x+1][Pila.top().y] == 0)
  30.            {
  31.                mat[Pila.top().x+1][Pila.top().y] = 1;
  32.                Pila.push(Cord(Pila.top().x+1,Pila.top().y));
  33.                continue;
  34.            }
  35.        }
  36.  
  37.        // arriba
  38.  
  39.        if (Pila.top().y > 0)
  40.        {
  41.            if (Pila.top().y-1 == Destino.y && Pila.top().x == Destino.x) return true;
  42.            if (mat[Pila.top().x][Pila.top().y-1] == 0)
  43.            {
  44.                mat[Pila.top().x][Pila.top().y-1] = 1;
  45.                Pila.push(Cord(Pila.top().x,Pila.top().y-1));
  46.                continue;
  47.            }
  48.        }
  49.  
  50.        // abajo
  51.  
  52.        if (Pila.top().y < TAMY-1)
  53.        {
  54.            if (Pila.top().y+1 == Destino.y && Pila.top().x == Destino.x) return true;
  55.            if (mat[Pila.top().x][Pila.top().y+1] == 0)
  56.            {
  57.                mat[Pila.top().x][Pila.top().y+1] = 1;
  58.                Pila.push(Cord(Pila.top().x,Pila.top().y+1));
  59.                continue;
  60.            }
  61.        }
  62.  
  63.       // mat[Pila.top().y][Pila.top().x] = 0;
  64.        Pila.pop();
  65.    }
  66.  
  67.    return false;
  68. }

NOTA: Uso ceros en vez de ' '.
152  Programación / Programación C/C++ / Re: Cómo pasar parámetros. en: 29 Marzo 2014, 10:28 am
En C++ el this se escribe igual.
153  Programación / Programación C/C++ / Re: consejos con optimizacion de codigo snake en: 28 Marzo 2014, 19:08 pm
conio no es estandar ni windows.h :huh:
154  Programación / Programación C/C++ / Re: consejos con optimizacion de codigo snake en: 27 Marzo 2014, 22:26 pm
¿Por que dices que es independiente del SO? Yo ahí veo la windows.h y la conio.h.

Para resolver el problema de la portabilidad necesitas compilación condicional:
http://foro.elhacker.net/programacion_cc/duda_sobre_portabilidad-t393915.0.html
155  Programación / Programación C/C++ / Re: Promoción de los parámetros numéricos pasados a función ? en: 27 Marzo 2014, 22:21 pm
El tema de los argumentos infinitos es un poco polémico. Si te da igual el método empleado puedes usar un array de punteros void*, aquí un ejemplo de uso en una implementación de printf:

Código
  1. #include <stdio.h>
  2.  
  3. void Printf(const char* texto,void* args[]);
  4.  
  5. int main()
  6. {
  7.    void* argumentos[3];
  8.    int a = 0;
  9.    float b = 3.2;
  10.    char c = 'e';
  11.  
  12.    argumentos[0] = &a;
  13.    argumentos[1] = &b;
  14.    argumentos[2] = &c;
  15.  
  16.    Printf("Texto: %d  %f  %c",argumentos);
  17.    return 0;
  18. }
  19.  
  20. void Printf(const char* texto,void* args[])
  21. {
  22.    int argumento = 0;
  23.    int i;
  24.    for (i = 0;texto[i];i++)
  25.    {
  26.        if (texto[i] != '%') putchar(texto[i]);
  27.        else
  28.        {
  29.            if (texto[i+1] == '\0'){putchar('%'); return;}
  30.  
  31.            switch (texto[i+1])
  32.            {
  33.            case 'd':
  34.                    {
  35.                        int aux = *((int*)args[argumento]);
  36.                        printf("%d",aux);
  37.                        argumento++;
  38.                        i++;
  39.                        break;
  40.                    }
  41.            case 'f':
  42.                    {
  43.                        float aux = *((float*)args[argumento]);
  44.                        printf("%f",aux);
  45.                        argumento++;
  46.                        i++;
  47.                        break;
  48.  
  49.                    }
  50.            case 'c':
  51.                    {
  52.                        char aux = *((char*)args[argumento]);
  53.                        printf("%c",aux);
  54.                        argumento++;
  55.                        i++;
  56.                        break;
  57.                    }
  58.            default:    putchar('%');
  59.            }
  60.        }
  61.    }
  62. }
156  Programación / Programación C/C++ / Re: C++ - Problema con implementación del QuickSort. en: 26 Marzo 2014, 22:19 pm
Me refiero:
Código
  1. void quickSort(vector<int>& v, int l = 0, int r = v.size()-1);

O bien usar un metodo lanzadera:
Código
  1. void quickSort(vector<int>& v)
  2. {
  3.    quickSort(v,0,v.size()-1);
  4. }

Lo digo para asegurarte de que está bien inicializado.
157  Programación / Programación C/C++ / Re: Pasar un archivo texto a binario. (Solucionado) en: 26 Marzo 2014, 15:32 pm
En efecto, pero eso es en C.
158  Programación / Programación C/C++ / Re: Problemas con arrays C++ en: 26 Marzo 2014, 10:48 am
Ni "forzado" ni "automatico", en C no habia ningun sistema para controlar que no adcedieras a posiciones erroneas. Ahi trabajas sabiendo la longitud del array (salvo en el caso de cadenas, que se ponia un cero en el ultimo elemento para acabar).

Bueno ni en C++ hay un sistema. Las razones de esto son puramente por eficiencia, es un desperdicio de recursos ir comprobando si adcedes a una posicion erronea cada vez. De modo que si lo haces, no da error de compilacion y sus consecuencias son indeterminadas (puede que modifiques a otras variables, puede que te de un error de ejecución...).

Los compañeros de arriba te han respondido usando la clase vector. Una objeto que contiene un array que puedes redimensionarlo a tu gusto, ese objeto ademas tiene control sobre su tamaño y podemos consultarlo con el metodo size().

Realmente a la hora de controlarlo no hay mucha diferencia: Su tamaño. Si adcedemos a posiciones invalidas dara error de ejecucion.
159  Programación / Programación C/C++ / Re: Proyecto calculadora: Convertir infijo a posfijo. en: 25 Marzo 2014, 22:34 pm
¿Estenografía en ficheros? ¿Dependerá del formato del fichero en cuestión no? La idea es buscar los fallos del formato en cuestión.

El de archivos rar es una implementación en C++ de esta técnica:
http://neobits.net/NeobitsOrg/560.html
160  Programación / Programación C/C++ / Re: Problema c++ con codeblocks en: 25 Marzo 2014, 18:22 pm
Cuando se te quede pillado un programa, mata el proceso desde el administrador de tareas (control+alt+supr).

Desactiva los antivirus por si estuvieran metiendo las narices.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 122
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines