Ayuda en el lenguaje C

  • Autor Autor Cianuro
  • Fecha de inicio Fecha de inicio
Cianuro

Cianuro

Delta
Redactor
Buenas amigos, estaba intentando traducir un codigo en c++ al lenguaje c, llegué a un punto donde me perdí, sucede que tengo un vector tipo struct nodo{int v,costo} de 100 posiciones. En una función (en c++) llegué una línea que es la sig. p = adj[k].v; Lo que no entiendo es como el vector adj tiene dos indices, por lo tanto no lo puedo traducir a c. Si alguien me ayuda. Disculpen si me equivoque de sección.
 
Te referis a que es un arreglo de 2 valores ? Y que no sabes pasar el arreglo de 2 valores a C comun? o malentendi las cosas?
 
Buenas amigos, estaba intentando traducir un codigo en c++ al lenguaje c, llegué a un punto donde me perdí, sucede que tengo un vector tipo struct nodo{int v,costo} de 100 posiciones. En una función (en c++) llegué una línea que es la sig. p = adj[k].v; Lo que no entiendo es como el vector adj tiene dos indices, por lo tanto no lo puedo traducir a c. Si alguien me ayuda. Disculpen si me equivoque de sección.
Para eso publica aquí el ciclo que incluye esa estructura/objeto ya que de otro modo no podemos ver de que modo están trabajados los indices......
 
Si tiene 2 índices no es un vector es una matriz, si tiene mas de 2 es un cubo, eso es algo básico de programación, es como no saber que existen listas con enlace simple y doblemente enlazadas, te recomiendo estudiar mas sobre programación básica.

Tony tiene razón necesitas explicar mas parte del código para saber que es lo que hace y poder ayudarte mejor.
 
No entiendo el codigo en si porque no esta publicado completo.. Pero no creo que sea un vector.. es una matriz.. y la estará recorriendo con 2 FOR anidados.. para ir completando o verificando valores con el ".v" .. Es muy basico.. Publica el codigo completo.
 
Si tiene 2 índices no es un vector es una matriz, si tiene mas de 2 es un cubo.
Te equivocas, a las matrices se les conoce también como vectores (o arreglos) bidimencionales.
[MENTION=2622]Cianuro[/MENTION] no hace falta publicar todo el código, simplemente el ciclo (ambos: el principal y el anidado) y lo que se ejecuta dentro de este que implique a la estructura/objeto (según tu paradigma de programación que en este caso deberá ser estructurado porque usas C, C++ por otra parte aplica para PE y POO).
 
Este es el código en cuestión, la estructura creada es struct node
{
int v,cost;
};

y el array está definido como vector<node> adj[101];
y la función donde tengo inconvenientes es:

Insertar CODE, HTML o PHP:
int dfs(int i,int j)  
{  
    int k,p,ok = 0;  
    if (dp[i][j]!=-1)  
        return dp[i][j];  
    if (j >= tot)  
    {  
        if (i == n-1)  
        {  
            return dp[i][j] = 1;  
        }  
  
        return 0;  
    }  
    for(k = 0;k < adj[i].size();k++)  
    {  
        p = adj[i][k].v; 
        if (adj[i][k].cost == c[j+1])  
        {  
            if (dfs(p,j+1)==1)  
                ok = 1;  
        }  
    }  
  
    return dp[i][j] = ok;  
}
 
Última edición:
Ok aquí todo parece indicar que el único indice que se mueve es el segundo, si observas detalladamente la variable i la recibes como parámetro por lo que imagino hay un ciclo externo que llama a esta función y esa es la que mueve el primer índice. Debajo, en el ciclo for de esta función la matriz es tratada como vector unidimencional, ¿porque? porque estás considerando que solo el segundo índice se mueve, es decir tu vector será adj (fijo durante toda la ejecución de la función) y el único elemento que está cambiando es el del segundo índice adj[este].

Por cierto, cual es el inconveniente que estás teniendo?

En C puedes declarar la estructura tal cual la tienes aquí
Insertar CODE, HTML o PHP:
struct miEstructura{ 
int v,cost; 
};
y este arreglo lo declaras como
Insertar CODE, HTML o PHP:
struct miEstructura adj[x][y]; //la verdad no recuerdo (nunca lo requerí) si es posible declarar vectores indefinidos en C, es decir que no tengas que declarar las dimensiones antes de su ejecución. Nunca se me dio el caso que tuviera que declarar vectores de dimensiones indefinidas por lo que ahí si yo no se.
Este es el código en cuestión, la estructura creada es struct node
{
int v,cost;
};

y el array está definido como vector<node> adj[101];
y la función donde tengo inconvenientes es:

Insertar CODE, HTML o PHP:
int dfs(int i,int j)  
{  
    int k,p,ok = 0;  
    if (dp[i][j]!=-1)  
        return dp[i][j];  
    if (j >= tot)  
    {  
        if (i == n-1)  
        {  
            return dp[i][j] = 1;  
        }  
  
        return 0;  
    }  
    for(k = 0;k < adj[i].size();k++)  
    {  
        p = adj[i][k].v; 
        if (adj[i][k].cost == c[j+1])  
        {  
            if (dfs(p,j+1)==1)  
                ok = 1;  
        }  
    }  
  
    return dp[i][j] = ok;  
}
 
Última edición:
Atrás
Arriba