C/Visual C - como meto esto en una matriz?

 
Vista:

como meto esto en una matriz?

Publicado por Diego (3 intervenciones) el 13/06/2006 02:08:21
hola gente tengo un problema con una matriz con caracteres :
yo lo q quiero hacer es ingresar un nombre compuesto (por ejemplo nombre y apellido), guardarlo en una variable, y meter esa variable en una matriz... o hacer lo mismo pero en vez de guardarlo en la variable directamente guardarlo en la matriz.. probe de las dos formas distintas y no me salio.. aca les dejo los 2 codigos.. alguien se puede fijar en ambos codigos que es lo q esta mal y corregirmelo??? Desde ya 1000 gracias, comunidad...!

CODIGO 1:
en este codigo el nombre compuesto directamente lo guardo en la matriz.. pero el problema esta en que no lo guarda completo, guarda solo el "nombre" y no el "apellido". Antes que digan algo intente hacerlo con GETS y no con SCANF pero al correr el programa imprime cualquier cosa

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{

int i,j;
int noprod;
int vp[5],precio;
char vd;
char producto[5][100];
vp[i]=precio=0;
/*noprod=0; */
for(i=1;i<=2;i++)
{
printf("\nIngrese el numero del producto: ");
scanf("%i",&noprod);
printf("\ningrese la descripcion del producto: ");
scanf("%s",producto[i][j]); //problemas con nombres compuestos
printf("\ningrese el valor del producto: ");
scanf("%d",&precio);
vp[i]=precio;

}

printf("\n\ncodigo producto producto precio \n");

for (i=1;i<=2;i++)
{
printf("%d " "%s " "%d\n ",i,producto[i][j],vp[i]);

getch();

}

}

CODIGO 2:
en este codigo intento guardar el nombre y apellido en una variable (descrip) y luego meterla en la matriz.. pero al compilar me tira error en producto[i][j]=descrip;

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{

int i,j;
int noprod;
int vp[5],precio;
char vd;
char producto[5][100];
char descrip;
vp[i]=precio=0;
/*noprod=0; */
for(i=1;i<=2;i++)
{
printf("\nIngrese el numero del producto: ");
scanf("%i",&noprod);
printf("\ningrese la descripcion del producto: ");
scanf("%s",&descrip);
printf("\ningrese el valor del producto: ");
scanf("%d",&precio);
vp[i]=precio;
producto[i][j]=descrip; /*no funciona matriz*/

}

printf("\n\ncodigo producto producto precio \n");

for (i=1;i<=2;i++)
{
printf("%d " "%s " "%d\n ",i,producto[i][j],vp[i]);

getch();

}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como meto esto en una matriz?

Publicado por Nelek (816 intervenciones) el 13/06/2006 08:14:36
Mmmm, no me he puesto a analizarlo lentamente, pero yo diria que el fallo esta en que intentas recorrer un vector [i][j] modificando solamente un parametro "i".

Para recorrer vectores bidimensionales se ha de hacer o por punteros dobles o por 2 "for" uno dentro de otro (para ambos casos pon matrices en la busqueda del foro y mira lo que te sale que no es la primera vez que se pregunta al respecto)

Una sugerencia...
No has pensado en hacerte una struct o clase sencilla con las dos o tres variables que quieres almacenar y metes en el vector un unico parametro?

typedef struct
{
int codigo;
CString descripcion;
long int precio; //u otra variable dependiendo de lo caro que sea el producto
} Producto;

luego metes los datos con: Producto.variable = valor;

y creas el vector de una sola dimension para almacenar solo un tipo de dato (en este caso la struct)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como meto esto en una matriz?

Publicado por Juan (68 intervenciones) el 13/06/2006 15:34:08
Bueno yo lo vi por otro lado, el error que vi en la segunda es que la matriz es de caracteres no de String. Por eso cuando a[i][j] = desc se tira tres. Espera una sola letra, no una cadena completa. Creo que eso se resolveria declarando la matriz como un *char.

El de la primera asumo que es porque el nombre y el apellido estan separados por un espacio en blanco,y por eso cuando lo lee, suaz se tira 3. Mi recomendacion, cambia la logica de la lectura de datos. Dile al usuario que te ingrese el nombre, que te ingrese el apellido, lo concatenas y luego lo guardas.

Esa fue mi impresion. A lo mejor hubo algo mas que no vi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como meto esto en una matriz?

Publicado por Nelek (816 intervenciones) el 14/06/2006 12:11:33
Mmmm, tambien es otra opcion... Pero precisamente en lo que no se ve, es en lo que me base yo para responder lo que dije.

// Codigo 1

//...
int i,j;
//...
char producto[5][100];
vp[i]=precio=0;
//...
for(i=1;i<=2;i++)
{
//..
scanf("%s",producto[i][j]); //problemas con nombres compuestos
//..
vp[i]=precio;
}
//..
for (i=1;i<=2;i++)
{
printf("%d " "%s " "%d\n ",i,producto[i][j],vp[i]);
//..

CODIGO 2:
//..
int i,j;
//..
vp[i]=precio=0;
//.
for(i=1;i<=2;i++)
{
//..
vp[i]=precio;
producto[i][j]=descrip; /*no funciona matriz*/
//..
}
//..
for (i=1;i<=2;i++)
{
printf("%d " "%s " "%d\n ",i,producto[i][j],vp[i]);
//..

Donde se le asigna algun valor a la j? Y, sin nigun tipo de puntero ni de recorrido basado en j... Como recorre el segundo termino del vector producto? (Ya se que eso es la parte destinada a las palabras, pero si la j no se iniciliza al menos..., como sabe que tiene que empezar en 0 cada vez?Que valor tiene por defecto un int?)

v[i] = 0, fuera de un for... le da valor nulo a todos los componentes? (Si lo hace me entero ahora)

printf("%d " "%s " "%d\n ",i,producto[i][j],vp[i]); -> Supongo que hara lo mismo, pero yo pondria printf ("%d , %s , %d\n", i, producto[i][j], vp[i])

NOTA: Que conste que puede que me este equivocando y que la metodica que el ha hecho se pueda usar (solo digo que es la primera vez que lo veo), pero de la otra manera seguro que funcionaba (aunque puede que me haya sacado la CString de la chistera,jejeje, la fuerza de la costumbre ultimamente)

P.S. Por favor (en especial, Juan y Fernando si me leeis) echar un vistazo a mi mensaje de abajo "Atascado, ayuda pls" a ver si me podeis decir como salir de ese merdel. La solucion facil ya la se (cambiar el MM_xxx, pero es que mi jefe quiere adecuar la superficie de trabajo a un A3)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como meto esto en una matriz?

Publicado por Juan (68 intervenciones) el 14/06/2006 14:34:14
Bueno lo que pasa es que el entorno de C inicializa los enteros a 0, por eso la variable j esta declarada y cuando la va a usar cree que es 0.
Ahora mi me surge una dudota??????????
Para que carajo usas una matriz...... si se ve que lo que quieres llenar es un arreglo unidimensional??????????????????
O le agregas otro for interno al de la variable y para recorrer la segunda dimension de la matriz, o cambialo a vector. Eso no tiene ciencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como meto esto en una matriz?

Publicado por Nelek (816 intervenciones) el 14/06/2006 14:53:56
Eso lo llevo yo diciendo desde el principio... :P

Y no la estoy usando yo, sino el. Yo soy Nelek.

Oches, echa un vistazo a mi mensaje de algo mas abajo "atascado, ayuda pls" a ver si tu sabes decirme que hago mal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar