Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema con matrices

Estas en el tema de Problema con matrices en el foro de C/C++ en Foros del Web. Hola gente, qué tal? Estoy resolviendo un ejercicio y tengo el siguiente problema. El ejercicio dice asi: "Una universidad desea analizar los sueldos de 60 ...
  #1 (permalink)  
Antiguo 24/07/2013, 09:57
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 5 meses
Puntos: 0
Problema con matrices

Hola gente, qué tal? Estoy resolviendo un ejercicio y tengo el siguiente problema. El ejercicio dice asi:
"Una universidad desea analizar los sueldos de 60 docentes. Tengo 2 lotes, el primero numero legajo, mes, categoría y cantidad de hs trabajadas. El segundo es el valor de cada categoría, su descripcion (no importante), no todos los docentes trabajan todos los meses y termina con nlegajo = 0." Tengo que averiguar sueldo anual de cada profesor.

Yo use 2 matrices, a una le sumo las horas trabajadas y otra el sueldo de cada empleado (m=mes):

MD[nlegajo][m]= MD[nlegajo][m]+ch;
ME [nlegajo] [m] = (ME [nlegajo] [m] + (ch*Vvalor[cat]));

Yo ya sume la cantidad de hs y eso, pero el problema es que al hacer un printf recorriendo las matrices, me da todo 0 o números cualquiera. Al utilizar funciones me fijé las declaraciones en el main, antes, en todos lados y están bien. Lo que no entiendo es si plantie mal el problema o algo en el código esta mal armado.

Agradezco cualquier ayuda!
  #2 (permalink)  
Antiguo 24/07/2013, 17:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con matrices

Tal vez no inicializaste la matriz, o no la estás recorriendo apropiadamente.

Un pequeño ejemplo que muestra como inicializar una matriz de tamaño estático en C++ y como recorrerla:
Código:
#include <stdio.h>

int main()
{
	const unsigned MAX_ITEMS = 6;
	// Declaración de matriz e inicialización a cero
	int test[MAX_ITEMS][MAX_ITEMS] = {0};
	unsigned j = MAX_ITEMS, i = MAX_ITEMS;

	// Recorrer la matriz en reversa adicionando un valor
	while(j-- > 0)
	{
		i = MAX_ITEMS;
		while(i-- > 0)
		{
			test[j][i] += j + i;
		}
	}

	// Recorrer la matriz en orden para imprimir sus valores
	for (j = 0; j < MAX_ITEMS; ++j)
	{
		for (i = 0; i < MAX_ITEMS; ++i)
		{
			printf("%3i", test[j][i]);
		}
		printf("\n");
	}
}

/*
Debería imprimir esto:

  0  1  2  3  4  5
  1  2  3  4  5  6
  2  3  4  5  6  7
  3  4  5  6  7  8
  4  5  6  7  8  9
  5  6  7  8  9 10
*/
  #3 (permalink)  
Antiguo 24/07/2013, 18:37
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema con matrices

Gracias por responder. Las matrices las inicialize bien , recién me fije. Yo recorro la matriz así:

Código:
                          for (f=1;f<=60;f++) {
                              for (c=1;c<=12;c++) {
                                  printf("Legajo: %d", MD [f] [c]);
                                  printf("Sueldo: %d", ME [f] [c]);
                                  }
                                  }
Así me dan todos los valores 0 y no se porque.
  #4 (permalink)  
Antiguo 25/07/2013, 01:51
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Problema con matrices

Si muestras el resto del código, será más fácil ver dónde puede estar el fallo.
  #5 (permalink)  
Antiguo 28/07/2013, 16:35
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema con matrices

Antes del main y el mismo:

Código:
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>

void imprimir_menu ();
void login (int [] [13],int [] [13], int [], int []); 
void ingr_datos (int [] [13],int [] [13], int [], int []);
void opcion_x ();
void menu_sin0 (int [] [13],int [] [13], int [], int []);

int main () {
    int MD [61] [13] = {0};
    int ME [61] [13] = {0};
    int Vvalor [4] = {0};
    int VS [61] = {0};
    login (MD, ME, Vvalor, VS);
    
    
}
Login contiene a todas las otras funciones, por eso estan declaradas las matrices y demás. Esta la función para cargar las matrices y vectores (estoy 100% seguro que algo esta mal acá):

Código:
          void ingr_datos (int MD [61] [13],int ME [61] [13], int Vvalor [4], int VS [61]) {
          
          int Vmes [13];
          int i,m;
          char desc [4][30];
          int nlegajo, cat;
          int ch;
           printf("----CARGA DE DATOS---- \n");
          for (i=1;i<=3;i++) {
          printf("Ingrese descripcion de categoria: ");
          scanf("%s",& desc[i]);
          printf("Ingrese valor de categoria: ");
          scanf("%d",& Vvalor[i]);
          }
          printf ("Ingrese numero de legajo: ");
          scanf("%d",& nlegajo);
          while (nlegajo!=0) {
          printf ("Ingrese categoria: ");
          scanf("%d",& cat);
          for (m=1;m<=12;m++){
                      printf("Ingrese cantidad de horas trabajadas por mes %d: ",m);
                      scanf("%d",&ch);
                      Vmes[m]=Vmes[m]+ch;
                      MD[nlegajo][m]= MD[nlegajo][m]+ch;                           
                      ME [nlegajo] [m] = (ME [nlegajo] [m] + (ch*Vvalor[cat]));
                      }
                      printf ("Ingrese numero de legajo: ");
          scanf("%d",& nlegajo);
               }
          system ("pause");
          }
Y esta es la función donde intento imprimir todo:

Código:
     void menu_sin0 (int MD [61] [13],int ME [61] [13], int Vvalor [4], int VS [61]) {
          int opcion;
          printf("Ingrese la opcion deseada: ");
          scanf("%d",& opcion);
                    
          switch (opcion)
              {

                     case 1:
                          for (f=1;f<=60;f++) {
                              for (c=1;c<=12;c++) {
                                  printf("Sueldo: %d", ME [f] [c]);
                                  }
                                  }
                          break;
                     case 2:
                          printf ("\n");
                          break;
                     case 3:
                          printf ("\n");
                          printf("proximamente3");
                          break;
                     case 4:
                          printf ("\n");
                          printf("proximamente4");
                          break;
                     case 10:
                          exit (1);
                          break;   
                            }
               
}
Seguro hay algun integer que no se usa, es porque probe demasiadas cosas la verdad.

Etiquetas: funcion, matrices
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:09.