elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Duda con C, funciones y menu de opciones.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con C, funciones y menu de opciones.  (Leído 301 veces)
faakuh

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Duda con C, funciones y menu de opciones.
« en: 9 Agosto 2017, 17:07 »

Hola gente, buen día.

Necesito ayuda con un ejercicio de la universidad el cual no sé donde está el error que no me deja seguir. El ejercicio es el siguiente:

Una empresa de Internet tiene 5 tipos de servicios distribuidos en 10 zonas de trabajo.

Cada vez que se realiza una instalación se tiene los siguientes datos, que finalizan con el nro de instalación = 0

Nro de instalación
Tipo de servicio
Nro de zona
Monto a cobrar

Si la zona es la nro 3 y el tipo de servicio es el nro 1, recibe una bonificación del 20% sobre el monto a cobrar.

Se desea saber:

1. Tipo de instalación más solicitada en total
2. Promedio del valor de las instalaciones
3. Promedio del valor de las instalaciones realizadas en cada zona.




Ante todo mi S.O es W10 y el compilador que utilizo es Dev-C++
Y mi código hasta el momento es este (Todavía está incompleto ya que me estanqué en querer mostrar el tipo de instalación más solicitada en total):


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int vs [5];
  4. int vz [10];
  5. void mostrartipodeinstalacion();
  6. int promediodelvalordelasinstalaciones();
  7. void promedioinstalacionesxzona();
  8. int cargadatos();
  9. int main(int argc, char *argv[]) {
  10. int nroinstalacion;
  11.    int nroservicio;
  12.    int zona;
  13. int instsolicitada;
  14. int promedio = 0;
  15. int acumulador;
  16. int opc = 0;
  17. // Opciones del programa
  18. do {
  19. system ("cls");
  20. printf(" > 1 Carga de datos \n" );
  21. printf(" > 2 Mostrar tipo de instalacion mas solicitada en total \n" );
  22. printf(" > 3 Promedio del valor de las instalaciones \n" );
  23. printf(" > 4 Promedio del valor de las instalaciones realizadas en cada zona \n" );
  24. printf(" > 0 Salir " );
  25. printf("\n \n");
  26. printf("Seleccione alguna opcion segun su numero: \n");
  27. scanf("%d",&opc);
  28.  
  29. switch (opc)
  30. {
  31. case 1:
  32. cargadatos();
  33. break;
  34. case 2:
  35. mostrartipodeinstalacion();
  36. break;
  37. case 3:
  38.    promediodelvalordelasinstalaciones(acumulador);
  39.    printf("El promedio del valor de las instalaciones es de: %d. \n",promedio);
  40. break;
  41. case 4:
  42. promedioinstalacionesxzona();
  43. break;
  44. }
  45.  
  46. } while (opc != 0); //Mientras que "opc" sea indistinto a cero el programa se seguirá ejecutando.
  47. system("pause");
  48. return 0;
  49. }
  50.  
  51. void mostrartipodeinstalacion(){
  52.  
  53. }
  54.  
  55.  
  56. int promediodelvalordelasinstalaciones(int acumulador){
  57. int promedio = 0;
  58. promedio = acumulador / 2;
  59. printf("El promedio del valor de las instalaciones es de: %d. \n",promedio);
  60. return promedio;
  61. }
  62.  
  63. void promedioinstalacionesxzona(){
  64.  
  65. }
  66.  
  67. int cargadatos() {
  68. int i;
  69. int nroinstalacion = 0;
  70. int nroservicio = 0;
  71. int zona = 0;
  72. int monto = 0;
  73.    int acumulador = 0;
  74.  
  75.  
  76.  
  77. for (i=0;i<2;i++){
  78. printf("\n");
  79. printf("Introduzca el numero de instalacion: \n");
  80. scanf("%d",&nroinstalacion);
  81. printf("Introduzca el numero de servicio: \n");
  82. scanf("%d",&nroservicio);
  83. printf("Introduzca el numero de zona: \n");
  84. scanf("%d",&zona);
  85. printf("Introduzca el monto: \n");
  86. scanf("%d",&monto);
  87. vs [nroservicio];
  88. vz [zona];
  89. acumulador += monto;
  90. promediodelvalordelasinstalaciones(acumulador);
  91. }
  92. return 0;
  93. }
Cualquier ayuda que me quieran dar es bienvenida.

Saludos y desde ya gracias! :D


« Última modificación: 9 Agosto 2017, 17:17 por faakuh » En línea

MAFUS


Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Duda con C, funciones y menu de opciones.
« Respuesta #1 en: 9 Agosto 2017, 17:32 »

Este es un ejercicio de estructuras. Con variables de datos básicos no la vas a sacar.
Debes preparar una estructura para que aloje todos los datos de cada instalación,
también deberás usar, según lo que he leído en el enunciado, memoria dinámica (malloc, free, ...) para incluir en una lista las instalaciones que se van haciendo.
Deberás usar funciones que hagan uso de esta lista e identifiquen los datos necesarios para realizar el conteo que te piden.

También puedes liberarte de todo eso usando tantos arrays como tipos de datos diferentes te piden (deberás poner una dimensión aceptable como para alojar todas las posibles instalaciones que se vayan a hacer) y que a cada instalación se le distribuyan los datos en sendos arrays y, por tanto, cada dicha instalación se encuentre en un único índice compartidos por todos los arrays.

Esta segunda opción es más complicada de mantener pero solo sirve si no te han enseñado como usar estructuras.


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
faakuh

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Duda con C, funciones y menu de opciones.
« Respuesta #2 en: 10 Agosto 2017, 20:15 »

Hola, vi su respuesta e intente aprender estructuras, pero no logro hacer que me funcionen las opciones con los vectores.

Que estoy haciendo mal?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct datos {
  4.  int nroinstalacion;
  5.  int tiposervicio;
  6.  int zona;
  7.  int monto;
  8. }vservicio[5],vzona[10];
  9. float promedio;
  10. void mostrartipodeinstalacion();
  11. float promediodelvalordelasinstalaciones(int monto, float promedio);
  12. void promedioinstalacionesxzona();
  13. float cargadatos();
  14. void menu();
  15. int main(int argc, char *argv[]) {
  16. menu ();
  17.  
  18. system("pause");
  19. return 0;
  20. }
  21.  
  22. void mostrartipodeinstalacion(){
  23.  
  24. }
  25.  
  26.  
  27. float promediodelvalordelasinstalaciones(int monto,float promedio){
  28. printf("El promedio del valor de todas las instalaciones es: %.2f. ",promedio/2);
  29.  
  30. return promedio/2;
  31.  
  32. }
  33.  
  34. void menu (){
  35. int opc = 0;
  36. // Opciones del programa
  37. do {
  38. system ("cls");
  39. printf(" > 1 Carga de datos \n" );
  40. printf(" > 2 Mostrar tipo de instalacion mas solicitada en total \n" );
  41. printf(" > 3 Promedio del valor de las instalaciones \n" );
  42. printf(" > 4 Promedio del valor de las instalaciones realizadas en cada zona \n" );
  43. printf(" > 0 Salir " );
  44. printf("\n \n");
  45. printf("Seleccione alguna opcion segun su numero: \n");
  46. scanf("%d",&opc);
  47.  
  48. switch (opc)
  49. {
  50. case 1:
  51. cargadatos();
  52. break;
  53. case 2:
  54. mostrartipodeinstalacion();
  55. break;
  56. case 3:
  57.    promediodelvalordelasinstalaciones(promedio);
  58.    printf("El promedio del valor de todas las instalaciones es: %.2f. ",promedio/2);
  59. break;
  60. case 4:
  61. promedioinstalacionesxzona();
  62. break;
  63. }
  64.  
  65. } while (opc != 0); //Mientras que "opc" sea indistinto a cero el programa se seguirá ejecutando.
  66.  
  67.  
  68.  
  69.  
  70.  
  71. }
  72. void promedioinstalacionesxzona(){
  73.  
  74. }
  75.  
  76. float cargadatos() {
  77. int i;
  78. for (i=0;i<2;i++){
  79. printf("\n");
  80. printf("#%d Introduzca el numero de instalacion: \n",(i+1));
  81. scanf("%d",&vservicio[i].nroinstalacion);
  82. printf("#%d Introduzca el tipo de servicio: \n",(i+1));
  83. scanf("%d",&vservicio[i].tiposervicio);
  84. printf("#%d Introduzca el numero de zona: \n",(i+1));
  85. scanf("%d",&vzona[i].zona);
  86. printf("#%d Introduzca el monto: \n",(i+1));
  87. scanf("%d",&vservicio[i].monto);
  88. promedio = vservicio[0].monto + vservicio[1].monto / 2;
  89.  
  90. }
  91. return promedio;
  92. }

Desde ya, gracias!

Saludos.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Duda con C, funciones y menu de opciones.
« Respuesta #3 en: 10 Agosto 2017, 23:34 »

Creas dos arrays de la misma estructura: vservicios y vzona de 5 y 10 elementos respectivamente ¿por qué?. Los servicios y la zona son datos de la misma estructura no hay que separarlo después en un array. Además ¿dos números diferentes de elementos de cada estructura?
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Habilitar opciones del menu
Programación General
Erik# 0 764 Último mensaje 21 Septiembre 2008, 21:35
por Erik#
Opciones basicas del menu
Programación General
Erik# 0 652 Último mensaje 21 Septiembre 2008, 21:38
por Erik#
Menu opciones anti-batch injections. Permite hasta 10 opciones.
Scripting
carlitos.dll 0 1,358 Último mensaje 7 Octubre 2008, 08:21
por carlitos.dll
Ayuda menú de opciones
Programación C/C++
Bus_19 3 677 Último mensaje 18 Noviembre 2012, 20:09
por leosansan
[PYTHON] Menu opciones ¿Con funciones es lo correcto? « 1 2 »
Scripting
Yidu 14 17,013 Último mensaje 3 Abril 2013, 02:56
por 0x5d
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines