Ejercicio con matrices resuelto en un 90% (necesito ayuda)

Iniciado por Beaustyle, 8 Junio 2012, 03:00 AM

0 Miembros y 1 Visitante están viendo este tema.

Beaustyle

El ejercicio es este:

Hallar el menor número de cada columna de una matriz N * M y mostrar su
factorial en un vector. Genere números entre 0 y 10.

y pues mi código es este:


#include <iostream.h>
#include <stdlib.h>
void hallarMenor(int n, int m, int a[20][20], int b[20]);
void ingresarMatriz(int &n, int &m, int a[20][20]);
void mostrarMatriz(int n, int m, int a[20][20]);
void mostrarVector(int n, int b[20]);

int main()
{
      int n, m, a[20][20], b[20];
      ingresarMatriz(n, m, a);
      cout<<"Matriz ingresada: "<<endl;
      mostrarMatriz(n, m, a);
      hallarMenor(n, m, a, b);
      cout<<"El vector del factorial de los menores es: "<<endl;
      mostrarVector(n, b);
     
      system("PAUSE");
      return 0;
}
void hallarMenor(int n, int m, int a[20][20], int b[20]){
     int i, j, f, k, menor=11, c;
     for(j=0; j<m; j++)        //¿Si pongo el j primero, lo considera como columa o                                      //como fila?
             for(i=0; i<n; i++){
                      if(a[j]<menor){
                           menor=a[j];
                           b[k]=a[j];
                           k++;                                         
                           }
                   }
}
                               /*f=1;
                               for (c=1; c<=b[k]; c++){
                                    f=c*f;
                                     b[k]=f;
                                      k++;
        }
} */   
void ingresarMatriz(int &n, int &m, int a[20][20]){
     int i, j;
     cout<<"Ingresar nro filas: ";
     cin>>n;
     cout<<"Ingresar nro de columnas: ";
     cin>>m;
     for(i=0; i<n; i++){
              for(j=0; j<m; j++)
                       a[j]=(rand()%(10-0+1)+0);
                       }
}
void mostrarMatriz(int n, int m, int a[20][20]){
     int i, j;
      for(i=0; i<n; i++){
              for(j=0; j<m; j++)
                       cout<<a[j]<<"\t";
                       cout<<endl;
                       }
}
void mostrarVector(int n, int b[20]){
     int i;
     for(i=0; i<n; i++)
              cout<<b<<"\t";
              cout<<endl;
}



Lo del factorial lo puse como comentario porque quería saber si el vector me imprimía los valores mínimos de cada columna, pero no es así, solo me imprime ceros. ¿Alguna ayuda? ¿Qué estoy haciendo mal? ¿Si quiero explorar la matriz por columas, está bien poner el j antes?

durasno

Hola! te marco los errores:
1º Estas llenando mal la matriz, tiene q ser:
a[i][j]=(rand()%(10-0+1)+0);
y porque sumas y restas cero??? entre 0 y 10, rand()%11;
2º No inicias la semilla de rand(), por lo que si ejecutas varias veces el programa te va a repetir los numero. En el main pone srand(time(NULL));
3º para imprimir la matriz tambien tenes q usar a[j]
4º para imprimir el vector tenes q usar b
Citar¿Si pongo el j primero, lo considera como columa o como fila?
es la columna... solo tenes q arreglar el tema de los subindices como te marq antes

SAludos

PD: usa las etiquetas GeSHi para poner codigo
Ahorrate una pregunta, lee el man