como paso una matriz a un vector ??

Iniciado por Crowgray, 14 Junio 2010, 06:15 AM

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

Crowgray

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

@synthesize

Con una sentencia repetitiva, por ejemplo.

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

Nork

#2
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 (cpp) [Seleccionar]
vector[i]
C' Est La Vie

Crowgray

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]);
}
}

16BITBoy

Creo que hay otra forma, pero yo suelo pasar matrices a una función usando punteros. Podría ser solucionado de esta forma:

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
Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".