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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Problema con clear screen en: 26 Junio 2019, 07:45 am
Hola buenas gente, tengo un problema con esta tarea de estructuras, consiste en un programa que almacene el inventario de muebles y luego los liste dependiendo de su tipo, material o código, el problema es cuando uso la opción 5 que es buscar un mueble por su nombre, si ustedes ingresan un mueble y luego buscan con esa opción el mueble, este aparecerá por un segundo y luego desaparece, no se si deje mal puesto algún system("cls") por ahí o algo escribí mal, la idea es que quede fijo el listado hasta que elija otra opción.

Y lo otro si alguien me puede decir como poner una "ñ" en el printf porfa.

Adjunto mi código para que puedan probarlo.

De antemano gracias.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include<stdlib.h>
  4. #include<dos.h>
  5.  
  6. #define MAXLINEA 30
  7. #define MAXTIPO 15
  8. #define MAXCOLOR 15
  9. #define MAXMATERIAL 20
  10. #define MAXMUEBLE 1000
  11.  
  12. enum { Anadir=1, Listartodo, Listartipo, Listarmaterial, Buscarmueble, Eliminarmueble, Salir};
  13.  
  14. struct fecha {
  15. int dia;
  16. int mes;
  17. int ano;
  18. };
  19.  
  20. struct mueble {
  21. int codigo;
  22. char tipo[MAXTIPO];
  23. char color[MAXCOLOR];
  24. char material[MAXMATERIAL];
  25. struct fecha creacion;
  26. int precio;
  27. };
  28.  
  29. struct bodega {
  30. struct mueble bod[MAXMUEBLE];
  31. int cant;
  32. };
  33.  
  34. int main (void) {
  35.  
  36. struct bodega mis_muebles;
  37. int opc, i, j;
  38. char tipo[MAXTIPO];
  39. char material[MAXMATERIAL];
  40. char linea[MAXLINEA];
  41. int codigo;
  42.  
  43. mis_muebles.cant = 0;
  44.  
  45. do{
  46. do{
  47. printf ("---------------------\n");
  48. printf ("Inventario Muebletex\n");
  49. printf ("---------------------\n");
  50. printf ("1) Anadir mueble\n");
  51. printf ("2) Listar muebles\n");
  52. printf ("3) Listar por tipo de mueble\n");
  53. printf ("4) Listar por tipo de material\n");
  54. printf ("5) Buscar mueble\n");
  55. printf ("6) Eliminar mueble\n");
  56. printf ("7) Salir\n\n");
  57. printf ("Opcion: ");
  58.  
  59. gets(linea); sscanf (linea, "%d", &opc);
  60.  
  61. if (opc < 1 || opc > 7){
  62. printf ("Opcion inexistente. Debe estar entre 1 y 5\n");
  63. }
  64.  
  65. } while(opc < 1 || opc > 7);
  66.  
  67. switch (opc) {
  68.  
  69. case Anadir:
  70. sleep(1);
  71. system("cls");
  72. if (mis_muebles.cant == MAXMUEBLE){
  73. printf("Lo sentimos, La memoria esta llena.\n");
  74. } else{
  75. printf("Codigo:  ");
  76. gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].codigo);
  77.  
  78. printf("\nFecha:\n\n");
  79.  
  80. do{
  81. printf("Dia:  ");
  82. gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].creacion.dia);
  83. if (mis_muebles.bod[mis_muebles.cant].creacion.dia < 1 || mis_muebles.bod[mis_muebles.cant].creacion.dia > 31){
  84. printf ("Opcion inexistente. Debe estar entre 1 y 31\n");
  85. }
  86. } while (mis_muebles.bod[mis_muebles.cant].creacion.dia < 1 || mis_muebles.bod[mis_muebles.cant].creacion.dia > 31);
  87.  
  88. do{
  89. printf("Mes:  ");
  90. gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].creacion.mes);
  91. if (mis_muebles.bod[mis_muebles.cant].creacion.mes < 1 || mis_muebles.bod[mis_muebles.cant].creacion.mes > 12){
  92. printf ("Opcion inexistente. Debe estar entre 1 y 12\n");
  93. }
  94. } while (mis_muebles.bod[mis_muebles.cant].creacion.mes < 1 || mis_muebles.bod[mis_muebles.cant].creacion.mes > 12);
  95.  
  96. do{
  97. printf("Ano:  ");
  98. gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].creacion.ano);
  99. if (mis_muebles.bod[mis_muebles.cant].creacion.ano < 1000 || mis_muebles.bod[mis_muebles.cant].creacion.ano > 3000){
  100. printf ("Opcion inexistente. Debe estar entre 1000 y 3000\n");
  101. }
  102. } while (mis_muebles.bod[mis_muebles.cant].creacion.ano < 1000 || mis_muebles.bod[mis_muebles.cant].creacion.ano > 3000);
  103.  
  104. printf("\nTipo de mueble:  ");
  105. gets(mis_muebles.bod[mis_muebles.cant].tipo);
  106.  
  107. printf("Material:  ");
  108. gets(mis_muebles.bod[mis_muebles.cant].material);
  109.  
  110. printf("Color:  ");
  111. gets(mis_muebles.bod[mis_muebles.cant].color);
  112.  
  113. printf("Precio:  ");
  114. gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].precio);
  115.  
  116. mis_muebles.cant++;
  117. }
  118. sleep(1);
  119. system("cls");
  120. break;
  121.  
  122. case Listartodo:
  123. sleep(1);
  124. system("cls");
  125. for(i = 0; i < mis_muebles.cant; i++){
  126. printf("--------------------------------------\n");
  127. printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
  128. mis_muebles.bod[i].creacion.dia,
  129. mis_muebles.bod[i].creacion.mes,
  130. mis_muebles.bod[i].creacion.ano);
  131. printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
  132. printf("Material: %s\n", mis_muebles.bod[i].material);
  133. printf("Color: %s\n", mis_muebles.bod[i].color);
  134. printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
  135. printf ("\n");
  136. }
  137. break;
  138.  
  139. case Listartipo:
  140. sleep(1);
  141. system("cls");
  142. printf("Tipo de mueble a buscar:  "); gets(tipo);
  143. for(i = 0; i < mis_muebles.cant; i++){
  144. if (strcmp(tipo, mis_muebles.bod[i].tipo) == 0){
  145. printf("--------------------------------------\n");
  146. printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
  147. mis_muebles.bod[i].creacion.dia,
  148. mis_muebles.bod[i].creacion.mes,
  149. mis_muebles.bod[i].creacion.ano);
  150. printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
  151. printf("Material: %s\n", mis_muebles.bod[i].material);
  152. printf("Color: %s\n", mis_muebles.bod[i].color);
  153. printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
  154. }
  155. }
  156. break;
  157.  
  158. case Listarmaterial:
  159. sleep(1);
  160. system("cls");
  161. printf("Tipo de material a buscar:  "); gets(material);
  162. for(i = 0; i < mis_muebles.cant; i++){
  163. if (strcmp(material, mis_muebles.bod[i].material) == 0){
  164. printf("--------------------------------------\n");
  165. printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
  166. mis_muebles.bod[i].creacion.dia,
  167. mis_muebles.bod[i].creacion.mes,
  168. mis_muebles.bod[i].creacion.ano);
  169. printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
  170. printf("Material: %s\n", mis_muebles.bod[i].material);
  171. printf("Color: %s\n", mis_muebles.bod[i].color);
  172. printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
  173. }
  174. }
  175. break;
  176.  
  177. case Buscarmueble:
  178. sleep(1);
  179. system("cls");
  180. printf("Ingrese el codigo del producto a buscar:  "); scanf("%d", &codigo);
  181. for(i = 0; i < mis_muebles.cant; i++){
  182. if(codigo == mis_muebles.bod[i].codigo){
  183. printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
  184. mis_muebles.bod[i].creacion.dia,
  185. mis_muebles.bod[i].creacion.mes,
  186. mis_muebles.bod[i].creacion.ano);
  187. printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
  188. printf("Material: %s\n", mis_muebles.bod[i].material);
  189. printf("Color: %s\n", mis_muebles.bod[i].color);
  190. printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
  191. }
  192. }
  193. break;
  194.  
  195. case Eliminarmueble:
  196. sleep(1);
  197. system("cls");
  198. printf("Ingrese el codigo del producto para eliminar:  "); scanf("%d", &codigo);
  199. for(i = 0; i < mis_muebles.cant; i++){
  200. if(codigo == mis_muebles.bod[i].codigo){
  201. break;
  202. }
  203. }
  204. if(i < mis_muebles.cant){
  205. for(j = i+1; j < mis_muebles.cant; j++){
  206. mis_muebles.bod[j-1] = mis_muebles.bod[j];
  207. mis_muebles.cant--;
  208. }
  209. }
  210. sleep(1);
  211. system("cls");
  212. break;
  213. }
  214. } while(opc != Salir);
  215. }



Solucionado jajajajaj
2  Programación / Programación C/C++ / Re: Rendondeo superior en: 16 Mayo 2019, 07:20 am
Existe la función <ceil()> de la librería <cmath> (en C++) o <math.h> (en C).
De todas formas puedes crear una función, simplemente suma una unidad al número original y luego trúncalo.

Graciaas es la funcion que estaba buscando.

Saludos.
3  Programación / Programación C/C++ / Rendondeo superior en: 16 Mayo 2019, 07:14 am
Hola buenas, que funcion es la que se usa para redondeo superior de un numero, por ejemplo 1.5=2 , 1.3=2, 3.1=4, si se usa una funcion cual seria? o es necesario hacer un codigo para eso?
4  Programación / Programación C/C++ / Re: Separar un numero de 16 digitos en: 4 Mayo 2019, 23:42 pm
Hay muchas formas de resolver esto, yo te voy a comentar una posible solución.
Te recomiendo leer el número en una variable de tipo <long long> porque en un <int> no cabe un número de 16 dígitos y después ir guardando cada dígito en un array ya que tal como lo haces en esa cadena podrías escribir cualquier cosa y tener problemas en la ejecución.
Además separar un número en dígitos es un problema muy común cuando empiezas en programación y que viene bien que lo practiques ya que es muy útil.
Una vez guardado el número, si creas un array de memoria estática de tamaño 16 siempre (quiero decir, que no usas memoria dinámica) empieza a guardar los dígitos por el final y así podrás localizar siempre la penúltima posición ya que los 0 estarán al principio, no al final.

Suerte :-X

Gracias, tenia problemas con el long por que no usaba el %ld en el scanf solamente ponia %d por eso habia abandonado ese metodo pero ya lo logre.
Todavia no termino el programa pero lo dejare por aqui por si alguien le puede servir.

Código
  1. #include<stdio.h>
  2. int main (){
  3. long long int num;
  4. int i, c, n;
  5. int mat[16];
  6.  
  7. printf("Ingrese su numero de tarjeta: ");
  8. scanf("%lld", &num);
  9. // printf("%lld", num);
  10.  
  11. for(i=15; i>=0; i--){
  12. printf("num entrada %lld\n", num);
  13. n = num%10;
  14. printf("el numero es: %d \n", n);
  15. mat[i] = n;
  16. num = num - n;
  17. num = num/10;
  18. printf("num salida %lld\n", num);
  19. }
  20.  
  21. for (i=0; i<=15; i++){
  22. printf("%d", mat[i]);
  23. }
  24. }
5  Programación / Programación C/C++ / Separar un numero de 16 digitos en: 4 Mayo 2019, 19:11 pm
Buenas a todos, tengo un dilema con una tarea en la cual me piden ingresar un numero que puede estar entre 13 y 16 digitos el cual tengo que separar sus digitos e ingresarlos a una matriz, luego tengo que multiplicar por 2 los digitos separados empezando desde el penultimo digito y saltandome de a dos.

ej: 1234567891234567
     1  2  3  4  5  6  7  8  9  1  2  3  4  5  6  7
     2  2  6  4 10 6 14 8 18 1   4  3  8  5 12 7

y luego sumarlos.
Mi duda es que si ingreso un numero menor a 16 digitos los ultimos digitos quedaran en 0 y no se como ubicarme en el penultimo digito.

ej: 1234567891234
     1  2  3  4  5  6  7  8  9  1  2  3  4  0  0  0
     2  2  6  4 10 6 14 8 18  1  4  3  8  0  0  0
en este caso empieza a multiplicar desde el ultimo termino, como hago para que omita los primeros 0?


Código:
#include<stdio.h>
int main () {
char digit[16];
int i, j;
for(i=0; i<=15; i++){
digit[i]=0;
}
printf("Ingrese el numero de tarjeta: ");
scanf("%s", digit);

for(i=0; i<=15; i++){
                 printf("%c\n", digit[i]);
}
return 0;
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines