Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: feedf en 30 Junio 2013, 20:00 PM

Título: maximo de una matriz?
Publicado por: feedf en 30 Junio 2013, 20:00 PM
buenas tardes tengo que sacar el maximo de cada fila en la matriz m[5][20]

como seria?
yo pense algo asi , que recorra toda la fila uno y valla sacando max
pero habria que hacer 5 iguales me parece que debe haber una forma mas facil

espero una respuesta gracias

int c,f,max,auxc,auxf;
max=m1[1][1];
auxf=1;


for(f=1;f<=1;f++)
{
for(c=1;c<=20;c++)
{
if(m1[f][c]>max)
{
max=m1[f][c];
auxf=f;
auxc=c;
}

Título: Re: maximo de una matriz?
Publicado por: amchacon en 30 Junio 2013, 22:54 PM
Ibas bien:

Código (cpp) [Seleccionar]
int Maximo[5] = {m[0][0],m[0][0],m[0][0],m[0][0],m[0][0]};
int f = 0;
int c = 0;

for (f = 0; f < 5;f++)
{
  for (c= 1; c < 5;c++)
  {
        if (m[c][f] > Maximo[f])
            Maximo[f] = m[c][f];
  }
}


No lo he probado, pero debería funcionar.

Título: Re: maximo de una matriz?
Publicado por: m@o_614 en 1 Julio 2013, 05:43 AM
Yo lo haria de esta manera, donde n es el numero de filas y m es el numero de columnas, al entrar al ciclo la variable mayor se inicializa con (0,0) el valor del primer elemento de la primer fila, una vez que se va recorriendo la fila y se obtiene el valor mayor ( de fila 0) se sale del ciclo for y mayor se vuelve a inicializar con el valor del primer elemento pero ahora de la segunda fila ( fila 1), si te fijas en el primer ciclo se aumenta i para que vaya recorriendo las filas (0,1,2,3..) pero el valor de la columna nunca cambia porque tienes que iniciar desde la columna 0. los valores mayores de cada fila se guardan en un vector

int main()
{
   int i,j,mayor,m[TAM][TAM];

   for(i=0;i < n;i++)
   {
       mayor = m[i][0];
       for(j=0; j< m;j++)
       {
           if(m[i][j] > mayor)
               mayor = m[i][j];
       }
       v[i] = mayor;
   }
Título: Re: maximo de una matriz?
Publicado por: KaL3o en 1 Julio 2013, 07:19 AM
Cita de: amchacon en 30 Junio 2013, 22:54 PM

Código (cpp) [Seleccionar]
int Maximo[5] = {m[0][0],m[0][0],m[0][0],m[0][0],m[0][0]};
int f = 0;
int c = 0;

for (f = 0; f < 5;f++)
{
   for (c= 1; c < 5;c++)
   {
         if (m[c][f] > Maximo[f])
             Maximo[f] = m[c][f];
   }
}


No lo he probado, pero debería funcionar.


creo q te hizo falta cambiar las filas y columnas en el if, seria

         if (m[f][c] > Maximo[f])
             Maximo[f] = m[f][c];

supongo un pequeño desliz al escribir rapidamente :)


Cita de: m@o_614 en  1 Julio 2013, 05:43 AM
int main()
{
    int i,j,mayor,m[TAM][TAM];

    for(i=0;i < n;i++)
    {
        mayor = m[i][0];
        for(j=0; j< m;j++)
        {
            if(m[i][j] > mayor)
                mayor = m[i][j];
        }
        v[i] = mayor;
    }

en el ciclo interno puedes inicializar j con 1.

Salu2 :)
Título: Re: maximo de una matriz?
Publicado por: feedf en 1 Julio 2013, 23:42 PM
gente le hago una consulta , lso codigos que me dieron son para definir el maximo de cada fila de una matriz? o de toda la matriz?

por que poniendo por ejemplo

int Maximo[5] = {m[0][0],m[0][0],m[0][0],m[0][0],m[0][0]};
int f = 0;
int c = 0;

for (f = 0; f < 5;f++)
{
   for (c= 1; c < 5;c++)
   {
         if (m[c][f] > Maximo[f])
             Maximo[f] = m[c][f];
   }
}


estaria recorriendo toda la matriz o estaria recorriendo CADA fila y guardando el maximo en el vector ?

muchas gracias
Título: Re: maximo de una matriz?
Publicado por: eferion en 2 Julio 2013, 00:04 AM
Código (cpp) [Seleccionar]
for (f = 0; f < 5;f++)
{
   for (c= 1; c < 5;c++)


el primero es un bucle para las filas ( por eso la f por nombre de variable ) que las recorre de la 0 a la 4. El segundo es un bucle para columnas... y las recorre de la 0 a la 4... y eso para cada valor de f.

Dicho esto, si, estarías recorriendo toda la matriz.

Y dicho esto también me permito añadir lo siguiente: si te pierdes con dos bucles y cuatro líneas de código ponte las pilas porque esto no es ni tan siquiera la punta del iceberg. Aprende a usar el depurador de c++ y a seguir la traza de los programas... te ayudará a comprender mejor cómo funciona el código... y haz muuuuchas prácticas :)
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 00:16 AM
Cita de: feedf en  1 Julio 2013, 23:42 PMestaria recorriendo toda la matriz o estaria recorriendo CADA fila y guardando el maximo en el vector ?
Ambas afirmaciones son sinonimas (recorrer todas las filas de una matriz = recorrer toda la matriz).

Y si, guarda el máximo de cada fila en el vector Maximo.
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 00:21 AM
te hago una consulta

mi codigo quedo asi mira

void opc2(float m1[5][20]) /* funciona pero para una sola Gaceosa(fila) */
{

int c,f,auxc,auxf,i;
int max[5]={m1[0][0],m1[0][0],m1[0][0],m1[0][0],m1[0][0]};
int aux[5]={0};

   i=0;

for(f=1;f<=5;f++)
{
for(c=1;c<=20;c++)
{
if(m1[f][c]>max[f])
{
max[f]=m1[f][c];            
       aux[f]=c;
}
}

}

for(i=1;i<=5;i++)
{

printf("para la gaceosa %d se embotello mas en el centro %d\n",i,aux[i]);
}


}


funciona bien pero cuando lo corro se guarda en el vector aux[5](posicion 5 ) el valor 20 sin haber tocado esa posicion y las demas quedan en 0 o en los valores que deberian estar
no entiendo porque me podrias ayduar?
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 00:31 AM
Código (cpp) [Seleccionar]
aux[f]=c;
La c va desde 0 a 20, de que te extrañas?

Usa el vector max que para eso lo puse, por cierto me equivoqué aquí

Código (cpp) [Seleccionar]
int max[5]={m1[0][0],m1[0][0],m1[0][0],m1[0][0],m1[0][0]};

Prueba lo siguiente:

Código (cpp) [Seleccionar]
int c,f;
int max[5];

for (f = 0; f <5;f++)
{
    max[f] = 0;
   
    for (c=1;c < 20;c++)
    {
         if (m1[f][c] > max[f])
              max[f] = m1[f][c]
}
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 00:40 AM
claro pero al guardar la matriz en el vector max me guarda el valor qe esta en esas cordenadas y lo que yo necesitaria es saber en que columna esta el maximo y no el valor del maximo
nose si m estoy explicando bien o estoy pifiando en algo XD

jaj gracias
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 00:44 AM
Joe, pues avisa xD.

Código (cpp) [Seleccionar]
int c,f;
int max[f];
int max_coordenada[5];

for (f = 0; f <5;f++)
{
    max[f] = m[f][0];
    max_coordenada[f] = 0;

    for (c=1;c < 20;c++)
    {
         if (m1[f][c] > max[f])
         {
              max[f] = m1[f][c];
              max_coordenada[f] = c;
         }
}
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 00:51 AM
mira esta igual y me sigue saliendo en la posicion 5 del aux se guarda 20

el tema es que en for(c=1;c<=20;c++) tengo que p oner <= sino si pongo el valor 20 no me lo toma y poniendo <20 solo llega al 19

estoy perdido xD

void opc2(float m1[5][20]) /* funciona pero para una sola Gaceosa(fila) */
{

int c,f,auxc,auxf,i;
int max[5]={m1[0][0],m1[0][0],m1[0][0],m1[0][0],m1[0][0]};
int aux[5]={0};

    i=0;

for(f=1;f<=5;f++)
{
max[f]=m1[f][0];
aux[f]=0;

for(c=1;c<=20;c++)
{
if(m1[f][c]>max[f])
{
max[f]=m1[f][c];             
        aux[f]=c;
}
}

}
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 00:55 AM
probe con tu code y en vez de 20 me tira 29999 lol

lo arregle un poco y me sigue tirando 20 qe raro
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 01:02 AM
edit no dije nada la ptm xD

no puedo hacer qe no me tire 20 :s
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 01:35 AM
Cita de: feedf en  2 Julio 2013, 00:51 AM
mira esta igual y me sigue saliendo en la posicion 5 del aux se guarda 20
No está igual, mira el bucle for:

Código (cpp) [Seleccionar]
for(f=1;f<=5;f++)

Menor o igual? Tiene que ser menor estricto. Además te estás saltando la primera fila:

Código (cpp) [Seleccionar]
for(f=0;f<5;f++)

Lo mismo con el otro for:

Código (cpp) [Seleccionar]
for(c=1;c<20;c++)
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 01:46 AM
por que menor estricto? si la matriz llega a 20
si se elige la columna 20 no la toma por qe con el < solo no la toma
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 01:55 AM
Cita de: feedf en  2 Julio 2013, 01:46 AM
por que menor estricto? si la matriz llega a 20
si se elige la columna 20 no la toma por qe con el < solo no la toma
Son 20 elementos a contar desde el cero, ergo los índices van 0-19
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 02:34 AM
sabes que me sigue trayendo basura en la poscion 5 del vector fuuuuuuuuuuuuuuuuu

no cargo nada y se carga solo con 2 o 3

es una boludes pero me esta volviendo loco XD
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 02:39 AM
Cita de: feedf en  2 Julio 2013, 02:34 AM
sabes que me sigue trayendo basura en la poscion 5 del vector fuuuuuuuuuuuuuuuuu
La posición 5 del vector sería [4]  ;)

Por otro lado, asegurate de que la matriz esté inicializada completamente  :silbar:
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 03:19 AM
la verdad nose qe ***** ensima siento qe es una boludes y no la puedo razonar =(
Título: Re: maximo de una matriz?
Publicado por: feedf en 2 Julio 2013, 04:20 AM
lo resolvi agregandole una fila a la matriz quedo [6][20] y funciona bien
porque? nose
pero la verdad me queme la cabeza xD
Título: Re: maximo de una matriz?
Publicado por: amchacon en 2 Julio 2013, 10:59 AM
Cita de: feedf en  2 Julio 2013, 04:20 AM
lo resolvi agregandole una fila a la matriz quedo [6][20] y funciona bien
¿Pusister el for como te dije?  >:D