Ayuda con matrices de cadenas

Iniciado por negux, 29 Junio 2010, 01:49 AM

0 Miembros y 2 Visitantes están viendo este tema.

negux

Bueno como dice el titulo quisiera saber como le puedo hacer , con una matriz almacenar nombres y numeros , algo asi:


                           nombre1  7   8   9
                           nombre2  5   2   8
                           nombre3  7   8   10

donde nombre1 seria una posicion en memoria de la matriz, al igual que cada numero
no se como almacenar los datos en la matriz.. espero me puedan ayudar

cbug

Creo que deberías utilizar algo como lo siguiente:

typedef char *cadena;

cadena **matriz;

.:BlackCoder:.

#2
Si quieres restringirlo a enteros debes hacer vectoresde estructuras... pero si quieres trabajar los numeros como caracteres...

usa char matriz[m][n];

es decir arrays de 2 dimensiones...

Saludos...

EDITO:
Esto esta errado... de cierta forma...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




cbug

char matriz[m][n];

Aquí nunca podrás almacenar una cadena como elemento de la "matriz".

.:BlackCoder:.

iba a ser del tipo string, es q trabajo con c++ pero si es en C pes debe ser de 3 dimensiones...

:P

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




negux

podrias explicarme un poco mas de eso de 3 dimensiones, le entiendo cuando es doble apuntador o de 2 dimensiones, pero de 3 no logro visualizarlo, y como meter datos ahi ;D
siento que seria algo asi como :
char *matriz[][];
:huh:

cbug

#6
Bueno si fuese en C++, tendriamos en realidad:

[b]string[/b] matriz[][]

Cita de: daniel666999 en 29 Junio 2010, 02:09 AM
podrias explicarme un poco mas de eso de 3 dimensiones, le entiendo cuando es doble apuntador o de 2 dimensiones, pero de 3 no logro visualizarlo, y como meter datos ahi ;D
siento que seria algo asi como :
char *matriz[][];
:huh:

Con esto último estaría bien.

Fijate que: **matriz == matriz[][] EN CIERTO MODO. Ahora bien observa: ***matriz == *matriz[][]

.:BlackCoder:.

Imagina que una dimension es para las letras (cada palabra) la otra dimension para las palabras (como una frase, o una linea, es decir un vector de palabras) y la otra para que sean varias frases(como un vector de frases o registros)... Mas o menos asi lo puedes ver...

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




negux

Bueno, un poco mas claro, ahora hice este pequeño codigo, amm si me almacena nombres y numeros, pero no se por que cuando trato de meter los datos en la matriz de forma horizontal digamos, no lo almacena, si no que lo tengo que hacer de forma vertical,  ;D espero me hayan entendido, si no aqui esta mi codigo, y ahi espero que sea mas claro:

#include<stdio.h>
#include<stdlib.h>

main()
{

char *mat[3][3];
int i,m,n=5,j;

    /*printf("Cuantos nombre quieres\n");}

    scanf("%d",&num);*/
   
     

    for(i=0;i<3;i++)
    {
                    for(j=0;j<3;j++)
                    {
                                    mat[j][i]=(char*)malloc(sizeof(char)*n);
                                    fflush(stdin);
                                    scanf("%s",&*mat[j][i]);  /*en esta parte lo guardo de   forma vertical, ya que primero incrementa j luego i, comunmente es primero i luego j
                    }
    }
   
    for(i=0;i<3;i++){
                    for(j=0;j<3;j++){
                    printf("%s",mat[i][j]);
                    }
                    printf("\n");
                    }
    getchar();
return 0;   
}





nicolas_cof

Cita de: daniel666999 en 29 Junio 2010, 01:49 AM
Bueno como dice el titulo quisiera saber como le puedo hacer , con una matriz almacenar nombres y numeros , algo asi:


                           nombre1  7   8   9
                           nombre2  5   2   8
                           nombre3  7   8   10

donde nombre1 seria una posicion en memoria de la matriz, al igual que cada numero
no se como almacenar los datos en la matriz.. espero me puedan ayudar

Lo que podrias hacer es un arreglo de estructuras.

typedef struct _s
{
    char nombre1[50];
    int numero1
} registro;
typedef registro *matriz;

int main( void )
{
    matriz m;
    m = malloc( 5 * sizeof( registro ) );
    ...
}


Salu10.