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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Plantillas programas escolares en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Plantillas programas escolares en C  (Leído 634 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.587


🏴 Libertad!!!!!


Ver Perfil WWW
Plantillas programas escolares en C
« en: 21 Noviembre 2018, 23:59 pm »

El siguiente post muestra  fragmentos de código en C que seguido son utilizados en los programas pedidos de Tareas en las escuelas.

Plantilla de un Menu de opciones usando do-while + switch

Descargar Menu_do_while_switch.c

Código
  1. /*
  2. Twitter: @albertobsd
  3. email: alberto.bsd@gmail.com
  4.  
  5. Buscame tambien en:
  6. web: https://programaciontrabajosescolares.blogspot.com/
  7. e-mail: ProgramacionTrabajosEscolares@gmail.com
  8. facebook: https://www.facebook.com/ProgramacionTrabajosEscolares
  9. */
  10.  
  11. #include<stdio.h>
  12. #include<stdlib.h>
  13.  
  14. int main() {
  15. int opcion;
  16. int entrar =1;
  17. char temp[10];
  18. do {
  19. printf("1) Opcion 1\n");
  20. printf("2) Opcion 2\n");
  21. printf("3) Opcion 3\n");
  22. printf("4) Salir\n");
  23. do{
  24. printf("Ingrese una opcion");
  25. fgets(temp,10,stdin);
  26. opcion  = strtol(temp,NULL,10);
  27. }while(opcion < 0);
  28. switch(opcion) {
  29. case 1:
  30. printf("Usted selecciono %i\n",opcion);
  31. break;
  32. case 2:
  33. printf("Usted selecciono %i\n",opcion);
  34. break;
  35. case 3:
  36. printf("Usted selecciono %i\n",opcion);
  37. break;
  38. case 4:
  39. printf("Usted selecciono %i\n",opcion);
  40. entrar = 0;
  41. break;
  42. default:
  43. printf("Opcion incorrecta - Mensaje de Error\n");
  44. break;
  45. }
  46. }while(entrar == 1); //Se puede dejar como  "}while(entrar);"
  47. return 0;
  48. }
  49.  



Fuente: Plantilla de para Capturar Datos y Mostrarlos


Plantilla de para Capturar Datos y Mostrarlos

Usando estructura de datos y memoria dinámica para los datos almacenados.

Descarga plantilla_capturar_mostrar_datos.c

Código
  1. /*
  2. Twitter: @albertobsd
  3. email: alberto.bsd@gmail.com
  4.  
  5. Buscame tambien en:
  6. web: https://programaciontrabajosescolares.blogspot.com/
  7. e-mail: ProgramacionTrabajosEscolares@gmail.com
  8. facebook: https://www.facebook.com/ProgramacionTrabajosEscolares
  9. */
  10.  
  11. #include<stdio.h> //Funciones printf, fgets
  12. #include<stdlib.h> //realloc
  13. #include<string.h> //strcspn
  14. #include<ctype.h> //tolower
  15.  
  16. #define MAX_LEN_ALFANUMERICA_1 100
  17. #define MAX_LEN_ALFANUMERICA_2 50
  18. #define MAX_LEN_ALFANUMERICA_3 20
  19.  
  20. typedef struct plantilla_struct {
  21. char variable_alfanumerica_1[MAX_LEN_ALFANUMERICA_1];
  22. char variable_alfanumerica_2[MAX_LEN_ALFANUMERICA_2];
  23. char variable_alfanumerica_3[MAX_LEN_ALFANUMERICA_3];
  24. int variable_entera_1;
  25. int variable_entera_2;
  26. int variable_entera_3;
  27. float variable_flotante_1;
  28. }TIPO;
  29.  
  30. int funcion_ingreso_de_datos();
  31. int funcion_imprimir_datos();
  32.  
  33.  
  34. TIPO *tipos = NULL;
  35. int contador_tipos = 0;
  36.  
  37. int main() {
  38. int opcion;
  39. int entrar =1;
  40. char temp[10];
  41. do {
  42. printf("1) funcion_ingreso_de_datos\n");
  43. printf("2) funcion_imprimir_datos\n");
  44. printf("3) Salir\n");
  45. do{
  46. printf("Ingrese una opcion: ");
  47. fgets(temp,10,stdin);
  48. opcion  = strtol(temp,NULL,10);
  49. }while(opcion <= 0); //Mientras sea menor o igual que 0
  50.  
  51. switch(opcion) {
  52. case 1:
  53. printf("Usted selecciono %i\n",opcion);
  54. funcion_ingreso_de_datos();
  55. break;
  56. case 2:
  57. printf("Usted selecciono %i\n",opcion);
  58. funcion_imprimir_datos();
  59. break;
  60. case 3:
  61. printf("Usted selecciono %i\n",opcion);
  62. entrar = 0;
  63. break;
  64. default:
  65. printf("Opcion incorrecta - Mensaje de Error\n");
  66. break;
  67. }
  68. }while(entrar == 1); //Se puede dejar como  "}while(entrar);"
  69. return 0;
  70. }
  71.  
  72. int funcion_ingreso_de_datos() {
  73. int opcion;
  74. int entrar =1,entrar_opcion_si_no;
  75. char temp[10];
  76. do {
  77.  
  78. tipos = realloc(tipos,(contador_tipos+1)*sizeof(struct plantilla_struct)); //Incrementamos el espacio para 1 Variable TIPO mas en el arreglo
  79.  
  80. //Capturamos variable_alfanumerica_1
  81. printf("Capture variable_alfanumerica_1: ");
  82. fgets(tipos[contador_tipos].variable_alfanumerica_1,MAX_LEN_ALFANUMERICA_1,stdin);
  83. tipos[contador_tipos].variable_alfanumerica_1[strcspn(tipos[contador_tipos].variable_alfanumerica_1,"\n\r")] = '\0'; //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena
  84.  
  85. //Capturamos variable_alfanumerica_2
  86. printf("Capture variable_alfanumerica_2: ");
  87. fgets(tipos[contador_tipos].variable_alfanumerica_2,MAX_LEN_ALFANUMERICA_2,stdin);
  88. tipos[contador_tipos].variable_alfanumerica_2[strcspn(tipos[contador_tipos].variable_alfanumerica_2,"\n\r")] = '\0'; //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena
  89.  
  90. //Capturamos variable_alfanumerica_3
  91. printf("Capture variable_alfanumerica_3: ");
  92. fgets(tipos[contador_tipos].variable_alfanumerica_3,MAX_LEN_ALFANUMERICA_3,stdin);
  93. tipos[contador_tipos].variable_alfanumerica_3[strcspn(tipos[contador_tipos].variable_alfanumerica_3,"\n\r")] = '\0'; //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena
  94.  
  95.  
  96. //Capturamos variable_entera_1
  97. do {
  98. printf("Capture variable_entera_1: (Solo mayores que 0) ");
  99. fgets(temp,10,stdin);
  100. tipos[contador_tipos].variable_entera_1 = strtol(temp,NULL,10); //Solo procesamos numeros BASE 10
  101.  
  102. }while(tipos[contador_tipos].variable_entera_1 <= 0); // Salimos del DO solo si el valore leido es mayor o igual a 1
  103.  
  104. //Capturamos variable_entera_2
  105. do {
  106. printf("Capture variable_entera_2: (Solo mayores o iguales que 0) ");
  107. fgets(temp,10,stdin);
  108. tipos[contador_tipos].variable_entera_2 = strtol(temp,NULL,10); //Solo procesamos numeros BASE 10
  109. }while(tipos[contador_tipos].variable_entera_2 < 0); // Salimos del DO solo si el valore leido es mayor o igual a 0
  110.  
  111.  
  112. //Capturamos variable_entera_3
  113. do {
  114. printf("Capture variable_entera_3: (Solo Negativos) ");
  115. fgets(temp,10,stdin);
  116. tipos[contador_tipos].variable_entera_3 = strtol(temp,NULL,10); //Solo procesamos numeros BASE 10
  117. }while(tipos[contador_tipos].variable_entera_3 >= 0); // Salimos del DO solo si el valor leido es negativo
  118.  
  119. //Capturamos variable_flotante_1
  120. do {
  121. printf("Capture variable_flotante_1: (Solo distintos que 0) ");
  122. fgets(temp,10,stdin);
  123. tipos[contador_tipos].variable_flotante_1 = strtof(temp,NULL);
  124. }while(tipos[contador_tipos].variable_flotante_1 == 0.0); // Salimos del DO solo si el valor leido distinto de 0
  125.  
  126. entrar_opcion_si_no = 1;
  127. do{
  128. printf("Desea segir ingresando mas datos? (s/n)\n");
  129. fgets(temp,10,stdin);
  130. switch(tolower(temp[0])) {
  131. case 's':
  132. entrar_opcion_si_no = 0;
  133. printf("Selecciono SI\n");
  134. break;
  135. case 'n':
  136. entrar_opcion_si_no = 0;
  137. printf("Selecciono NO\n");
  138. entrar = 0; // Se cambia la variable para salir del menu principal
  139. break;
  140. default:
  141. printf("opcion incorrecta, solo 's' o 'n'\n");
  142. break;
  143. }
  144. opcion  = strtol(temp,NULL,10);
  145. }while(entrar_opcion_si_no == 1);
  146.  
  147. contador_tipos++; //Aqui incrementamos el contador_tipos que indica cuantos valores completos tenemos de la estructura plantilla_struct
  148. }while(entrar == 1); //Se puede dejar como  "}while(entrar);"
  149. }
  150.  
  151. int funcion_imprimir_datos() { //Imprimir los datos no tiene mucho sentido, solo hay que recorrer correctamente la cantidad de registros previamente capturados
  152. int i = 0;
  153. while(i < contador_tipos) {
  154. printf("Datos del registro %i\n",(i+1));
  155. printf("variable_alfanumerica_1: %s\n",tipos[i].variable_alfanumerica_1);
  156. printf("variable_alfanumerica_2: %s\n",tipos[i].variable_alfanumerica_2);
  157. printf("variable_alfanumerica_3: %s\n",tipos[i].variable_alfanumerica_3);
  158. printf("variable_entera_1: %i\n",tipos[i].variable_entera_1);
  159. printf("variable_entera_2: %i\n",tipos[i].variable_entera_2);
  160. printf("variable_entera_3: %i\n",tipos[i].variable_entera_3);
  161. printf("variable_flotante_1: %f\n",tipos[i].variable_flotante_1);
  162. printf("\n");//Enter adicional
  163. i++;
  164. }
  165. }
  166.  


« Última modificación: 22 Noviembre 2018, 16:12 pm por AlbertoBSD » En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Plantillas programas escolares en C
« Respuesta #1 en: 22 Noviembre 2018, 02:27 am »

- El primer do while tiene la condición mal.
- Los siguientes codigos repiten varias veces el mismo código con distintas variables. Sugiero refactorizar en vez de repetir el código como lo haces.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.587


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Plantillas programas escolares en C
« Respuesta #2 en: 22 Noviembre 2018, 16:11 pm »

- El primer do while tiene la condición mal.


Listo!


- Los siguientes codigos repiten varias veces el mismo código con distintas variables. Sugiero refactorizar en vez de repetir el código como lo haces.

La plantilla va orientada a alguien que esta empezando con la programación. Y apenas esta aprendiendo conceptos básicos, si ya después el usuario que utilice la plantilla quiere refactorizar el código entonces sera cosa del usuario que utilice la plantilla.

Saludos
En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines