Miércoles 20 de Noviembre de 2024, 10:24
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Modificar Valores de una Matriz
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Modificar Valores de una Matriz (Leído 9340 veces)
darioup
Nuevo Miembro
Mensajes: 4
Modificar Valores de una Matriz
«
en:
Martes 16 de Marzo de 2010, 22:31 »
0
hola a to2, creo q la pregunta es muy simple pro hace mucho q lo hice y ahora no lo recuerdo
bueno este es mi caso
tengo una matriz de este tipo
float PC3[3][3]={{250, 250, 0}, {500, 80, 0}, {585, 537, 0}};
ahora bien quiero cambiar los valores de to2 los campos de la matriz algo asi como
PC3 = {{216, 248, 0}, {297, 146, 0}, {267, 78, 0}};
lo que no quiero es
PC3[0][0] = 216;
PC3[0][1] = 248;
PC3[0][2] = 0;
... etc
ayuda please...
Tweet
jormar arellano
Nuevo Miembro
Mensajes: 10
Nacionalidad:
Re: Modificar Valores de una Matriz
«
Respuesta #1 en:
Miércoles 17 de Marzo de 2010, 01:23 »
0
Amigo, te basta con dos iteraciones anidadas (típico en operaciones con matrices). La idea es recorrer todas las posiciones de las filas y, en cada una, recorrer todas las posiciones de las columnas:
Código: C++
#define ROWS 3
#define COLS 3
...
int
i, j
;
...
for
(
i
=
0
;
i
<
ROWS
;
i
++
)
{
for
(
j
=
0
;
j
<
COLS
;
j
++
)
{
PC3
[
i
]
[
j
]
=
1
;
// <-- Mi valor
}
}
...
En el anterior ejemplo, coloco todos los valores de la matriz a uno
darioup
Nuevo Miembro
Mensajes: 4
Re: Modificar Valores de una Matriz
«
Respuesta #2 en:
Miércoles 17 de Marzo de 2010, 01:46 »
0
nooop
no quiero recorrer toda la matriz o limpiarla, quiero sobreescribir sus campos por valores escritos por el programador, para un programa de graficacion donde los campos de la matriz son X, Y, alpha; entonces los X, Y son muy cambiantes, y solo quiero reutilizar la variable matriz
Código: C
...
float
PC3
[
3
]
[
3
]
=
{
{
250
,
250
,
0
}
,
{
500
,
80
,
0
}
,
{
585
,
537
,
0
}
}
;
pinta
(
*
PC3
)
;
PC3
=
{
{
216
,
248
,
0
}
,
{
297
,
146
,
0
}
,
{
267
,
78
,
0
}
}
;
//esta parte esta mal pro ojala se entienda la idea
pinta
(
*
PC3
)
;
PC3
=
{
{
300
,
250
,
0
}
,
{
60
,
15
,
0
}
,
{
26
,
81
,
0
}
}
;
pinta
(
*
PC3
)
;
...
como son muchas lineas las q se pintan quiero ahorrar un poco de codigo
ya lo tengo resuelto con una funcion q copia cada elemento en el campo adecuado de la matriz
algo asi como
PC3[0][0] = 300;
PC3[0][1] = 345;
...
me quedo muy mona mi funcion, hace q me ahorre un buen de lineas de codigo, pro queria saber si existe algo mas practico auque creo q no...
Amilius
Miembro HIPER activo
Mensajes: 665
Re: Modificar Valores de una Matriz
«
Respuesta #3 en:
Miércoles 17 de Marzo de 2010, 02:35 »
0
Tal vez un memmove?
Código: Text
#include <string.h>
.
.
.
float S0[3][3] = {{250, 250, 0}, {500, 80, 0}, {585, 537, 0}};
float S1[3][3] = {{216, 248, 0}, {297, 146, 0}, {267, 78, 0}};
float S[3][3];
memmove(S,S0,sizeof(S));
memmove(S,S1,sizeof(S));
En todo caso usando un puntero sería mas eficiente siempre y cuando no tengas intencion de modificar los valores del arreglo.
jormar arellano
Nuevo Miembro
Mensajes: 10
Nacionalidad:
Re: Modificar Valores de una Matriz
«
Respuesta #4 en:
Miércoles 17 de Marzo de 2010, 02:57 »
0
Oka, ya creo que entendí lo que quieres... deseas cambiar el valor de la misma variable (matriz) con valores cableados en el código fuente, pero de forma elegante, o corta...
Si ese es tu propósito, lo mejor es hacerlo con una función que te haga el trabajo (tal y como dices). Aca te dejo mi propuesta:
Código: C++
...
#include <string.h> /* incluye memcpy( ... ) */
...
void
copiar
(
float
mat
[
3
]
[
3
]
,
float
a,
float
b,
float
c,
float
d,
float
e,
float
f,
float
g,
float
h,
float
i
)
{
float
aux
[
3
]
[
3
]
=
{
{
a,b,c
}
,
{
d,e,f
}
,
{
g,h,i
}
}
;
memcpy
(
mat, aux,
sizeof
(
aux
)
)
;
}
...
int
main
(
)
{
...
// En caso de que quieras colocar los valores manualmente
copiar
(
mat,
3
,
5
,
30
,
21
,
1
,
0
,
32
,
87
,
9
)
;
// imprimir mat
copiar
(
mat,
32
,
51
,
310
,
231
,
16
,
10
,
3
,
4
,
67
)
;
// imprimir mat
...
// En caso de que tengas todos los valores nuevos en otra matriz
float
mat_aux
[
3
]
[
3
]
=
{
{
81.8
,
4
,
3
}
,
{
81.8
,
4
,
3
}
,
{
81.8
,
4
,
3
}
}
;
memcpy
(
mat, mat_aux,
sizeof
(
mat
)
)
;
// imprimir mat
...
}
La función memcpy es una de las formas más rápidas de copiar tus valores de un lugar a otro; en efecto, es más rápido que hacer:
Código: C++
mat
[
0
]
[
0
]
=
100
;
mat
[
0
]
[
1
]
=
45
;
...
Por ultimo, si lo que quieres es hacer debug, o cambiar los valores de variables durante la ejecución del programa, te recomiendo que uses gdb, o alguno por el estilo (aunque no creo que nada de esto último es lo que buscas, pero no esta de más mencionarlo
)
Amilius
Miembro HIPER activo
Mensajes: 665
Re: Modificar Valores de una Matriz
«
Respuesta #5 en:
Miércoles 17 de Marzo de 2010, 03:21 »
0
Efectivamente memcpy es mejor que memmove, memmove se usa cuando existe riesgo de solapamiento entre origen y destino.
darioup
Nuevo Miembro
Mensajes: 4
Re: Modificar Valores de una Matriz
«
Respuesta #6 en:
Miércoles 17 de Marzo de 2010, 03:32 »
0
EXCELENTE creo q esto es de lo mejor, no conocia el memcpy muchas gracias
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Modificar Valores de una Matriz