• Viernes 15 de Noviembre de 2024, 17:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - albany

Páginas: [1]
1
C/C++ / Re: Matrices Multidimensionales Dinamicas
« en: Lunes 15 de Diciembre de 2003, 03:17 »
La primer cosa que hice fue inicializar las variables f_minimo y almacen (la original de dos componentes), porque si no encontraba nada dentro no almacenaban valor.
Debugeando me di cuenta que utilizando el malloc con tamaño de dos variables int, me parece que en realidad estás alocando la cantidad correspondiente pero no tener distinción, me refiero a que en el fondo vos alocaste n bytes pero sin separación alguna, si almacenás en el primero pisás lo otro y viceversa. Supongo que eso es lo que sucedía porque los valores que tenía la variable antes de la impresión por pantalla eran basura.
En conclusión, lo que hice fue alocar por separado para poder referirme sin problemas a la parte de memoria que yo quería.
Espero te haya servido
Flor Castagnino

2
C/C++ / Re: Matrices Multidimensionales Dinamicas
« en: Domingo 14 de Diciembre de 2003, 08:34 »
Hola!!!
Estuve chusmeando y arreglé las cosas que tienen comentarios, espero te sirva de algo.
Flor Castagnino

[CODE]

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

/*Escriba un programa que lea una matriz de FxC enteros e indique la posición del elemento mínimo*/

void leer_elementos (int filas, int columnas, int **matriz);
void posicion_minimo (int filas, int columnas, int **matriz,
   int *direccion_matriz_posiciones , int *almacen2);

int main (void)
{
int F, C;
int i, j;
/*El problema lo encontré en la variable almacen así que la dividí en
dos variables distintas*/
int *almacen;
int *almacen2;
int **pMatriz;

printf ("Introduzca F: ");
scanf  ("%d", &F);
printf ("Introduzca C: ");
scanf  ("%d", &C);

pMatriz = (int **) malloc ( sizeof (int *) * F);
almacen = (int *) malloc (sizeof (int)/* * 2*/); /*numero dimensiones array principal = 2*/
almacen2 = (int *) malloc (sizeof (int));
leer_elementos(F, C, pMatriz);
posicion_minimo(F, C, pMatriz, almacen , almacen2);
printf ("El valor mínimo en la Matriz reside en pMatriz[%d][%d] y tiene el valor %d.\n",
 *almacen,*almacen2,pMatriz[*almacen][*almacen2]);
/*No se libera la memoria alocada*/
}


void leer_elementos(int F,int C, int **pMatriz)
{
int i, j;
int valor;

for (i=0;i<F;i++)
{
pMatriz = (int *) malloc (sizeof(int) * C);
}



for (i=0;i<F;i++)
{
for (j=0;j<C;j++)
{
printf ("Si es tan amable, introduzca usted el valor de pMatriz[%d][%d]: ", i, j);
scanf ("%d", &pMatriz[j]);
}
}


}
/*Ahora paso las dos variables almacen a la función*/
void posicion_minimo(int F, int C, int **pMatriz, int *almacen , int *almacen2)

{
int f_minimo, c_minimo, v_minimo;
int i, j;
v_minimo = pMatriz[0][0];
f_minimo = 0;
c_minimo = 0;
*almacen = 0;
*almacen2 = 0;


for (i=0;i<F;i++)
for(j=0;j<C;j++)
{
 if (pMatriz[j] < v_minimo)
 {
 f_minimo=i;
 c_minimo=j;
 v_minimo=pMatriz[j];
 }
}

*almacen  = f_minimo;
*almacen2 = c_minimo;

}

3
C/C++ / Re: Cuadro Latino
« en: Sábado 13 de Diciembre de 2003, 07:08 »
Hola!!
Si estás en C++ se me ocurre esto, de la nada, y habría que probarlo:
cargás en un vector de la STL hasta el número y después usás un iterador(puntero a la componente que vos querés) para mostrar lo que vos querés por pantalla (o donde sea).
Si necesitás alguna ayuda mandame un mail a albany@ciudad.com.ar
Ojalá te sirva, realmente recién vi tu mensaje y pensé en eso, no le dediqué mucho tiempo...
Flor Castagnino

Páginas: [1]