Problema de matrices
Hola, soy nuevo por aqui en el foro aunque sigo desde hace un tiempo ya esta genial web.Tengo un ejercicio para resolver pero no consigo darle forma.Este es el enunciado
""Se dispone de una matriz de NxM valores reales, donde N es el número de máquinas,numeradas de 0 a N-1 y M es el número máximo de incidencias que pueden suceder en un periodo dado. Cada incidencia en cada máquina se indica con un número real positivo que indica el número de horas que ha estado parada la máquina. En cada fila se indica con -1 el fin de las incidencias. Por ejemplo, si una máquina ha tenido 3 incidencias, la fila 0 será {2,
1.5, 0.25, -1, …}. Se pide:
a) Escribir una función o procedimiento que obtenga un vector con la suma de las horas para cada máquina y además el número total de horas que suman todas las máquinas.""
Bien, yo lo que hago es recorrer la matriz por filas pero claro, no se como hacer para que cuando aparezca un -1 deje esa fila y siga con la siguiente...estoy bastante pez en esto de C.He hecho un ejemplo con una matriz de 3x3
int a[3][3]={{1,1,1},{1,1,1},{0,0,0}};
int i,j,v[3];
int sumTotal;
for (i=0; i<3; i++){
for (j=0; j<3; j++)
v[i] = v[i]+a[i][j];
sumTotal=sumTotal+a[i][j];
}
Pero no consigo que se sume bien,¿una ayudita?
Gracias
""Se dispone de una matriz de NxM valores reales, donde N es el número de máquinas,numeradas de 0 a N-1 y M es el número máximo de incidencias que pueden suceder en un periodo dado. Cada incidencia en cada máquina se indica con un número real positivo que indica el número de horas que ha estado parada la máquina. En cada fila se indica con -1 el fin de las incidencias. Por ejemplo, si una máquina ha tenido 3 incidencias, la fila 0 será {2,
1.5, 0.25, -1, …}. Se pide:
a) Escribir una función o procedimiento que obtenga un vector con la suma de las horas para cada máquina y además el número total de horas que suman todas las máquinas.""
Bien, yo lo que hago es recorrer la matriz por filas pero claro, no se como hacer para que cuando aparezca un -1 deje esa fila y siga con la siguiente...estoy bastante pez en esto de C.He hecho un ejemplo con una matriz de 3x3
int a[3][3]={{1,1,1},{1,1,1},{0,0,0}};
int i,j,v[3];
int sumTotal;
for (i=0; i<3; i++){
for (j=0; j<3; j++)
v[i] = v[i]+a[i][j];
sumTotal=sumTotal+a[i][j];
}
Pero no consigo que se sume bien,¿una ayudita?
Gracias
Hola, soy nuevo por aqui en el foro aunque sigo desde hace un tiempo ya esta genial web.Tengo un ejercicio para resolver pero no consigo darle forma.Este es el enunciado
""Se dispone de una matriz de NxM valores reales, donde N es el número de máquinas,numeradas de 0 a N-1 y M es el número máximo de incidencias que pueden suceder en un periodo dado. Cada incidencia en cada máquina se indica con un número real positivo que indica el número de horas que ha estado parada la máquina. En cada fila se indica con -1 el fin de las incidencias. Por ejemplo, si una máquina ha tenido 3 incidencias, la fila 0 será {2,
1.5, 0.25, -1, …}. Se pide:
a) Escribir una función o procedimiento que obtenga un vector con la suma de las horas para cada máquina y además el número total de horas que suman todas las máquinas.""
Bien, yo lo que hago es recorrer la matriz por filas pero claro, no se como hacer para que cuando aparezca un -1 deje esa fila y siga con la siguiente...estoy bastante pez en esto de C.He hecho un ejemplo con una matriz de 3x3
int a[3][3]={{1,1,1},{1,1,1},{0,0,0}};
int i,j,v[3];
int sumTotal;
for (i=0; i<3; i++){
for (j=0; j<3; j++)
v[i] = v[i]+a[i][j];
sumTotal=sumTotal+a[i][j];
}
Pero no consigo que se sume bien,¿una ayudita?
Gracias
En primer lugar, has colocado las llaves en el lugar equivocado (o te falta un juego de llaves). En segundo lugar, no compruebas la condición de terminación dentro del bucle (tampoco has puesto ningún -1 en tu matriz de ejemplo). Prueba con esto:
""Se dispone de una matriz de NxM valores reales, donde N es el número de máquinas,numeradas de 0 a N-1 y M es el número máximo de incidencias que pueden suceder en un periodo dado. Cada incidencia en cada máquina se indica con un número real positivo que indica el número de horas que ha estado parada la máquina. En cada fila se indica con -1 el fin de las incidencias. Por ejemplo, si una máquina ha tenido 3 incidencias, la fila 0 será {2,
1.5, 0.25, -1, …}. Se pide:
a) Escribir una función o procedimiento que obtenga un vector con la suma de las horas para cada máquina y además el número total de horas que suman todas las máquinas.""
Bien, yo lo que hago es recorrer la matriz por filas pero claro, no se como hacer para que cuando aparezca un -1 deje esa fila y siga con la siguiente...estoy bastante pez en esto de C.He hecho un ejemplo con una matriz de 3x3
int a[3][3]={{1,1,1},{1,1,1},{0,0,0}};
int i,j,v[3];
int sumTotal;
for (i=0; i<3; i++){
for (j=0; j<3; j++)
v[i] = v[i]+a[i][j];
sumTotal=sumTotal+a[i][j];
}
Pero no consigo que se sume bien,¿una ayudita?
Gracias
En primer lugar, has colocado las llaves en el lugar equivocado (o te falta un juego de llaves). En segundo lugar, no compruebas la condición de terminación dentro del bucle (tampoco has puesto ningún -1 en tu matriz de ejemplo). Prueba con esto:
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
if (a[i][j] == -1)
{
v[i] = v[i]+a[i][j];
sumTotal=sumTotal+a[i][j];
}
else
break;
}
}
Saludos,
Disculpa, se me ha colado una copia de tu post al principio de la respuesta.
Saludos
Saludos
Muchas gracias Capitan Kirk, si que es verdad que en mi ejemplo no habia puesto ningun -1 :( . Ahora lo veo mas claro, necesito entender este estilo de problemas que tengo examen en una semana xD
Gracias de nuevo
Gracias de nuevo