Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Crowgray en 14 Junio 2010, 06:15 am



Título: como paso una matriz a un vector ??
Publicado por: Crowgray en 14 Junio 2010, 06:15 am
Hola q tal bueno mi duda es la siguiente necesito un programa que lea una matriz introducida por el usuario supuestamente cada fila pertenece a las calificaciones de un alumno y se quiere saber las calificaciones mas altas de todos los alumnos e introduirlas en un vector para despues hacer el promedio

el problema es como paso los elementos de una matriz a un vector???
espro puedan ayudarme de antemano gracias


Título: Re: como paso una matriz a un vector ??
Publicado por: @synthesize en 14 Junio 2010, 06:21 am
Con una sentencia repetitiva, por ejemplo.

Pero si quieres ayuda, pon el código que lleves hecho.


Título: Re: como paso una matriz a un vector ??
Publicado por: Nork en 14 Junio 2010, 12:14 pm
Pues si cada fila de la matriz es un alumno siendo i el indice del bucle para recorrerla también será la posición del vector. Cuando hayas recorrido todas las columnas de i pones la nota más alta en
Código
  1. vector[i]


Título: Re: como paso una matriz a un vector ??
Publicado por: Crowgray en 14 Junio 2010, 16:55 pm
bueno esto es lo que llevo espero puedan ayudarme

#include <stdio.h>
#include <conio.h>
#define ne 30
#define nf 10
#define nc 10

void leemat (int, int, float[nf][nc]);
void impmat (int, int, float[nf][nc]);
void vector (int, float[nf][nc], float[ne]);
float promvector(float [ne], float);
int main (void)
{
int m, n;
float a[nf][nc], v[ne]
printf("Da el numero de filas");
scanf("\n%d", &m);
printf("Da el numero de columnas");
scanf("\n%d", &n);
printf("Da los elementos de la matriz");
leemat(m, n, a);
void vector(m, n, a, v);
prom=promvector(m, v[ne]);
printf("\n\t\t\t MATRIZ");
impmat(m, n, a,);
salida(v, prom);
getch();
}

void leemat(int m, int n, float x[nf][nc])
{
int i, j;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
scanf("%f", &x[j]);
}

void vector (int m, int n, float x[nf][nc], float v[ne])
{
int i, j;
em=x[1][1];     
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
if(em<x[1][j]);     //el problema es como hacer esto para un numero indeterminado
em=x[1][j];         //de filas y pasar los valores a un vector
float v[ne]=x[?][?];
}

float promvector(int m, float v[ne])
{
float prom;
int i;
int m;
for (i=1; i<=m; i++)
prom=(prom+x)/m
return(prom);
}

void impmat(int m, int n, float y[nf][nc], float v[ne])
{
int i, j;
for(i=1; i<=m; i++)
{
printf("\n\n\t\t");
for(j=1; j<=n; j++)
printf("   %.2f", y[j]);
}
}


Título: Re: como paso una matriz a un vector ??
Publicado por: 16BITBoy en 14 Junio 2010, 20:05 pm
Creo que hay otra forma, pero yo suelo pasar matrices a una función usando punteros. Podría ser solucionado de esta forma:
Código:
int * recorreMatriz (int **matriz, int x, int y)
{
      int num = 0;
      int i,j;
      int *vector;

      num = x * y;

      vector = (int *) malloc(sizeof(int)*num);

      for(i=0;i<y;i++)
      {
                  for(j=0; j<x; j++)
                  {
                           vector[x*y] = matriz[i][x];
                   }
      }
      return vector;
}

Se puede hacer mejor y el código no lo he probado esta escrito ahí al tun tun, pero a bote pronto pienso que eso es lo que buscas.

salu2