Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gabyricardo92 en 9 Julio 2013, 15:53 pm



Título: Ayuda con ejercicio a entregar en c++
Publicado por: gabyricardo92 en 9 Julio 2013, 15:53 pm
Buenos dias gente, mi intención no es que resuelvan mi ejercicio ya que no tendría sentido ni molestarlos, tan solo les pido un punto de partida para agarrar viaje, se los agradeceria muchisimo. Tengo que hacer un programa que pida nombre de usuario y contraseña y si lo pongo mal 3 veces que salga, si no que me mande a un menu desde donde maneje el resto del ejercicio (Esto ya lo tengo realizado) Estoy teniendo serios problemas en la carga de datos, no se como encararlo, estoy mareado entre matrices y vectores :( y me frustra
Dice lo siguiente:

Una univdad desea analizar los sueldos abonados a sus 60 docentes, para ello sabe:
Lote 1:-Legajo del docente
-Mes
-Categoria
-Cantidad de Hs Trabajadas



Lote 2: El valor de cada categoria y su descripcion se deberan cargar en memoria y son 3, titular, asociado, y adjunto (Esto no entiendo, por que yo lo que pense fue VectorCat[3]=Descripcion, pero como hago eso en c? :S me dice que es imposible convertir un int en char, y es logico, por que char es la descripcion e int la categoria.

Se desea saber:

Sueldo anual de cada profesor
total de sueldos pagados por cada mes
Para cada profesor cantidad de sueldos mayores a su sueldo promedio
Imprimir ordenado por sueldo anual de menor a mayor:
1-Sueldo anual
2-Legajo del PRofe
3-Sueldo Promedio
4-Porcentaje

Ademas que tampoco me dan un valor de la hora como para sacar el sueldo, pero eso se lo voy a inventar yo.

Si pudieran darme un punto de partida, lo agradeceria enormemente y disculpen las molestias


Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: eferion en 9 Julio 2013, 16:04 pm
Pues a ver, para manejar los datos lo mejor sería utilizar estructuras de datos.

El lote 1 podría ser algo así

Código
  1. struct lote1
  2. {
  3.    char[MAX] legajo;
  4.    int mes;
  5.    char[MAX] categoria; // si fuese un indice podrias usar un int o un puntero
  6.    int horas_trabajadas;
  7. };

Y el lote 2...
Código
  1. struct lote2
  2. {
  3.  char[MAX] titular;
  4.  char[MAX] asociado;
  5.  char[MAX] adjunto;
  6. };

... a no ser que los datos del lote 2 sean referencias, en cuyo caso deberías sustituir los arrays por punteros.



Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: gabyricardo92 en 9 Julio 2013, 16:05 pm
Eferion, muchisimas gracias por tu ayuda, he estado viendo muchos videos de estructuras (estoy hace horas con esto y no pude avanzar casi nada u.u) y es mas simple, el problema es que aun no lo vimos, y en lo posible quisiera evitarlas, hemos visto hasta Matrices y Vectores con el profesor, Gracias!


Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: gabyricardo92 en 9 Julio 2013, 16:10 pm
Código:
int main () {
int vcat[3]={0};
int i=0,cat,mes,leg,ch;
printf("Ingrese numero de LEGAJO del docente o 0 para finalizar la carga");
scanf("%d", &leg);
while (leg!=0) {
printf("Ingrese mes trabajado");
scanf("%d",&mes);
printf("Ingrese categoria a la que pertenece el docente");
scanf("%d",&cat);
printf("Ingrese la cantidad de horas que trabajo");
scanf("%d",&ch);
}
printf("Ingrese numero de LEGAJO del docente o 0 para finalizar");
}

Hasta aqui he avanzado en lo que seria la carga de datos, el tema es que estoy mareado entre las matrices y vectores :_


Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: eferion en 9 Julio 2013, 16:13 pm
Un ejemplo sencillo de la utilidad de las estructuras.

Imagínate que tienes que gestionar una clase de 30 alumnos y para cada alumno necesitas guardar su nombre, sus apellidos, su edad, y la nota media de cada trimestre.

con estructuras:

Código
  1. struct alumno
  2. {
  3.    char nombre[MAX];
  4.    char apellidos[MAX];
  5.    int edad;
  6.    float nota_media[3];
  7. };
  8.  
  9. struct alumno alumnos[30];
  10.  
  11. void imprimir( struct alumno alumnos[30] )
  12. {
  13.  int i;
  14.  for ( i=0; i<30; ++i )
  15.  {
  16.    printf( "%s\n", alumnos[ i ].nombre );
  17.    printf( "%s\n", alumnos[ i ].apellidos );
  18.    printf( "%d\n", alumnos[ i ].edad );
  19.  
  20.    // y esto podría ir en otro bucle
  21.    printf( "%f\n", alumnos[ i ].nota_media[ 0 ] );
  22.    printf( "%f\n", alumnos[ i ].nota_media[ 1 ] );
  23.    printf( "%f\n", alumnos[ i ].nota_media[ 2 ] );
  24.  }
  25. }

sin estructuras

Código
  1. char nombres[30][MAX];
  2. char apellidos[30][MAX];
  3. int edades[30];
  4. float notas_medias[30][3];
  5.  
  6. // ...
  7.  
  8. void imprimir( char nombres[30][MAX], char apellidos[30][MAX], int edades[30], float notas_medias[30][3] )
  9. {
  10.  int i;
  11.  for ( i=0; i<30; ++i )
  12.  {
  13.    printf( "%s\n", nombres[ i ] );
  14.    printf( "%s\n", apellidos[ i ] );
  15.    printf( "%d\n", edades[ i ] );
  16.  
  17.    // y esto podría ir en otro bucle
  18.    printf( "%f\n", nota_medias_medias[ i ][ 0 ] );
  19.    printf( "%f\n", nota_medias_medias[ i ][ 1 ] );
  20.    printf( "%f\n", nota_medias_medias[ i ][ 2 ] );
  21.  }
  22. }

Queda claro que con estructuras todo queda más recogido y "estructurado"... sin estructuras cada array va a su bola y es muy fácil meter la pata.


Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: gabyricardo92 en 9 Julio 2013, 16:22 pm
Claro, entiendo, es mas sencillo y queda mas prolijo, el tema es que no voy a poder usarlas :( ya que no llegamos ahi todavia en clase. De ultima si se me complica mucho con el tema de las matrices y vectores tendre que hacerlo así, me quedare toda la noche u.u eso pasa por dejar las cosas a ultimo momento, el que me lee nunca haga esto D= jaja. Agradezco una ves mas tu ayuda. No me gusta molestar pero realmente no le encuentro la vuelta al asunto, y estoy hace horas, me siento frustrado, pero lo conseguire :D


Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: eferion en 9 Julio 2013, 16:45 pm
En tal caso, si no quieres beber de la fuente de la locura, hazte esquemas en papel donde quede bien claro que arrays tienen que ir de la mano y qué almacena cada uno.

Mantener demasiada información en la cabeza no suele ser una buena idea si quieres que tu software funcione.


Título: Re: Ayuda con ejercicio a entregar en c++
Publicado por: gabyricardo92 en 9 Julio 2013, 16:48 pm
Si, voy a tratar de hacer los diagramas primero a ver si puedo llegar a una conclusión. Agradezco por tus respuestas. Deseame suerte jajaja, esperemos que funcione, lo necesito entregar mañana u.u